记录resize2fs: Permission denied to resize filesystem问题解决
问题背景
因为要对一个linux设备做sd卡扩容处理,使根文件系统完全利用sd卡空间。在扩容操作中最终需要resize2fs来调整分区大小。
resize2fs调整时报错:
xilinx@pynq:~$ sudo resize2fs /dev/mmcblk1p2
[sudo] password for xilinx:
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/mmcblk1p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
resize2fs: Permission denied to resize filesystem
问题排查
首先使用dmesg查看启动信息是否能找到文件系统的报错打印,例如我的打印如下:
[ 9.136404] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 10.362475] EXT4-fs error (device mmcblk1p2): ext4_mb_generate_buddy:756: group 79, block bitmap and bg descriptor inconsistent: 32767 vs 32768 free clusters
[ 10.381222] JBD2: Spotted dirty metadata buffer (dev = mmcblk1p2, blocknr = 0). There's a risk of filesystem corruption in case of system crash.
[ 10.455871] JBD2: Spotted dirty metadata buffer (dev = mmcblk1p2, blocknr = 0). There's a risk of filesystem corruption in case of system crash.
[ 39.772135] EXT4-fs warning (device mmcblk1p2): ext4_resize_begin:45: There are errors in the filesystem, so online resizing is not allowed
[ 316.162293] EXT4-fs (mmcblk1p2): error count since last fsck: 2
[ 316.162305] EXT4-fs (mmcblk1p2): initial error at time 1517155098: ext4_mb_generate_buddy:756
[ 316.162313] EXT4-fs (mmcblk1p2): last error at time 1706249612: ext4_mb_generate_buddy:756
[ 451.517624] random: crng init done
xilinx@pynq:~$
可以看到系统提示文件系统存在错误,因此不允许扩容。
问题解决
然后可以把这个SD卡插到Ubuntu主机上,如果自动挂载了磁盘需要手动卸载,使用df -T -h查看sd卡挂载路径,使用umount命令卸载。
然后使用sudo fsck -y /dev/sdb2进行修复。
注意:该操作可能会导致数据丢失。
/dev/sdb2 指数据盘第二个分区,如果未分区则为/dev/sdb,实际操作时,请根据机器实际情况输入分区设备名。
修复完成后就可以继续resize2fs调整分区大小。