EXT4根文件系统resize
警告
警告本案例能够直接不卸载根文件系统,直接通过fdisk命令修改/dev/vda3分区大小,然后resize2fs修改EXT4文件系统大小,原因是因为该磁盘恰好只分配了/dev/sda3,磁盘后续都是连续空白。
通常情况下,对于EXT4文件系统的底层分区,最好是建立在LVM上,这样才能灵活调整磁盘分区大小。请参考 扩展LVM。
如果没有使用LVM,直接通过 fdisk 修改磁盘分区大小,务必要确保分区起始扇区和原先一致,且扩展后的扇区范围没有覆盖其他分区,否则会导致数据丢失。
#fdisk -l /dev/vda
Disk /dev/vda: 128.8 GB, 128849018880 bytes, 251658240 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: 0x000cb9dd
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 6293503 2097152 82 Linux swap / Solaris
/dev/vda3 6293504 125829119 59767808 83 Linux <= 注意:这里vda3没有完全分配完磁盘空间,并且没有后续的vda4,所以才能通过fdisk修改分区大小操作
先删除分许
vda3然后重新添加vda3分区,注意分区起始扇区和原先相同,结束扇区则增大,以便能够使用更多磁盘空间:
刷新内核对磁盘分区的识别
注意,由于是修改正挂载的磁盘分区,所以需要通过 partprobe 或者 kpartx 来通知重新识别。
不过,partprobe方式并不能使得内核识别正在使用的根磁盘分区:
检查磁盘分区在内核中信息
显示如下
可以看到并没有更新成最新的vda3磁盘分区扇区信息。
而kpartx是针对Multipath设备,不能使用:
partx设备是针对local设备,注意,不要使用-v -a参数,因为不是添加磁盘分区:
而是应该参考 Does RHEL 7 support online resize of disk partitions? 使用 partx 的 -u 参数表示更新:
此时没有任何输出信息,实际已经更新完成。
再次检查分区大小信息,可以看到已经更新:
原因解释RHEL7内核包含了从block: add partition resize function to blkpg ioctl的BLKPG ioctl的修改来支持
BLKPG_RESIZE_PARTITION操作。当前RHEL7的
util-linux工具包包含的partx和resizepart程序是唯一支持BLKPG_RESIZE_PARTITION的BLKPG ioctl操作的用户端命令。
检查磁盘
扩展EXT4文件系统
resize2fs命令支持ext2/ext3/ext4文件系统重定义大小。如果文件系统是umount状态,则可以通过resize2fs工具扩展或收缩文件系统。如果文件系统是mount状态,则只支持扩展文件系统。注意:要在线扩展文件系统,需要内核和文件系统都支持on-line resize。(现代Linux发行版使用的内核 2.6 可以支持在线resize挂载状态的ext3和ext4;其中,ext3文件系统需要使用resize_inode特性)
现在我们检查一下当前挂载的/dev/vda3磁盘文件系统,挂载为/分区,当前大小是56G:
执行以下命令扩展文件系统(默认扩展成分区大小,也可以指定文件系统大小)
显示输出
再次检查挂载的/分区,可以看到空间已经扩展到116G
此时就可以毫无障碍地使用扩展过的根文件系统。
强制系统重启进行fsck
RHEL 6等早期使用SysVinit和Debian使用Upstart早期版本,都支持在根分区的文件系统上/forcefsck文件来激活强制对根文件系统进行fsck,这是通过/etc/rc.sysinit脚本来实现的
这样系统重启会强制进行fack
不过,在systemd系统中,需要通过systemd-fsck 服务来设置 systemd-fsck@.service
参考 archliux - fsck 使用以下命令检查分区设置的fsck检查频率(默认是每30次启动会做一次fsck,不过,当前文件系统设置了 -1 强制不检查,或者设置0也是不检查)
修改检查/dev/vda3频率,设置成1,则每次重启都会检查:
显示
此时验证文件系统可以看到
现在我们重启操作系统,从VNC终端检查虚拟机可以看到虚拟机启动时进行了文件系统fsck。
既然已经做过fsck了,我们现在恢复原先默认关闭fsck的设置
参考
6.3. RESIZING AN EXT4 FILE SYSTEM - resize2fs命令参考
Last updated
Was this helpful?