文章目录
概念
- LVM:【 Logical Volume Manager】逻辑卷管理的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。
- LVM优势:逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 , 可以将其卷组的可用空间分配给逻辑卷 , 并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘
- PV:【physical volumes】物理卷,处于LVM最底层,可以是分区、完整磁盘、 RAID 集或 SAN 磁盘物理硬盘或者分区,但是这些设备必须初始化为 LVM 物理卷分区类型 , 才能与 LVM 结合使用
- VG:【volume groups】卷组,建立在PV之上,是存储池 , 由一个或多个物理卷组成
- LV :【logical volumes】逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。在逻辑卷LV之上可以建立文件系统。
- PE:【physical extent】物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
- LE:【logical extent】逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。由于受内核限制的原因,一个lv最多只能包含65536个pe,所以一个pe的大小就决定了逻辑卷的最大容量,4 MB(默认) 的pe决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的pe。
PV管理
1. 创建PV
创建PV的设备必须是 LVM 物理卷分区类型,代码8e
- 物理磁盘或分区的系统类型设为Linux LVM
[root@station ~]# fdisk /dev/vdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M
Partition 1 of type Linux and of size 100 MiB is set
#建立主分区vdb1 100M
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (206848-2097151, default 206848):
Using default value 206848
Last sector, +sectors or +size{K,M,G} (206848-2097151, default 2097151): +100M
Partition 2 of type Linux and of size 100 MiB is set
#建立主分区vdb2 100M
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
#改变主分区vdb1类型为LVM
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
#改变主分区vdb2类型为LVM
Command (m for help): p
...
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 8e Linux LVM
/dev/vdb2 206848 411647 102400 8e Linux LVM
#显示信息
- 物理磁盘或分区初始化为PV
pvcreate命令
pvcreate [option] disk|partition... #可以PV多个设备或分区,用空格隔开即可
-f #强制创建物理卷,不需要用户确认
-u #指定设备的UUID
-y #所有的问题都回答yes
-Z #是否利用前4个扇区
[root@station ~]# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created.
[root@station ~]# pvcreate /dev/vdb2
Physical volume "/dev/vdb2" successfully created.
[root@station ~]# pvcreate /dev/vdb3 /dev/vdb4
Physical volume "/dev/vdb3" successfully created.
Physical volume "/dev/vdb4" successfully created.
#建立pv:vdb1和vdb2,或多个一次建立如pv:vdb3/vdb4
2.显示PV信息
pvs #用于输出格式化的物理卷信息报表,能得到物理卷的概要信息
pvscan [选项] #扫描系统中连接的所有硬盘,列出找到的物理卷列表
-n #仅显示不属于任何卷组的物理卷
-s #短格式输出
-u #显示UUID
pvdispaly [选项] [disk|partition]
#用于显示物理卷的属性,显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID
-s #以短格式输出
-m #显示PE到LE的映射
[root@station ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 lvm2 --- 100.00m 100.00m
/dev/vdb2 lvm2 --- 100.00m 100.00m
[root@station ~]# pvscan
PV /dev/vdb2 lvm2 [100.00 MiB]
PV /dev/vdb1 lvm2 [100.00 MiB]
Total: 3 [9.19 GiB] / in use: 1 [9.00 GiB] / in no VG: 2 [200.00 MiB]
[root@station ~]# pvdisplay
"/dev/vdb2" is a new physical volume of "100.00 MiB"
--- NEW Physical volume ---
PV Name /dev/vdb2
VG Name
PV Size 100.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID CDWaNG-AB9s-1IpQ-73dz-RWiF-BHCS-w214WQ
"/dev/vdb1" is a new physical volume of "100.00 MiB"
--- NEW Physical volume ---
PV Name /dev/vdb1
VG Name
PV Size 100.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID APtFKl-Sj9H-CRTO-LgAt-HhVS-fWCs-n9dcwQ
3.删除PV
pvremove[选项] disk|partition #用于删除一个存在的物理卷
-f #强制删除
-y #对提问回答yes
[root@station ~]# pvremove /dev/vdb1
Labels on physical volume "/dev/vdb1" successfully wiped.
[root@station ~]# pvremove /dev/vdb2
Labels on physical volume "/dev/vdb2" successfully wiped.
VG管理
1. 创建VG
创建的卷组目录保存在/dev下,为方便管理系统默认文件命名方式为/dev/VG_NAME
vgcreate [option] VG_name PV_device... #vg创建格式,PV_device可以是多个,空行隔开即可
-l #卷组上允许创建的最大逻辑卷数
-p #卷组中允许添加的最大物理卷数
-s #卷组上的物理卷的PE大小
[root@station ~]# vgcreate -s 8M test /dev/vdb1 /dev/vdb2
Volume group "test" successfully created
#使用pv:vdb1和vdb2 联合创建了vg:test
2. 显示VG信息
vgs #用于输出卷组信息报表,能得到卷组的概要信息
pvscan #查找系统中存在的LVM卷组,并显示找到的卷组列表,列表中仅显示找到的卷组的名称和LVM元数据类型
vgdisplay [选项] [VG_name]
#用于显示LVM卷组的详细的属性信息
-A #仅显示活动卷组的属性;
-s #使用短格式输出的信息。
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
test 2 0 0 wz--n- 192.00m 192.00m
[root@station ~]# vgscan
Reading volume groups from cache.
Found volume group "test" using metadata type lvm2
3. 增加VG容量
vgextend [选项] VG_name PV_device... #动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量
-t #测试
[root@station ~]# vgextend test /dev/vdb3 /dev/vdb4
Volume group "test" successfully extended
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
test 4 0 0 wz--n- 384.00m 384.00m
#注意此处pv显示为4
4. 减少VG容量
vgreduce [选项] VG_name PV_device... #通过删除LVM卷组中的物理卷来减少卷组容量;不能删除LVM卷组中剩余的最后一个物理卷
-a #如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷
--removemissing #删除卷组中丢失的物理卷,使卷组恢复正常状态(vg中的分区在fdisk中直接被删除了)
1.减少vg容量
[root@station ~]# vgreduce test /dev/vdb3 /dev/vdb4
Removed "/dev/vdb3" from volume group "test"
Removed "/dev/vdb4" from volume group "test"
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
test 2 0 0 wz--n- 192.00m 192.00m
#注意此处pv显示为2
2.选项-a的用法
[root@station ~]# vgreduce -a test
Removed "/dev/vdb1" from volume group "test"
Can't remove final physical volume "/dev/vdb2" from volume group "test"
#删除了空vdb1,但是不能删除剩下的最后一个vdb2,所以提示vdb2不能删除
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
test 1 0 0 wz--n- 96.00m 96.00m
#就剩下了一个
3.选项--removemissing用法
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- 9.00g 0
test 4 0 0 wz--n- 384.00m 384.00m
[root@station ~]# fdisk /dev/vdb
...
Command (m for help): d
Partition number (1-4, default 4): 4
Partition 4 is deleted
...
#直接删除了vdb4
[root@station ~]# vgs
WARNING: Device for PV S3Wlk3-Krdh-2mui-9rGw-SlAv-l6sY-jDbIA8 not found or rejected by a filter.
VG #PV #LV #SN Attr VSize VFree
test 4 0 0 wz-pn- 384.00m 384.00m
#提示报警错误了
[root@station ~]# vgreduce --removemissing test
WARNING: Device for PV S3Wlk3-Krdh-2mui-9rGw-SlAv-l6sY-jDbIA8 not found or rejected by a filter.
Wrote out consistent volume group test
#删除卷组中丢失的物理卷vdb4,使卷组恢复正常状态
[root@station ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- 9.00g 0
test 3 0 0 wz--n- 288.00m 288.00m
5. 删除VG
vgremove[选项] VG_name #用于删除一个存在的卷组
-f #强制删除
[root@station ~]# vgremove test
Volume group "test" successfully removed
LV管理
1.创建LV
创建的逻辑卷对应的设备文件保存在卷组目录下,为方便管理系统命名方为/dev/VG_NAME/LV_NAME。同时LV中可以分配的最小存储单元称为LE(logical extend),在同一个卷组中,LE的大小和PE是一样的,且一一对应
lvcreate [option] VG_name #在选用的VG卷组中创建lv,系统会默认命名lvol0、lvol1、lvoln以此类推
-L #指定LV的大小,大小会按照最接近整数个LE的大小计算
-l #指定LV的大小,以LE个数计算
-n #指定LV命名
[root@station ~]# lvcreate -L 30M test -n lv1
Rounding up size to full physical extent 32.00 MiB
Logical volume "lv1" created.
#创建了大小为32的lv1,因为le=pe=8同时lv大小必须为le的整数倍,所以为32
2.显示LV信息
lvs #用于输出逻辑卷信息报表,能得到逻辑卷的概要信息
lvscan #查找系统中存在的LV卷,并显示找到的卷列表,列表中仅显示找到的逻辑卷及其对应的设备文件
lvdisplay [LV文件路径] #用于显示LV卷的详细的属性信息
[root@station ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 test -wi-a----- 32.00m
[root@station ~]# lvscan
ACTIVE '/dev/test/lv1' [32.00 MiB] inherit
[root@station ~]# lvdisplay /dev/test/lv1
--- Logical volume ---
LV Path /dev/test/lv1
LV Name lv1
VG Name test
LV UUID ev8npY-bRn2-MeG6-QdEZ-7gdD-ebth-ImiCMt
LV Write Access read/write
LV Creation host, time station.domain1.example.com, 2019-10-28 12:31:11 -0400
LV Status available
# open 0
LV Size 32.00 MiB
Current LE 4
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
3.扩大LV容量
lvextend [LV文件路径] #动态扩展LV
-L 大小|+大小 #指定LV的扩充大小,没有加号指定扩充到多少,有加号表示增加多少
-l 数量|+数量 #指定LV的扩充大小,没有加号指定扩充到多少个,有加号表示增加多少个
[root@station ~]# lvextend -l +2 /dev/test/lv1
Size of logical volume test/lv1 changed from 32.00 MiB (4 extents) to 48.00 MiB (6 extents).
Logical volume test/lv1 successfully resized.
#lv1的le数量怎加2个
[root@station ~]# lvextend -l 7 /dev/test/lv1
Size of logical volume test/lv1 changed from 48.00 MiB (6 extents) to 56.00 MiB (7 extents).
Logical volume test/lv1 successfully resized.
#lv1的le数量增加到7个
注意:由于lv卷在被使用时,会先格式化文件系统然后挂载,所以在扩大lv后相应的文件系统也要调整
- xfs格式仅可以扩大,不可以缩小
xfs_growfs lv文件路径 #重新调整lv的xfs文件系统
#例如:
xfs_growfs /dev/test/lv1
meta-data=/dev/mapper/test-lv1 isize=512 agcount=1, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4096 to 12288
#提示数据块发生了改变
- ext4格式可大可小
resize2fs命令 #重新设置大小
[root@station ~]# resize2fs /dev/test/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/test/lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/test/lv1 is now 32768 blocks long.
4.减少LV容量
减小容量常涉及到,存储了的文件,注意文件内容安全
特别注意:增加则容量时,先怎加LV卷,然后调整文件格式,但是减少容量时相反,先减少格式化文件系统,然后操作LV卷
可以将lv想象为足球场,格式化为草皮,增大时,先扩地后埔草
而减少时,先铲草,后划地
lvreduce [LV文件路径] #动态缩小LV
-L 大小|-大小 #指定LV的扩充大小,没有加号指定扩充到多少,有加号表示增加多少
-l 数量|-数量 #指定LV的扩充大小,没有加号指定扩充到多少个,有加号表示增加多少个
[root@station ~]# lvreduce -l -2 /dev/test/lv1
WARNING: Reducing active and open logical volume to 40.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce test/lv1? [y/n]: y
#确认信息
Size of logical volume test/lv1 changed from 56.00 MiB (7 extents) to 40.00 MiB (5 extents).
Logical volume test/lv1 successfully resized.
#减小2pe
[root@station ~]# lvreduce -l 2 /dev/test/lv1
WARNING: Reducing active and open logical volume to 16.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce test/lv1? [y/n]: y
Size of logical volume test/lv1 changed from 40.00 MiB (5 extents) to 16.00 MiB (2 extents).
Logical volume test/lv1 successfully resized.
#lv1的le数量减少到7个
5.删除LV
删除lv前,先执行卸载umount
lvremove[选项] lv文件路径 #用于删除一个存在的逻辑卷
-f #强制删除
[root@station ~]# lvremove /dev/test/lv1
Do you really want to remove active logical volume test/lv1? [y/n]: y
#信息确认
Logical volume "lv1" successfully removed
#回馈信息
LV快照
快照注意事项:
- 创建快照,对象必须为lv
- 使用过程注意,存储大小超过快照,快照会坏掉,直接重挂载目录中卸载掉
lvcreate -s lv文件路径 #创建快照
#注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷
lvcreate -L 8M -n lv1_bak -s /dev/test/lv1
#创建lv1的快照文件lv1_bak,大小为8M
LVM逻辑顺序
创建LV是使用顺序
销毁LV的顺序