用于openstack的节点,发现宿主机磁盘空间不够用了。由于系统分区使用了lvm,想着把lvm扩展一下就ok了。
[root@Caron cinder]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 640G 611G 695M 100% /
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 0 126G 0% /dev/shm
tmpfs 126G 4.1G 122G 4% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/sda1 283M 100M 164M 38% /boot
tmpfs 126G 4.1G 122G 4% /run/netns
tmpfs 26G 0 26G 0% /run/user/0
通过命令查看后,发现vg中也没有剩余空间了,因此需要新的pv加入。
瞄中了/dev/sdh
盘,没有被使用。先用fdisk /dev/sdh
进行分区。
[root@Caron ~]# fdisk -l /dev/sdh
Disk /dev/sdh: 399.4 GB, 399431958528 bytes, 780140544 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x93026f38
Device Boot Start End Blocks Id System
/dev/sdh1 2048 780140543 390069248 8e Linux LVM
Note: 设置分区类型为linux LVM. 当别人需要操作磁盘的时候,提醒这盘已经用作lvm了。
创建pv, 加到对应的vg中:
[root@Caron ~]# pvcreate /dev/sdh1
[root@Caron ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 3 2 0 wz--n- 650.81g 0
ss-volumes 9 22 0 wz--n- 3.27t 57.96g
[root@Caron ~]# vgextend VolGroup00 /dev/sdh1
加入之后,通过命令查看:
WARNING: Device for PV J7U4NX-OkZt-yahj-AyHw-UYJm-xaEn-UoAndI not found or rejected by a filter.
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 3
Act PV 2
VG Size 950.78 GiB
PE Size 32.00 MiB
Total PE 30425
Alloc PE / Size 20826 / 650.81 GiB
Free PE / Size 9599 / 299.97 GiB
VG UUID BoJaAa-2cQ5-Fov5-6zY9-Bn33-CG1g-XdU1Yr
发现可用大小增加了,但是提示某个pv设备丢失。
在执行lvm扩展命令lvextend -l +100%FREE /dev/VolGroup00/LogVol00
的时候,出现了如下错误:
Cannot change VG VolGroup00 while PVs are missing.
应该是由于VolGroup00 VG组的pv缺失所造成的。
一般没人去拔服务器上的盘,那可能就是被lvm的配置过滤掉了。遂打开lvm的配置文件查看:
[root@Caron ~]# cat /etc/lvm/lvm.conf
...
filter = [ "a/sda/", "a/sdb1/", "a/sdc1/","a/sdd1/","a/sde1/","a/sdf1/","a/sdg1/","a/sdi1/","a/sdj1/","a/sdk1/","a/sdl1/","a/sdm1/","a/sdn1/","a/sdp1/","r/.*/"]
...
发现有些盘符被lvm所忽略掉了
可以看到,sdh是是用于逻辑卷的。因此在过滤规则中加上/dev/sdh。然后重启systemctl restart lvm2-lvmetad.service
再次执行lvextend -l +100%FREE /dev/VolGroup00/LogVol00
的时候,出现了如下错误:
Device still marked missing because of allocated data on it, remove volumes and consider bgreduce --removemissing.
此时pv /dev/sdh 已经不再丢失,且已经成功加入到VG组.但是由于分配的数据,设备仍然标记为丢失。
在查阅许多资料之后,发现可以使用restoremissing
参数来恢复:
vgextend --restoremissing VolGroup00 /dev/sdh1
再次执行lvextend命令的时候,提示成功。
重新resize一下lvm大小:
[root@Caron ~]# resize2fs /dev/VolGroup00/LogVol00
[root@Caron ~]# df -h | more
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 936G 612G 283G 69% /
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 0 126G 0% /dev/shm
tmpfs 126G 4.1G 122G 4% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/sda1 283M 100M 164M 38% /boot
tmpfs 126G 4.1G 122G 4% /run/netns
tmpfs 26G 0 26G 0% /run/user/0
可以看到lvm扩展成功。