# 官方提供@yunTaoScripts 逻辑卷管理 🔥🔥
# 什么是逻辑卷
为了解决传统分区,难以扩展的问题,引入逻辑卷。
通过底层物理分区转化为物理卷,通过物理卷创建卷组,在卷组的基础上创建逻辑卷。
# LV的管理
# 创建、查看、删除PV
[root@server1 ~]# pvcreate /dev/sdb{5..9}
Physical volume "/dev/sdb5" successfully created.
Physical volume "/dev/sdb6" successfully created.
Physical volume "/dev/sdb7" successfully created.
Physical volume "/dev/sdb8" successfully created.
Physical volume "/dev/sdb9" successfully created.
[root@server1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb5 lvm2 --- 2.00g 2.00g
/dev/sdb6 lvm2 --- 2.00g 2.00g
/dev/sdb7 lvm2 --- 2.00g 2.00g
/dev/sdb8 lvm2 --- 2.00g 2.00g
/dev/sdb9 lvm2 --- <4.27g <4.27g
[root@server1 ~]# pvremove /dev/sdb9
Labels on physical volume "/dev/sdb9" successfully wiped.
# 创建、查看、删除、扩展VG
- 创建VG
[root@server1 ~]# vgcreate vg0 /dev/sdb{5..7}
Volume group "vg0" successfully created
[root@server1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 0 0 wz--n- <5.99g <5.99g
[root@server1 ~]# vgremove vg0
Volume group "vg0" successfully removed
- 扩展和缩小VG
[root@server1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb5 vg0 lvm2 a-- 1.99g 1.99g
/dev/sdb6 vg0 lvm2 a-- 1.99g 1.99g
/dev/sdb7 vg0 lvm2 a-- 1.99g 1.99g
/dev/sdb8 lvm2 --- 2.00g 2.00g
[root@server1 ~]# vgrename vg0 yuntao-vg
Volume group "vg0" successfully renamed to "yuntao-vg"
[root@server1 ~]# vgextend yuntao-vg /dev/sdb8
Volume group "yuntao-vg" successfully extended
[root@server1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
yuntao-vg 4 0 0 wz--n- <7.97g <7.97g
[root@server1 ~]# vgreduce yuntao-vg /dev/sdb6
Removed "/dev/sdb6" from volume group "yuntao-vg"
[root@server1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb5 yuntao-vg lvm2 a-- 1.99g 1.99g
/dev/sdb6 lvm2 --- 2.00g 2.00g
/dev/sdb7 yuntao-vg lvm2 a-- 1.99g 1.99g
/dev/sdb8 yuntao-vg lvm2 a-- 1.99g 1.99g
- 创建VG指定PE大小
[root@server1 ~]# vgcreate vg0 -s 8 /dev/sdb{5..7}
Volume group "vg0" successfully created
[root@server1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 0 0 wz--n- <5.98g <5.98g
[root@server1 ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size <5.98 GiB
PE Size 8.00 MiB
Total PE 765
Alloc PE / Size 0 / 0
Free PE / Size 765 / <5.98 GiB
VG UUID qBlU9w-mcuG-dTPu-oGTF-WJoi-JF8Z-y6gSUa
什么是PE
- PE: 最小单位默认 4M,lv扩展必须以PE 整数倍扩展。
# 创建、删除、扩展LVM
- 创建、删除LV
lvcreate -L 96M yuntao-vg # 指定大小
lvcreate -n yuntlv -l 25 yuntao-vg # 指定lv名称和 25个pe大小
lvcreate -n yuntlv -l 20%free yuntao-vg #剩余大小的20%
lvremove /dev/yuntao-vg/lvol0
lvremove /dev/yuntao-vg/lvol1 -f #强制删除不提示
mkfs.xfs /dev/yuntao-vg/lvol2
mkfs.ext4 /dev/yuntao-vg/yuntlv # 格式化,创建文件系统
mkdir /lv1 /lv2
mount /dev/yuntao-vg/lvol2 /lv1 # 挂载文件系统
mount /dev/yuntao-vg/yuntlv /lv2
非pe大小整数倍的逻辑卷创建疑问
- lv如果不是pe的整数倍,会自动扩展。
- 扩展 LV
[root@server1 ~]# lvextend -L 200M /dev/yuntao-vg/lvol2 # 扩展到200M
Size of logical volume yuntao-vg/lvol2 changed from 96.00 MiB (12 extents) to 200.00 MiB (25 extents).
Logical volume yuntao-vg/lvol2 successfully resized.
[root@server1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvol2 yuntao-vg -wi-ao---- 200.00m
yuntlv yuntao-vg -wi-ao---- 200.00m
yuntlv2 yuntao-vg -wi-a----- 1.09g
[root@server1 ~]# lvextend -L +200M /dev/yuntao-vg/yuntlv # 增加200M
Size of logical volume yuntao-vg/yuntlv changed from 200.00 MiB (25 extents) to 400.00 MiB (50 extents).
Logical volume yuntao-vg/yuntlv successfully resized.
[root@server1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvol2 yuntao-vg -wi-ao---- 200.00m
yuntlv yuntao-vg -wi-ao---- 400.00m
yuntlv2 yuntao-vg -wi-a----- 1.09g
- 扩展文件系统
###xfs扩展
xfs_growfs /lv1/
###ext4扩展
resize2fs /dev/yuntao-vg/yuntlv
一定要扩展文件系统
如果不扩展文件系统,df -hT
看到的文件系统大小没有变化。
- 自动扩展文件系统 ,指定
-r
lvextend -L +200M -r /dev/yuntao-vg/lvol2
- 逻辑卷缩小以ext4为例
- 卸载文件系统
[root@server1 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/yuntao--vg-lvol2 xfs 395M 8.6M 387M 3% /lv1
/dev/mapper/yuntao--vg-yuntlv ext4 384M 2.3M 360M 1% /lv2
[root@server1 ~]# umount/lv2
- 一致性检查
[root@server1 ~]# fsck -f /dev/yuntao-vg/yuntlv
fsck from util-linux 2.32.1
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/yuntao--vg-yuntlv: 11/102400 files (0.0% non-contiguous), 19342/409600 blocks
- 减小文件系统
resize2fs /dev/yuntao-vg/lvol3 100M
- 减小LV
[root@server1 ~]# lvreduce -L 100M /dev/yuntao-vg/lvol3
Rounding size to boundary between physical extents: 104.00 MiB.
WARNING: Reducing active logical volume to 104.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce yuntao-vg/yuntlv? [y/n]: y
Size of logical volume yuntao-vg/yuntlv changed from 400.00 MiB (50 extents) to 104.00 MiB (13 extents).
Logical volume yuntao-vg/yuntlv successfully resized.
root@server1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvol2 yuntao-vg -wi-ao---- 400.00m
lvol3 yuntao-vg -wi-ao---- 104.00m
注意
- xfs不支持缩小
- 先减小文件系统再减小逻辑卷。
- -L 100M :达到100M
- -L -300M: 减少300M
# 逻辑卷快照
lvcreate -L 12M -n snap-lv -s /dev/mapper/yuntao--vg-lvol2
lvcreate -L 12M -n snap-lv1 -s /dev/mapper/yuntao--vg-lvol2
mkdir /snap
mount -o nouuid /dev/yuntao-vg/snap-lv1 /snap/ ##xfs系统需要加nouuid选项
umount /dev/yuntao-vg/lvol2
## 牺牲快照 恢复数据
lvconvert --merge /dev/yuntao-vg/snap-lv1
mount /dev/yuntao-vg/lvol2 /lv1
没恢复成功怎么办?
- 如果没恢复,重启下系统。
- 不要给备份划分文件系统。
← 快速链接