一、问题1:扩展卷组的用处
本人在学习LVM的时候遇到了一个疑惑,是因为没有搞懂扩展卷组的用处,在这里跟大家分享一下,前面创建物理卷和卷组的过程省略
首先看一下我以下的过程
// 创建了一个逻辑卷,名为mysql,test是我卷组的名称
[root@rocky8 ~]#lvcreate -L 6G -n mysql test
WARNING: xfs signature detected on /dev/test/mysql at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/test/mysql.
Logical volume "mysql" created.
[root@rocky8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- <17.00g
swap rl -wi-ao---- 2.00g
mysql test -wi-a----- 6.00g
// 可以看到sdb1和sdb2已经关联上了逻辑卷
[root@rocky8 ~]#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
├─rl-root 253:0 0 17G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
│ └─test-mysql 253:2 0 6G 0 lvm
├─sdb2 8:18 0 5G 0 part
│ └─test-mysql 253:2 0 6G 0 lvm
└─sdb3 8:19 0 10G 0 part
sr0 11:0 1 10.5G 0 rom
[root@rocky8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <19.00g 0
test 2 1 0 wz--n- <9.97g <3.97g
[root@rocky8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rl lvm2 a-- <19.00g 0
/dev/sdb1 test lvm2 a-- 4.98g 0
/dev/sdb2 test lvm2 a-- 4.98g <3.97g
/dev/sdb3 lvm2 --- <10.00g <10.00g
// 将sdb3扩展到卷组中
[root@rocky8 ~]#vgextend test /dev/sdb3
Volume group "test" successfully extended
[root@rocky8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rl lvm2 a-- <19.00g 0
/dev/sdb1 test lvm2 a-- 4.98g 0
/dev/sdb2 test lvm2 a-- 4.98g <3.97g
/dev/sdb3 test lvm2 a-- 9.98g 9.98g
// sdb3却没有关联到逻辑卷中
[root@rocky8 ~]#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
├─rl-root 253:0 0 17G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
│ └─test-mysql 253:2 0 6G 0 lvm
├─sdb2 8:18 0 5G 0 part
│ └─test-mysql 253:2 0 6G 0 lvm
└─sdb3 8:19 0 10G 0 part
sr0 11:0 1 10.5G 0 rom
所以当时我的疑惑就是一开始创建逻辑卷,sdb1和sdb2都关联到了test-mysql逻辑卷,然后将sdb3扩展到test卷组,但是为什么扩展到了之后,sdb3没有关联到test-mysql卷组?
解答:之所以test-mysql存在sdb1和sdb2上,是因为它需要6G的那个空间,而sdb1和sdb2都只有5G,加起来10G,已经确保有6G足够可用的空间,test-mysql存在了sdb1和2上,已经存好了,sdb3上不用存了,test-mysql需要的空间已经足够了。
所以扩展卷组的用处就是比如原本test卷组10G容量,然后已经分完容量给一个逻辑卷,想扩展逻辑卷的话没有容量了,那么扩展卷组后多了容量,就可以扩展逻辑卷了。
所以也就是说,当test-mysql扩容到10G,到达了test卷组的最大容量,sdb3有10G,扩展到test卷组,那么test卷组就有了20G的容量,那么test-mysql又可以继续扩容了,或者创建新的逻辑卷。
二、问题2:扩展逻辑卷报错:write error failed: No space left on device
#根分区已满
[root@ubuntu2004 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 389M 41M 349M 11% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 9.8G 9.8G 0 100% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 1.5G 209M 1.2G 16% /boot
/dev/loop1 68M 68M 0 100% /snap/lxd/21835
/dev/loop2 92M 92M 0 100% /snap/lxd/24061
/dev/loop3 41M 41M 0 100% /snap/snapd/20290
/dev/loop4 64M 64M 0 100% /snap/core20/2015
tmpfs 389M 0 389M 0% /run/user/0
/dev/loop5 64M 64M 0 100% /snap/core20/2264
#两种命令扩容报错
[root@ubuntu2004 ~]#lvresize -r -L +8G /dev/mapper/ubuntu--vg-ubuntu--lv
/etc/lvm/archive/.lvm_ubuntu2004_50678_558404538: write error failed: No space left on device
[root@ubuntu2004 ~]#lvextend -L +8G /dev/mapper/ubuntu--vg-ubuntu--lv
/etc/lvm/archive/.lvm_ubuntu2004_50678_558404538: write error failed: No space left on device
#但是卷组还有空间
[root@ubuntu2004 ~]#vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <18.50 GiB
PE Size 4.00 MiB
Total PE 4735
Alloc PE / Size 2560 / 10.00 GiB
Free PE / Size 2175 / <8.50 GiB
VG UUID d0xfxL-9ith-021w-xHBF-GALw-41Nk-TYZnQ1
#解决
#该命令的选项-A重新调整了 /dev/mapper/ubuntu 的 lv 大小,并刷新了文件系统
[root@ubuntu2004 ~]#lvresize -A -L +8G /dev/mapper/ubuntu--vg-ubuntu--lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 10.00 GiB (2560 extents) to 18.00 GiB (4608 extents).
WARNING: This metadata update is NOT backed up.
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
[root@ubuntu2004 ~]#resize2fs -p /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 4718592 (4k) blocks long.
#扩展成功
[root@ubuntu2004 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 389M 1.6M 388M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 18G 9.8G 7.0G 59% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 1.5G 209M 1.2G 16% /boot
/dev/loop1 68M 68M 0 100% /snap/lxd/21835
/dev/loop2 92M 92M 0 100% /snap/lxd/24061
/dev/loop3 41M 41M 0 100% /snap/snapd/20290
/dev/loop4 64M 64M 0 100% /snap/core20/2015
tmpfs 389M 0 389M 0% /run/user/0
/dev/loop5 64M 64M 0 100% /snap/core20/2264