lvm逻辑卷
为什么学LVM
学习LVM(Logical Volume Manager,逻辑卷管理)主要有以下几个重要原因:
一、灵活的存储管理
- 动态调整分区大小
- 在传统的分区管理方式中,一旦分区创建并格式化后,其大小很难改变。例如,如果一个文件系统所在的分区空间不足,在传统分区下可能需要重新分区、备份数据、格式化新分区,然后再恢复数据等复杂的操作。而LVM允许在不中断系统运行和不丢失数据的情况下,动态地调整逻辑卷(Logical Volume,LV)的大小。
- 比如,对于一个运行中的数据库服务器,随着业务的增长,数据库存储的数据量不断增加,导致最初分配的存储分区空间紧张。通过LVM,可以简单地增加逻辑卷的大小,就像给一个容器增加容量一样,而无需重新安装操作系统或者重新配置应用程序。
- 方便的存储分配
- LVM可以根据实际需求灵活地分配存储空间。它能够将物理存储设备(如硬盘、RAID阵列等)的空间整合为一个存储池(Volume Group,VG),然后从这个存储池中划分出不同大小的逻辑卷。
- 例如,在一个企业级的存储环境中,有多个部门需要存储资源。可以先将所有的物理磁盘组成一个存储池,然后根据各个部门的需求,如市场部可能需要200GB的存储空间,研发部需要500GB的存储空间,从存储池中为他们分别创建大小合适的逻辑卷,而且后续还可以根据部门业务的变化灵活调整这些逻辑卷的大小。
二、提高存储设备的利用率
- 磁盘空间整合
- LVM可以将多个物理磁盘组合在一起,形成一个更大的存储资源。例如,在服务器中有多个较小容量的硬盘,通过LVM可以将它们的空间整合起来,就好像它们是一个大的磁盘一样。这样可以避免因为单个磁盘容量不足而无法充分利用存储资源的情况。
- 假设有3个100GB的硬盘,在传统分区方式下,每个硬盘可能会有部分空间闲置。而使用LVM,可以将这300GB的空间整合为一个存储池,然后根据实际需要分配逻辑卷,从而提高磁盘空间的整体利用率。
- 高效的存储迁移
- 当需要更换或升级存储设备时,LVM提供了便捷的存储迁移功能。可以将逻辑卷从一个物理设备迁移到另一个物理设备,而不需要重新配置应用程序或操作系统。
- 例如,服务器原来使用的是普通的机械硬盘,为了提高存储性能,要更换为固态硬盘。利用LVM的迁移功能,可以将存储在机械硬盘上的逻辑卷的数据平滑地迁移到固态硬盘上,同时保持系统的正常运行。
三、数据保护和容错能力
- 快照功能
- LVM支持创建快照(Snapshot)。快照是逻辑卷在某个特定时间点的只读副本。这在数据备份、测试环境搭建等场景中非常有用。
- 例如,在对重要数据进行更新之前,可以先创建一个快照。如果更新过程中出现问题,如数据损坏或者系统故障,可以通过快照快速恢复到更新之前的状态,就像给数据拍了一张“照片”,可以随时回到拍照时的状态。
- 镜像功能(可选)
- 部分LVM实现支持镜像(Mirroring)功能。通过镜像,可以将数据同时存储在两个或多个物理设备上,当一个设备出现故障时,数据仍然可以从其他镜像设备中读取,提高了数据的可靠性和容错能力。
- 比如在一个对数据安全性要求很高的金融系统中,使用LVM镜像功能将存储交易数据的逻辑卷同时存储在两块不同的硬盘上。如果一块硬盘出现故障,系统仍然可以从另一块硬盘上获取完整的数据,保证业务的正常运行。
什么是LVM
LVM(Logical Volume Manager)即逻辑卷管理器,是一种用于Linux系统中的磁盘管理技术。
一、基本概念
- 物理卷(Physical Volume,PV)
- 物理卷是LVM操作的基本存储设备单元,可以是整个硬盘、硬盘分区或者是RAID阵列。它是LVM能够识别并进行管理的物理存储介质。例如,一块容量为1TB的硬盘,在经过初始化后可以作为一个物理卷加入到LVM系统中。
- 物理卷包含一个特殊的区域,称为物理卷头(Physical Volume Header),这个区域存储着物理卷的元数据,如物理卷的大小、唯一标识符、所属的卷组名称等信息。这些元数据对于LVM管理物理卷以及后续的操作至关重要。
- 卷组(Volume Group,VG)
- 卷组是由一个或多个物理卷组成的存储池。它就像是一个大的仓库,把多个物理存储资源整合在一起。例如,可以将服务器上的两块500GB的硬盘对应的物理卷组合成一个卷组,这样这个卷组的总容量就是1TB。
- 卷组也有自己的元数据,用于记录卷组的大小、包含的物理卷列表、逻辑卷列表等信息。这些元数据存储在物理卷的特定区域中,并且在卷组中的物理卷之间进行备份,以防止某个物理卷损坏导致元数据丢失。
- 逻辑卷(Logical Volume,LV)
- 逻辑卷是从卷组中划分出来的,用于创建文件系统的存储单元。它是用户真正可以使用的存储部分,就像是从仓库(卷组)中划分出的一个个小隔间。例如,可以从一个1TB的卷组中划分出一个300GB的逻辑卷,用于安装操作系统,再划分出一个500GB的逻辑卷用于存储用户数据。
- 逻辑卷在创建后可以像普通的分区一样进行格式化(如格式化为ext4、xfs等文件系统),然后挂载到Linux系统的目录树中,供用户和应用程序使用。
二、工作原理
- 初始化物理卷
- 首先,要将物理存储设备(如硬盘或分区)初始化为物理卷。这一过程会在物理设备上写入LVM的元数据结构,使其能够被LVM系统识别。通过命令(如
pvcreate
)可以完成物理卷的创建操作。
- 首先,要将物理存储设备(如硬盘或分区)初始化为物理卷。这一过程会在物理设备上写入LVM的元数据结构,使其能够被LVM系统识别。通过命令(如
- 创建卷组
- 可以使用
vgcreate
命令将一个或多个物理卷组合成卷组。在创建卷组时,可以指定卷组的名称和要包含的物理卷。例如,vgcreate myvg /dev/sda1 /dev/sdb1
会将/dev/sda1
和/dev/sdb1
这两个物理卷组合成名为myvg
的卷组。
- 可以使用
- 划分逻辑卷
- 从卷组中划分逻辑卷可以使用
lvcreate
命令。例如,lvcreate -L 50G -n mylv myvg
会从myvg
卷组中创建一个名为mylv
、大小为50GB的逻辑卷。然后这个逻辑卷就可以被格式化并挂载到文件系统中使用。
- 从卷组中划分逻辑卷可以使用
- 动态调整
- LVM的一个重要优势是可以动态调整逻辑卷的大小。如果逻辑卷的空间不足,可以使用
lvextend
命令来增加其大小;如果空间过大,可以使用lvreduce
命令来减小其大小(不过减小操作有一定风险,可能会导致数据丢失,需要谨慎操作)。同时,也可以动态地向卷组中添加或移除物理卷,从而改变卷组的容量,以适应存储需求的变化。
- LVM的一个重要优势是可以动态调整逻辑卷的大小。如果逻辑卷的空间不足,可以使用
怎么学LVM
以下是学习LVM(逻辑卷管理)的有效方法:
一、理论学习基础
- 阅读官方文档
- Linux操作系统(如CentOS、Ubuntu等)的官方文档是学习LVM的绝佳资源。这些文档详细介绍了LVM的概念、架构和各种操作命令。以CentOS为例,其官方文档会对LVM相关的命令(如
pvcreate
、vgcreate
、lvcreate
等)进行详细的语法解释和使用场景说明。 - 你可以通过访问CentOS官方网站(https://www.centos.org/),在文档部分查找LVM相关内容,了解LVM在该操作系统环境下的安装要求、初始化步骤以及如何与文件系统配合使用等内容。
- Linux操作系统(如CentOS、Ubuntu等)的官方文档是学习LVM的绝佳资源。这些文档详细介绍了LVM的概念、架构和各种操作命令。以CentOS为例,其官方文档会对LVM相关的命令(如
- 学习相关书籍章节
- 许多Linux系统管理相关的书籍都有专门介绍LVM的章节。例如《Linux系统管理技术手册》这本书,它会深入讲解LVM的原理,包括物理卷、卷组和逻辑卷之间的关系,以及在企业级存储环境中的应用。
- 书中可能会用一些实际的案例来解释LVM的优势,如在数据中心存储资源整合过程中,如何利用LVM提高存储利用率和灵活性。通过阅读这些章节,可以构建扎实的理论基础。
二、实践操作巩固
- 在虚拟机环境中实践
- 利用虚拟机软件(如VirtualBox或VMware Workstation)创建Linux虚拟机是安全且方便的实践方式。你可以在虚拟机中安装Linux操作系统(如Ubuntu Server),然后进行LVM的实践操作。
- 例如,首先通过虚拟机的磁盘管理功能为虚拟机添加几块虚拟硬盘。然后在Linux系统中,使用
fdisk
或parted
命令对这些硬盘进行分区(如果需要),再将分区初始化为物理卷(使用pvcreate
命令),接着创建卷组和逻辑卷,最后对逻辑卷进行格式化(如使用mkfs.ext4
命令将逻辑卷格式化为ext4文件系统)并挂载到系统目录下(使用mount
命令)。 - 在实践过程中,可以故意制造一些存储需求变化的场景,如模拟逻辑卷空间不足的情况,然后使用
lvextend
命令扩展逻辑卷大小,这样可以更好地理解LVM的动态调整功能。
- 在物理设备上谨慎实践(可选)
- 如果有条件且你对操作有足够的信心,也可以在物理设备(如旧的服务器硬盘)上进行LVM实践。但要注意备份重要数据,因为操作不当可能会导致数据丢失。
- 例如,在一台测试服务器上,对其硬盘进行LVM的配置。可以将服务器上的多个硬盘组成一个卷组,然后划分出不同用途的逻辑卷,如一个用于存储日志文件,一个用于安装数据库等。在这个过程中,通过观察系统日志(如
dmesg
命令查看内核信息)来了解LVM操作过程中的系统反馈,加深对LVM的理解。
三、深入理解与拓展
- 学习高级特性
- 掌握了LVM的基本操作后,可以深入学习其高级特性,如快照(Snapshot)和镜像(Mirror)功能。快照可以在不中断业务的情况下对逻辑卷进行备份,镜像则可以提高数据的冗余性和可靠性。
- 例如,学习如何创建和管理快照,了解快照的原理是通过记录逻辑卷在某个时间点的元数据和数据块变化来实现备份功能。对于镜像功能,要学习如何配置镜像模式(如RAID - 1模式),以及在镜像设备出现故障时如何进行恢复操作。
- 对比其他存储管理方式
- 将LVM与传统的磁盘分区方式以及其他存储管理技术(如软件定义存储)进行对比。了解它们的优缺点和适用场景,这样可以更好地理解LVM在存储管理领域中的地位和作用。
- 例如,传统分区方式在分区大小固定、灵活性差方面与LVM形成鲜明对比。而与软件定义存储相比,LVM在简单性和对本地存储资源管理方面有自己的优势,通过这种对比可以更全面地认识LVM。
lvm
前面讲解了磁盘阵列raid,可以提高硬盘的读写速度,以及保证数据安全性。
但是在硬盘分区好之后,硬盘的容量就已经确定好了,比如4块硬盘的raid 10,如果存储的数据继续增长,但是磁盘容量却不够了,再想调整磁盘空间就很麻烦了。
- 不同的分区相对独立,没有关系,可能空间利用率很低
- 某一个分区满了的时候,无法扩充,只能重新分区、设置容量、 新建文件系统,很是麻烦
试想,企业里的生产服务器,一开始没有规划好磁盘容量,随着用户增长,磁盘可能会逐渐填满
这时候你只能添加新硬盘,新分区
但是旧的数据还在旧的磁盘分区上,你就只能停止业务进行数据迁移了。
但是如果你用了lvm,你可以将多个物理分区、抽象为一个逻辑卷组,并且这个逻辑卷组是可以动态扩容、缩容的。
当逻辑卷组容量不够了,只需要买新硬盘,通过命令再添加到这个指定的逻辑卷组中,可以在不停机的情况下,立即实现扩容,且被linux识别,那可是太巴适了。
这个道理和你在windows中,添加新硬盘也一样的。
什么是LVM
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以事项一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可能就会带来很大的麻烦。
逻辑卷(LVM):它是Linux环境下对磁盘分区进行管理的一种机制,它是建立在物理存储设备之上的一个抽象层,优点在于灵活管理。
基于分区创建lvm
- 硬盘的
多个分区
由lvm统一为卷组
,可以弹性的调整卷组的大小,充分利用硬盘容量 - 文件系统创建在逻辑卷上,逻辑卷可以根据需求改变大小(卷组总容量范围内)
基于硬盘创建lvm
- 多块硬盘做成逻辑卷,将整个逻辑卷同意管理,可以动态对分区进行扩缩空间容量
图解lvm工作流程
LVM和RAID图解
Lvm
raid
理解LVM原理名词
- PP(Physical Parttion):物理分区,LVM建立在物理分区之上
- PV(Physical Volume):物理卷,处于LVM最底层,一般一个PV对应一个PP
- PE(physical Extends):物理区域,PV中可以用于分配的最小存储单元,同一个VG中所有的PV的PE大小相同,如1M、2M
- VG(Volume Group):卷组,建立在PV之上,可以划分多个PV
- LE(Logical Extends):逻辑扩展单元,组成LV的基本单元,一个LE对应一个PE
- LV(Logical Volume):逻辑卷,建立在VG之上,是一个可以动态改变大小的分区
lvm重点概念
- 物理卷(Physical Volume,PV)
物理卷是底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等。
- 卷组(Volume Group, VG)
卷组建立在物理卷之上,它由一个或多个物理卷组成。即把物理卷整合起来提供容量分配。 一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
- 逻辑卷(Logical Volume, LV)
逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。它是最终用户使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。
- 物理区域 PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024个block
说明:
- 硬盘读取数据最小单位1个扇区512字节
- 操作读取数据最小单位1个数据块=8*512字节=4096字节=4KB
- lvm寻址最小单位1个PE=4MB
lvm扩容原理
LVM是通过交换PE
的方式,达到弹性变更文件系统大小的
- 剔除原本LV中的PE,就可以减少LV的容量
- 把其他PE添加到LV,就可以扩容LV容量
- 一般默认PE大小是4M,LVM最多有65534个PE,所以LVM最大的VG是256G单位
- PE是LVM最小的存存储单位,类似文件系统的block单位,因此PE大小影响VG容量
- LV如同/dev/sd[a-z]的分区概念。
LVM优点
- 文件系统可以跨多个磁盘,大小不会受到磁盘限制
- 可在系统运行的情况下,动态扩展文件系统大小
- 可以增加新的磁盘到LVM的存储池中
lvm工作流程
- 物理磁盘
- 命令创建pv
- 创建卷组vg
- 创建逻辑卷lv
- 格式化lv文件系统
- 挂载使用
- 物理分区阶段:将物理磁盘
fdisk
格式化修改System ID为LVM标记(8e) - PV阶段:通过
pvcreate
、pvdisplay
将Linux分区处理为物理卷PV - VG阶段:接下来通过
vgcreate
、vgdisplay
将创建好的物理卷PV处理为卷组VG - LV阶段:通过
lvcreate
将卷组分成若干个逻辑卷LV - 开始使用:通过
mkfs
对LV格式化,最后挂载LV使用
lvm常用命令汇总
操作 | pv命令 | vg命令 | lv命令 |
---|---|---|---|
列出display | pvs | vgs | lvs |
扩容extend | vgextend | lvextend | |
缩容reduct | vgreduce | Lvreduce | |
删除remove | pvremove | vgremove | lvremove |
改变容量resize | vgresize |
物理卷(pv)管理
命令 | 功能 |
---|---|
pvcreate | 创建物理卷 |
pvscan | 查看物理卷信息 |
pvdisplay | 查看各个物理卷的详细参数 |
pvremove | 删除物理卷 |
pvcreate
# 将普通的分区加上PV属性
# 例如:将分区/dev/sda6创建为物理卷
pvcreate /dev/sda6
实践
[yuchao-linux-242 root ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
[yuchao-linux-242 root ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
给新硬盘sdb创建为物理卷,可以用于创建卷组
[yuchao-linux-242 root ~]#pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 20.00g 20.00g
pvremove
# 删除分区的PV属性
# 例如:删除分区/dev/sda6的物理卷属性
pvremove /dev/sda6
pvscan、pvdisplay
- 都是用来查看PV的信息
pvdisplay
更为详细
[root@local-pyyu ~]# pvscan |grep sd[b-c]
PV /dev/sdb VG storage lvm2 [<5.00 GiB / <5.00 GiB free]
PV /dev/sdc VG storage lvm2 [<5.00 GiB / <5.00 GiB free]
可以看到sdb是一个新的物理卷
[yuchao-linux-242 root ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID S2y7zo-9SQ9-prrr-ZOtT-NdW8-vVLo-jFwngl
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID sD8wJO-5Pv7-Ksf4-wHgp-oDMJ-gUNK-eviPnd
卷组(VG)管理相关命令
命令 | 功能 |
---|---|
vgcreate | 创建卷组 |
vgscan | 查看卷组信息 |
vgdisplay | 查看卷组的详细参数 |
vgreduce | 缩小卷组,把物理卷从卷组中删除 |
vgextend | 扩展卷组,把某个物理卷添加到卷组中 |
vgremove | 删除卷组 |
实践
[yuchao-linux-242 root ~]#vgcreate vg0 /dev/sdb
Volume group "vg0" successfully created
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg0 1 0 0 wz--n- <20.00g <20.00g
逻辑卷(LV)管理相关命令
lvcreate
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE个数)
-n 后面跟逻辑卷名
-s 创建快照
命令 | 功能 |
---|---|
lvcreate | 创建逻辑卷 |
lvscan | 查看逻辑卷信息 |
lvdisplay | 查看逻辑卷的具体参数 |
lvextend | 增大逻辑卷大小 |
lvreduce | 减小逻辑卷大小 |
lvremove | 删除逻辑卷 |
实践
查看当前逻辑卷信息
[yuchao-linux-242 root ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
[yuchao-linux-242 root ~]#
创建逻辑卷,可以直接指定大小,比如10G
也可以设置使用卷组的百分比容量
40%VG也就是,20G的4成,差不多8G大小
简短信息
[yuchao-linux-242 root ~]#lvcreate -l 40%VG -n yc-lv1 vg0
Logical volume "yc-lv1" created.
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
yc-lv1 vg0 -wi-a----- <8.00g
完整信息
[yuchao-linux-242 root ~]#lvscan
ACTIVE '/dev/vg0/yc-lv1' [<8.00 GiB] inherit
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
清理lvm环境
比如刚才分别创建了
pv
vg
lv
依次删除即可
删除lv
[yuchao-linux-242 root ~]#lvremove /dev/vg0/yc-lv1
Do you really want to remove active logical volume vg0/yc-lv1? [y/n]: y
Logical volume "yc-lv1" successfully removed
删除卷组
[yuchao-linux-242 root ~]#vgremove vg0
Volume group "vg0" successfully removed
删除pv
[yuchao-linux-242 root ~]#pvremove /dev/sdb
Labels on physical volume "/dev/sdb" successfully wiped.
lvm实战
要求创建一个2.5G的逻辑卷。
思路:
1. 物理的设备
2. 将物理设备做成物理卷
3. 创建卷组并将物理卷加入其中
4. 创建逻辑卷
5. 格式化逻辑卷
6. 挂载使用
步骤1
准备好物理设备,sdb硬盘
[root@linux ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
└─sdb7 8:23 0 2G 0 part
1.得先下载lvm软件包,提供的命令
[yuchao-linux-242 root ~]#yum install lvm2 -y
# ubuntu
root@yc-ubuntu:~# apt install lvm2 -y
2.创建物理卷
[root@linux ~]# pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
[root@linux ~]#
查看物理卷
[root@linux ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
查看详细信息
[root@linux ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID E8ua4C-eAWP-MpEz-RERX-gXlj-4byL-bOUzxV
3.创建卷组,加入物理卷PV
[root@linux ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
Volume group "vg01" successfully created
查看卷组信息
[root@linux ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 0 0 wz--n- 3.99g 3.99g
[root@linux ~]# vgdisplay vg01
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 3.99 GiB
PE Size 4.00 MiB
Total PE 1022
Alloc PE / Size 0 / 0
Free PE / Size 1022 / 3.99 GiB
VG UUID MbHE2G-swQJ-K3eS-f6S2-vHBH-B7oP-wdMxCy
4.创建逻辑卷
-n:指定逻辑卷的名字
-L:指定逻辑卷的大小
-l:指定逻辑卷的大小
举例:
-l 100 100个PE,每个PE大小默认4M,故逻辑卷大小为400M
-l 50%free 卷组剩余空间的50%
[root@linux ~]# lvcreate -n lv01 -L 2.5G vg01
Logical volume "lv01" created.
查看逻辑卷信息
[root@linux ~]#
[root@linux ~]# lvdisplay /dev/vg01/lv01
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID ulay1d-bdza-xV3e-YXHa-ktyo-dZQW-lkeCgP
LV Write Access read/write
LV Creation host, time linux , 2022-03-04 03:22:16 +0800
LV Status available
# open 0
LV Size 2.50 GiB
Current LE 640
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
可以在系统中的两个地方,找到lv分区信息
[root@linux ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 Mar 4 03:22 /dev/mapper/vg01-lv01 -> ../dm-2
[root@linux ~]# ll /dev/vg01/lv01
lrwxrwxrwx 1 root root 7 Mar 4 03:22 /dev/vg01/lv01 -> ../dm-2
查看卷组还剩余多少空间
[root@linux ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 1 0 wz--n- 3.99g 1.49g
再创建一个200M的逻辑卷,每个LE默认4M,用-l 50 参数指定50个LE,因此是200M
[root@linux ~]# lvcreate -n lv02 -l 50 vg01
Logical volume "lv02" created.
[root@linux ~]#
查看lv02大小
[root@linux ~]# lvs /dev/vg01/lv02
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv02 vg01 -wi-a----- 200.00m
查看剩余vg01大小
[root@linux ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 2 0 wz--n- 3.99g <1.30g
创建卷组剩余空间的50%,逻辑卷lv03
[root@linux ~]# lvcreate -n lv03 -l 50%free vg01
Logical volume "lv03" created.
[root@linux ~]#
查看lv03
[root@linux ~]# lvs /dev/vg01/lv03
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv03 vg01 -wi-a----- 664.00m
查看此时vg剩余
[root@linux ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 3 0 wz--n- 3.99g 664.00m
5.格式化逻辑卷lv01
[root@linux ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=655360, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
6.挂载逻辑卷使用
[root@linux ~]# mount /dev/vg01/lv01 /chaoge-linux/
[root@linux ~]#
[root@linux ~]# df -hT |grep chaoge
/dev/mapper/vg01-lv01 xfs 2.5G 33M 2.5G 2% /chaoge-linux
写入数据
[root@linux ~]#
[root@linux ~]# touch /chaoge-linux/于超老师带你学lvm.log
[root@linux ~]#
[root@linux ~]# ls /chaoge-linux
于超老师带你学lvm.log
取消挂载
[root@linux ~]# umount /chaoge-linux
[root@linux ~]#
[root@linux ~]# df -hT |grep chaoge
[root@linux ~]#
lvm动态扩容
重新挂载上逻辑卷 lv01
[root@linux ~]# mount /dev/vg01/lv01 /chaoge-linux/
[root@linux ~]#
[root@linux ~]# df -hT |grep chaoge
/dev/mapper/vg01-lv01 xfs 2.5G 33M 2.5G 2% /chaoge-linux
任务:你现在觉得这个分区太小了,不够用,如何扩容?
思路:
- 查看该挂载点,对应的逻辑卷是哪一个
/dev/mapper/vg01-lv01
- 查看该逻辑卷所在的卷组,是否还有剩余空间。
- 如果vg01空间不够,就得先扩容卷组,再扩容逻辑卷
- 如果vg01空间足够,直接扩容逻辑卷
1.查看挂载点,属于哪个逻辑卷
[root@linux ~]# df -hT |grep chaoge
/dev/mapper/vg01-lv01 xfs 2.5G 33M 2.5G 2% /chaoge-linux
2.查看逻辑卷大小
[root@linux ~]# lvs /dev/mapper/vg01-lv01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-ao---- 2.50g
3.查看卷组空间
[root@linux ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 2 3 0 wz--n- 3.99g 664.00m
4.卷组空间已经很少了,需要额外添加新硬盘(或者未使用的磁盘分区),先扩容卷组
1)添加新硬盘(新分区)
[root@linux ~]#
[root@linux ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
│ └─vg01-lv01 253:2 0 2.5G 0 lvm /chaoge-linux
├─sdb2 8:18 0 2G 0 part
│ ├─vg01-lv01 253:2 0 2.5G 0 lvm /chaoge-linux
│ ├─vg01-lv02 253:3 0 200M 0 lvm
│ └─vg01-lv03 253:4 0 664M 0 lvm
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
└─sdb7 8:23 0 2G 0 part
2) 先把物理设备,制作为物理卷
[root@linux ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.
[root@linux ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 vg01 lvm2 a-- <2.00g 0
/dev/sdb2 vg01 lvm2 a-- <2.00g 664.00m
/dev/sdb5 lvm2 --- 2.00g 2.00g
3) 添加物理卷到卷组(卷组扩容)
[root@linux ~]# vgextend vg01 /dev/sdb5
Volume group "vg01" successfully extended
[root@linux ~]#
[root@linux ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 vg01 lvm2 a-- <2.00g 0
/dev/sdb2 vg01 lvm2 a-- <2.00g 664.00m
/dev/sdb5 vg01 lvm2 a-- <2.00g <2.00g
注意:
正常情况下,应该先将/dev/sdb5物理设备创建为物理卷再加入到卷组中;如果直接加入卷组,系统会自动帮你将其做成物理卷。
4)查看扩容后的卷组
[root@linux ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg01 3 3 0 wz--n- <5.99g 2.64g
5.扩容逻辑卷,成功从2.5G+2G= 4.5G了
[root@linux ~]# lvextend -L +2G /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 2.50 GiB (640 extents) to 4.50 GiB (1152 extents).
Logical volume vg01/lv01 successfully resized.
6.查看结果
[root@linux ~]# df -h |grep chaoge
/dev/mapper/vg01-lv01 2.5G 33M 2.5G 2% /chaoge-linux
发现还未更新容量
7.使用命令,同步文件系统,只针对xfs系统。
[root@linux ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=655360, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 655360 to 1179648
[root@linux ~]#
[root@linux ~]# df -h |grep chaoge
/dev/mapper/vg01-lv01 4.5G 33M 4.5G 1% /chaoge-linux
xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。
硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。
可以选择用ext4文件系统,支持扩缩容
# ext4更新文件系统命令
resize2fs
# xfs更新
root@yc-ubuntu:~# xfs_growfs /dev/mapper/yuchao--vg01-lv02
fstab文件
/etc/fstab
root@yc-ubuntu:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=4fdb4106-562f-4263-8ed6-9c2aacb97bc6 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda2 during installation
UUID=90EB-9A80 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
/dev/mapper/yuchao--vg01-lv02 /t_lvm_02/ xfs defaults 0 0
# vgs扩容,lv库容
# fstab开机挂载
#
/dev/mapper/yuchao--vg01-lv02
:要挂载的设备,也就是逻辑卷。/t_lvm_01/
:挂载点目录。ext4
:对应的文件系统类型。defaults
:挂载选项,使用默认的挂载选项,包括读写权限、自动挂载等。- 第一个
0
:表示是否需要备份,0
为不备份 。 - 第二个
0
:表示是否需要在启动时使用fsck
进行磁盘检查,0
表示不检查。
删除lvm
当你需要删除逻辑卷,需要提前把数据备份好,然后依次删除
- 逻辑卷
- 卷组
- 物理卷
1.取消挂载
[root@ - ~]# umount /chaoge-linux/
2.删除逻辑卷lv
[root@ - ~]# lvremove /dev/vg01/lv0
lv01 lv02 lv03
[root@ - ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@ - ~]#
3.删除卷组
删除卷组,会优先删除卷组下的逻辑卷,然后再删除卷组。
[root@ - ~]# vgremove vg01
Do you really want to remove volume group "vg01" containing 2 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
Logical volume "lv02" successfully removed
Do you really want to remove active logical volume vg01/lv03? [y/n]: y
Logical volume "lv03" successfully removed
Volume group "vg01" successfully removed
4.删除物理卷
[root@ - ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb5 lvm2 --- 2.00g 2.00g
删除物理卷
[root@ - ~]# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb5
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdb2" successfully wiped.
Labels on physical volume "/dev/sdb5" successfully wiped.
查看lvm相关信息,是否还有残留
[root@ - ~]#
[root@ - ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
[root@ - ~]#
[root@ - ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
[root@ - ~]#
[root@ - ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
[root@ - ~]#