封尘网

让学习成为一种习惯!

内核版本导致了LVM扩容不成功吗?

系统在安装的时候就是使用了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的版本,重启机器后发现能正常识别的。

提醒:本文最后更新于 1629 天前,文中所描述的信息可能已发生改变,请谨慎使用。