# 官方提供@yunTaoScripts 逻辑卷管理 🔥🔥

loading

# 什么是逻辑卷

为了解决传统分区,难以扩展的问题,引入逻辑卷。

通过底层物理分区转化为物理卷,通过物理卷创建卷组,在卷组的基础上创建逻辑卷。

# 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为例
  1. 卸载文件系统
[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
  1. 一致性检查
[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
  1. 减小文件系统
resize2fs /dev/yuntao-vg/lvol3 100M
  1. 减小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

没恢复成功怎么办?

  • 如果没恢复,重启下系统。
  • 不要给备份划分文件系统。
最后修改时间: 12/31/2022, 12:00:03 PM