系统在安装的时候就是使用了LVM,方便以后硬盘空间不够,能快速扩容的。正是因为硬盘空间比较吃紧,所以对系统的根分区进行了LVM扩容。
正常情况下不应该有这样问题的,因为本次的操作觉得很奇怪,但是又无法找到特别的错误提示所以做此记录。
系统版本:CentOS release 6.7 (Final)
当前内核版本:4.4.140-1.el6.elrepo.x86_64
系统原来的内核版本:2.6.32-573.el6.x86_64
扩容前:
[root@jenkins ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
158G 98G 53G 65% /
tmpfs 15G 0 15G 0% /dev/shm
/dev/sda1 477M 118M 334M 26% /boot
/dev/mapper/VolGroup-lv_home
39G 314M 37G 1% /home
LVS信息:
[root@jenkins ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home VolGroup -wi-ao---- 39.51g
lv_root VolGroup -wi-ao---- 160.00g
lv_swap VolGroup -wi-ao---- 10.00g
PVS信息:
[root@jenkins ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 99.51g 0
/dev/sdb VolGroup lvm2 a-- 300.00g 190.00g
从上面看来还有190GB的硬盘在PV里面没有划分出去。
直接扩容:+100G到根分区
lvextend -L +100G /dev/mapper/VolGroup-lv_root
刷新逻辑卷信息:因为系统分区使用了EXT4格式,所以使用resize2fs命令,xfs格式的话就要使用xfs_growfs
[root@jenkins ~]# resize2fs -f /dev/mapper/VolGroup-lv_root
然而扩容后发现lvdisplay显示正常,但是使用df -lhT时没有变化。
通过查看日志发现Warning信息.
Apr 9 09:35:43 jenkins kernel: EXT4-fs warning (device dm-0): ext4_group_add:1605: No reserved GDT blocks, can’t resize
根据上面的提示应该是文件系统预留的Journal size不够导致,但是查看时并没有发现不对的地方;
dumpe2fs /dev/mapper/VolGroup-lv_root |grep -i Journal""
然后看到kernel信息时我立马觉得奇怪了,这台机器确实是升级过内核,难道这个内核版本跟这个LVM版本有关系吗?
最简单的方法就是把内核换成系统自带的版本。修改/boot/grub/grub.conf换成了中间那个2.6版本的。
[root@jenkins ~]# cat /boot/grub/grub.conf |grep "title"
title CentOS (4.4.140-1.el6.elrepo.x86_64)
title CentOS (2.6.32-573.12.1.el6.x86_64)
title CentOS 6 (2.6.32-573.el6.x86_64)
重启系统,内核版本变回了2.6.32-573.12.1.el6.x86_64,但是刚才的扩容操作并没有成功。
接下来直接执行,因为刚才已经执行过lvextend -L +100G /dev/mapper/VolGroup-lv_root
[root@jenkins ~]# resize2fs -f /dev/mapper/VolGroup-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
old desc_blocks = 10, new_desc_blocks = 17
Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 68157440 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_root is now 68157440 blocks long.
检查效果:
[root@jenkins ~]# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 256G 98G 146G 40% /
tmpfs tmpfs 15G 0 15G 0% /dev/shm
/dev/sda1 ext4 477M 118M 334M 26% /boot
/dev/mapper/VolGroup-lv_home
ext4 39G 314M 37G 1% /home
成功了。
最后我把内核切换回了4.4的版本,重启机器后发现能正常识别的。