Ext4是一种广泛使用的文件系统,它支持在线和离线扩容,以及离线缩容以适应存储需求的变化。然而,在扩展Ext4文件系统的过程中,用户可能会遇到一些常见的错误和问题。本文将以磁盘/dev/vdb
为例介绍如何识别和处理这些错误,以确保文件系统的扩容操作顺利进行。
resize2fs: Bad magic number in super-block while trying to open /dev/vdb
问题现象
执行resize2fs
命令。
sudo resize2fs /dev/vdb
返回如下错误:
resize2fs: Bad magic number in super-block while trying to open /dev/vdb
Couldn't find valid filesystem superblock.
问题原因
该错误表示指定扩容的设备,如示例中的/dev/vdb
,不是Ext4文件系统格式。
解决方案
检查设备的文件系统,确保为Ext4文件系统类型。
lsblk --fs /dev/vdb
resize2fs: Device or resource busy while trying to open /dev/vdb
问题现象
执行resize2fs
命令。
sudo resize2fs /dev/vdb
返回如下错误:
resize2fs: Device or resource busy while trying to open /dev/vdb
Couldn't find valid filesystem superblock.
问题原因
该错误一般发生在待扩容的文件系统对应设备是分区的场景。如用户直接针对/dev/vdb
执行resize2fs
扩容,但文件系统实际位于分区/dev/vdb1
,将报上述错误。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 50G 0 part
解决方案
扩容分区。
sudo growpart /dev/vdb 1
成功则返回信息如下:
CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166
扩容文件系统。
sudo resize2fs /dev/vdb1
成功则返回信息如下:
resize2fs 1.46.0 (29-Jan-2020)
Filesystem at /dev/vdb1 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vdb1 is now 26214139 (4k) blocks long.
The filesystem is already 13106944 (4k) blocks long. Nothing to do!
问题现象
执行resize2fs
命令。
sudo resize2fs /dev/vdb1
返回如下错误:
The filesystem is already 13106944 (4k) blocks long. Nothing to do!
问题原因
该错误一般发生在待扩容的文件系统对应设备是分区的场景。如用户直接针对/dev/vdb1
执行resize2fs
扩容,将报上述错误。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 50G 0 part
解决方案
扩容分区。
sudo growpart /dev/vdb 1
成功则返回信息如下:
CHANGED: partition=1 start=2048 old: size=104855552 end=104857599 new: size=209713119 end=209715166
扩容文件系统。
sudo resize2fs /dev/vdb1
成功则返回信息如下:
resize2fs 1.46.0 (29-Jan-2020)
Filesystem at /dev/vdb1 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vdb1 is now 26214139 (4k) blocks long.
resize2fs: On-line shrinking not supported
问题现象
执行resize2fs
命令。
sudo resize2fs /dev/vdb
返回如下错误:
Filesystem at /dev/vdb is mounted on /mnt/test; on-line resizing required
resize2fs: On-line shrinking not supported
问题原因
该错误表示Ext4仅支持离线缩容,不支持在线缩容。
解决方案
确认设备是否已经挂载。
mount | grep /dev/vdb
卸载文件系统。
sudo umount /mnt/test
再次执行
resize2fs
命令。
sudo resize2fs /dev/vdb 50G
成功则返回信息如下:
Resizing the filesystem on /dev/vdb to 13107200 (4k) blocks.
The filesystem on /dev/vdb is now 13107200 (4k) blocks long.
resize2fs: Permission denied to resize filesystem
问题现象
执行resize2fs
命令。
resize2fs /dev/vdb
返回如下错误:
resize2fs: Permission denied to resize filesystem
问题原因
该错误一般表示执行resize2fs
操作需要CAP_SYS_RESOURCE权限,或者文件系统存在错误。
解决方案
使用
sudo
提升权限。
sudo resize2fs /dev/vdb
如果问题依旧存在,则检查文件系统是否存在错误。
dmesg | grep "EXT4-fs"
如确认文件系统存在错误,卸载文件系统,执行
fsck
。
sudo umount /mnt/test
sudo fsck -y /dev/vdb
再次执行
resize2fs
命令进行离线扩容。
sudo resize2fs /dev/vdb
文档内容是否对您有帮助?