【RHEL】RHEL 7.6逻辑卷管理器LVM介绍
目录
1 LVM逻辑卷管理器
1.1 LVM介绍
逻辑卷管理会根据物理存储生成提取层,以便创建逻辑存储卷,这样比直接使用物理存储在很多方面提供了更大灵活性,使用逻辑卷时不会受物理磁盘大小的限制。另外,软件无法看到硬件存储配置,因此可在不停应用程序或卸载文件系统的情况下,重新定义大小并进行移动,这样可降低成本。
1.2 使用逻辑卷的优势
使用逻辑卷比直接使用物理存储时具有以下优势;
- 灵活的容量
当使用逻辑卷时,可在多个磁盘见扩展文件系统,因为可以将磁盘和分区集合成一个逻辑 卷;
- 可重新设定大小的存储池
可以使用简单软件命令增加或减少逻辑卷大小,而无需对所在磁盘设备重新格式化或重新分区;
- 在线数据重新定位
要部署更新、更快或者更有弹性的存储子系统,以便可以在系统活跃时移动数据。在磁盘处于使用状态时重新分配磁盘,例如,可以在删除热插拔磁盘前将其清空;
- 方便的设备命名
可使用用户自定义及自定义命名组管理逻辑存储卷;
- 磁盘条带化
可创建一个可在两个或更多磁盘间条状分布数据的逻辑卷,这可大幅度提高吞吐量;
- 镜像卷
逻辑卷提供了方便配置数据镜像的方法;
- 卷快照
可使用逻辑卷提取设备快照,这样可在持续备份或在不影响真实数据的情况下测试修改效果。
2 LVM组件
2.1 LVM组成
下图展示了一个简单LVM的组成:
2.2 物理卷
LVM逻辑卷的底层物理存储单元是一个块设备,比如一个分区或整个磁盘。要在LVM逻辑卷中使用该设备,则必须将该设备初始化为物理卷(PV)。将块设备初始化为物理卷会在该设备的起始扇区附近放置一个标签,默认情况下,LVM标签是放在第二个512字节扇区,可将标签放在最开始的四个扇区之一来覆盖默认设置。
2.3 卷组
物理卷合并为卷组(VG)。这样就创建了磁盘空间池,并可使用它分配逻辑卷。
在卷组中,可用来分配的磁盘空间被分为固定大小的单元,称之为扩展,扩展时可进行分配的最小空间单元,在物理卷中,扩展指物理扩展。
逻辑卷会被分配成与物理卷扩展相同大小的逻辑扩展,因此卷组中逻辑卷的扩展大小都是一样的,卷组将逻辑扩展与物理扩展匹配。
2.4 逻辑卷
逻辑卷是从卷组中进行分配。
3 LVM管理
3.1 物理卷管理
3.1.1 创建物理卷
1)初始化物理卷
使用pvcreate命令初始化要作为物理卷使用的块设备,初始化时模拟格式化文件系统。
[root@strong ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
2)扫描块设备
可使用lvmdiskscan命令扫描要作为物理卷使用的块设备。
[root@strong ~]# lvmdiskscan
/dev/rhel/root [ <45.12 GiB]
/dev/sda1 [ 1.00 GiB]
/dev/rhel/swap [ <3.88 GiB]
/dev/sda2 [ <49.00 GiB] LVM physical volume
/dev/sdb [ 5.00 GiB] LVM physical volume
/dev/sdc [ 5.00 GiB] LVM physical volume
/dev/sdd [ 5.00 GiB] LVM physical volume
/dev/sde [ 5.00 GiB]
3 disks
1 partition
3 LVM physical volume whole disks
1 LVM physical volume
3.1.2 显示物理卷
显示物理卷属性的命令有以下几种,分别为pvs、pvdisplay和pvscan。其中,
pvs命令以可配置的格式提供物理卷信息,每行显示一个物理卷;
pvs命令提供大量格式控制,供脚本使用;
pvdisplay命令为每个物理卷提供详细的多行输出结果,它以固定格式显示物理属性(大小、扩展、卷组等)。
1)pvdisplay展示
[root@strong ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name rhel
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12543
Free PE 1
Allocated PE 12542
PV UUID Zumenl-KAXC-yxBQ-YzbH-ojyk-ONyX-BgO1ge
"/dev/sdc" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID BlL9F8-rrNM-2iTr-ZzGM-IhPp-lCHS-4XW9TT
"/dev/sdb" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID DGgDgZ-vih2-gzOz-nvY7-RBeQ-IV7C-l1yPx0
"/dev/sdd" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID pH4HSr-uzbK-Abva-rMGQ-SefO-K6jt-tj8wn9
2)pvscan展示
[root@strong ~]# pvscan
PV /dev/sda2 VG rhel lvm2 [<49.00 GiB / 4.00 MiB free]
PV /dev/sdc lvm2 [5.00 GiB]
PV /dev/sdb lvm2 [5.00 GiB]
PV /dev/sdd lvm2 [5.00 GiB]
Total: 4 [<64.00 GiB] / in use: 1 [<49.00 GiB] / in no VG: 3 [15.00 GiB]
3)pvs展示
[root@strong ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <49.00g 4.00m
/dev/sdb lvm2 --- 5.00g 5.00g
/dev/sdc lvm2 --- 5.00g 5.00g
/dev/sdd lvm2 --- 5.00g 5.00g
3.1.3 删除物理卷
可使用pvremove命令删除物理卷。
[root@strong ~]# pvremove /dev/sdd
Labels on physical volume "/dev/sdd" successfully wiped.
3.2 卷组管理
3.2.1 创建卷组
可使用vgcreate命令为一个或多个物理卷创建卷组,vgcreate命令根据名称新建卷组,并至少在其中条件一个物理卷。
[root@strong ~]# vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
使用物理卷创建卷组时,默认将磁盘空间分成大小为4MB的扩展,这个扩展是逻辑卷增大或减小的最小的量,大的扩展数目不会影响逻辑卷的I/O性能。LVM卷组及底层逻辑卷包含在/dev目录的特殊文件目录树中,/dev/vg/lv。
3.2.2 向卷组添加物理卷
使用vgextend命令在现有卷组中添加额外的物理卷,该命令通过添加一个或多个可用物理卷增大卷组容量。
[root@strong ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended
3.2.3 显示卷组
显示卷组属性的命令有vg和vgdisplay,其中,
vgscan命令扫描卷组的所有磁盘,并重新构建LVM缓存文件,同时显示卷组;
vgs命令使用可配置格式提供卷组信息,每行表示一个卷组;
vgdisplay命令采用固定格式显示卷组属性(比如大小、扩展、物理卷数等等)。
1)vgdisplay展示
[root@strong ~]# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size <14.99 GiB
PE Size 4.00 MiB
Total PE 3837
Alloc PE / Size 0 / 0
Free PE / Size 3837 / <14.99 GiB
VG UUID bEx3Gq-6k2Y-24nZ-S6vb-cB0l-0d1G-cUxGzC
2)vgs展示
[root@strong ~]# vgs vg1
VG #PV #LV #SN Attr VSize VFree
vg1 3 0 0 wz--n- <14.99g <14.99g
3.2.4 从卷组删除物理卷
使用vgreduce命令从卷组删除未使用的物理卷,该命令通过删除一个或多个空物理卷来缩小卷组容量,这样可释放物理卷,或者将其从系统删除。
从卷组删除物理卷前,可使用pvdisplay可确定任何逻辑卷都没有使用该物理卷。
[root@strong ~]# pvdisplay /dev/sdd
--- Physical volume ---
PV Name /dev/sdd
VG Name vg1
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID izAfP4-cnRD-s6H0-SBZL-jDLE-yE3Y-zTHsF8
如果该物理卷被使用,则必须使用pvmove命令将该数据迁移到另一个物理卷中,然后使用vgreduce命令删除该物理卷。
[root@strong ~]# vgreduce vg1 /dev/sdd
Removed "/dev/sdd" from volume group "vg1"
3.2.5 删除卷组
使用vgremove命令删除不包含逻辑卷的卷组;
[root@strong ~]# vgremove vg1
Volume group "vg1" successfully removed
3.2.6 分割卷组
使用vgsplit命令拆分卷组的物理卷,并创建新卷组;
[root@strong ~]# vgsplit vg1 vg001 /dev/sdd
New volume group "vg001" successfully split from "vg1"
[root@strong ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- <49.00g 4.00m
vg001 1 0 0 wz--n- <5.00g <5.00g
vg1 2 0 0 wz--n- 9.99g 9.99g
3.2.7 合并卷组
使用vgmerge命令可以实现卷组的合并。
[root@strong ~]# vgmerge -v vg1 vg001
Checking for volume group "vg001"
Checking for volume group "vg1"
Archiving volume group "vg001" metadata (seqno 2).
Archiving volume group "vg1" metadata (seqno 2).
Writing out updated volume group
Creating volume group backup "/etc/lvm/backup/vg1" (seqno 3).
Volume group "vg001" successfully merged into "vg1"
[root@strong ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- <49.00g 4.00m
vg1 3 0 0 wz--n- <14.99g <14.99g
3.2.8 重命名卷组
使用vgrename命令可对卷组重命名。
[root@strong ~]# vgrename vg1 vg1_new
Volume group "vg1" successfully renamed to "vg1_new"
3.3 逻辑卷管理
3.3.1 创建逻辑卷
使用lvcreate命令创建逻辑卷,如果没有指定名称,则默认使用lv0l#,其中#是逻辑卷内部编号。创建逻辑卷后,则会从组成卷组的物理卷中的剩余扩展中分出逻辑卷。
1)在卷组vg1中创建大小为1G的逻辑卷
[root@strong ~]# lvcreate -L 1G vg1
Logical volume "lvol0" created.
2)在卷组vg1中创建大小为100M,名称为lvdate的逻辑卷
[root@strong ~]# lvcreate -L 100M -n lvdata vg1
Logical volume "lvdata" created.
3)在卷组vg1中创建大小为总空间10%,名称为lvfra的逻辑卷
[root@strong ~]# lvcreate -l 10%VG -n lvfra vg1
Logical volume "lvfra" created.
3.3.2 减小逻辑卷大小
使用lvreduce命令可减小逻辑卷大小。
[root@strong ~]# lvreduce -L 512M vg1/lvol0
WARNING: Reducing active logical volume to 512.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lvol0? [y/n]: y
Size of logical volume vg1/lvol0 changed from 1.00 GiB (256 extents) to 512.00 MiB (128 extents).
Logical volume vg1/lvol0 successfully resized.
3.3.3 重命名逻辑卷
使用lvrename命令重命名逻辑卷。
[root@strong ~]# lvrename vg1 lvol0 lvtest
Renamed "lvol0" to "lvtest" in volume group "vg1"
3.3.4 删除逻辑卷
使用lvremove命令删除不活跃的逻辑卷。
[root@strong ~]# lvremove /dev/vg1/lvtest
Do you really want to remove active logical volume vg1/lvtest? [y/n]: y
Logical volume "lvtest" successfully removed
3.3.5 显示逻辑卷
可使用如下命令来查看逻辑卷信息,分别为lvs、lvdisplay和lvscan。
1)lvs展示
[root@strong ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <45.12g
swap rhel -wi-ao---- <3.88g
lvdata vg1 -wi-a----- 100.00m
lvfra vg1 -wi-a----- 1020.00m
2)lvdisplay展示
[root@strong ~]# lvdisplay vg1
--- Logical volume ---
LV Path /dev/vg1/lvdata
LV Name lvdata
VG Name vg1
LV UUID KpFp43-Zoka-c9rN-1hZ5-jE3N-7lBB-031aC2
LV Write Access read/write
LV Creation host, time strong, 2019-09-21 11:20:32 +0800
LV Status available
# open 0
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/vg1/lvfra
LV Name lvfra
VG Name vg1
LV UUID YAhtL8-HOvb-FHrs-qBL7-jhd1-QMfB-JjIMq5
LV Write Access read/write
LV Creation host, time strong, 2019-09-21 11:24:34 +0800
LV Status available
# open 0
LV Size 1020.00 MiB
Current LE 255
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
3)lvscan展示
[root@strong ~]# lvscan
ACTIVE '/dev/vg1/lvdata' [100.00 MiB] inherit
ACTIVE '/dev/vg1/lvfra' [1020.00 MiB] inherit
ACTIVE '/dev/rhel/swap' [<3.88 GiB] inherit
ACTIVE '/dev/rhel/root' [<45.12 GiB] inherit
3.3.5 增大逻辑卷
使用lvextend命令增加逻辑卷大小。
1)将逻辑卷lvdata大小增大1G
[root@strong ~]# lvextend -L+1G /dev/vg1/lvdata
Size of logical volume vg1/lvdata changed from 100.00 MiB (25 extents) to <1.10 GiB (281 extents).
Logical volume vg1/lvdata successfully resized.
2)将逻辑卷lvdata大小增大到2G
[root@strong ~]# lvextend -L 2G /dev/vg1/lvdata
Size of logical volume vg1/lvdata changed from <1.10 GiB (281 extents) to 2.00 GiB (512 extents).
Logical volume vg1/lvdata successfully resized.
4 LVM配置示例
4.1 创建物理卷
[root@strong ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
4.2 创建卷组
[root@strong ~]# vgcreate vg1 /dev/sdb /dev/sdc /dev/sdd
Volume group "vg1" successfully created
[root@strong ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- <49.00g 4.00m
vg1 3 0 0 wz--n- <14.99g <14.99g
4.3 创建逻辑卷
[root@strong ~]# lvcreate -L 3G -n lvdata vg1
Logical volume "lvdata" created.
[root@strong ~]# lvs vg1
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvdata vg1 -wi-a----- 3.00g
4.4 创建文件系统
[root@strong ~]# mkfs.ext4 /dev/vg1/lvdata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
4.5 挂载并显示文件系统磁盘空间使用
[root@strong ~]# mkdir /data
[root@strong ~]# mount /dev/vg1/lvdata /data/
[root@strong ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 46G 4.2G 41G 10% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 9.2M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 177M 838M 18% /boot
tmpfs 379M 12K 379M 1% /run/user/42
tmpfs 379M 0 379M 0% /run/user/0
/dev/mapper/vg1-lvdata 2.9G 9.0M 2.8G 1% /data
4.6 从逻辑卷删除磁盘
4.6.1 查看逻辑卷在卷组的分配
[root@strong ~]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda2 rhel lvm2 a-- <49.00g 4.00m 48.99g
/dev/sdb vg1 lvm2 a-- <5.00g <2.00g 3.00g
/dev/sdc vg1 lvm2 a-- <5.00g <5.00g 0
/dev/sdd vg2 lvm2 a-- <5.00g <3.00g 2.00g
4.6.2 移动扩展并查看
[root@strong ~]# pvmove /dev/sdb /dev/sdc
/dev/sdb: Moved: 0.13%
/dev/sdb: Moved: 100.00%
[root@strong ~]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda2 rhel lvm2 a-- <49.00g 4.00m 48.99g
/dev/sdb vg1 lvm2 a-- <5.00g <5.00g 0
/dev/sdc vg1 lvm2 a-- <5.00g <2.00g 3.00g
/dev/sdd vg2 lvm2 a-- <5.00g <3.00g 2.00g
4.6.3 删除磁盘
[root@strong ~]# vgreduce vg1 /dev/sdb
Removed "/dev/sdb" from volume group "vg1"
[root@strong ~]# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda2 rhel lvm2 a-- <49.00g 4.00m 48.99g
/dev/sdb lvm2 --- 5.00g 5.00g 0
/dev/sdc vg1 lvm2 a-- <5.00g <2.00g 3.00g
/dev/sdd vg2 lvm2 a-- <5.00g <3.00g 2.00g
现在可以物理删除磁盘或将其分给其它用户。
参考:Red Hat Enterprise Linux 7.1官方文档