resize2fs: Operation not permitted While trying to add group #25

嵌入式平台,在pc上制作好ext4 rootfs.img,然后烧写到嵌入式设备emmc上

1. 制作ext4 img使用命令

make_ext4fs -l 2200M -L ROOTFS rootfs.img rootfs/制做一个2.2G的rootfs.img, Lable为:ROOTFS

2. 命令 resize2fs /dev/mmcblk0p3,目的是为了扩容,出现以下问题

为什么要执行以下命令,因为mmcblk0p3分区大于rootfs.img大小,想要充分利用空闲空间root@3559a-demo:~# resize2fs /dev/mmcblk0p3
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mmcblk0p3 to 3670016 (4k) blocks.
resize2fs: Operation not permitted While trying to add group #25
kernel log:[67518.949653] EXT4-fs warning (device mmcblk0p3): reserve_backup_gdb:968: reserved block 144 not at offset 143
[67518.949670] EXT4-fs (mmcblk0p3): resized filesystem to 3670016
[67518.976268] EXT4-fs warning (device mmcblk0p3): ext4_group_add:1605: No reserved GDT blocks, can't resize

3. 从内核log是来看,是因为No reserved GDT block不够用,导致resize失败

root@3559a-demo:~# dumpe2fs /dev/mmcblk0p3 
dumpe2fs 1.42.13 (17-May-2015)
Filesystem volume name:   ROOTFS
Last mounted on:          /
Filesystem UUID:          03d6de4c-f8cc-185f-a500-0e4c1efbf842
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode filetype needs_recovery extent sparse_super large_file uninit_bg
Filesystem flags:         unsigned_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Remount read-only
Filesystem OS type:       Linux
Inode count:              195600
Block count:              819200
Reserved block count:     255
Free blocks:              246460
Free inodes:              149798
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      143
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7824
Inode blocks per group:   489
Last mount time:          Wed Sep 11 13:08:29 2019
Last write time:          Wed Sep 11 13:23:12 2019
Mount count:              4
Maximum mount count:      -1
Last checked:             Thu Jan  1 00:00:00 1970
Check interval:           0 ()
Lifetime writes:          140 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   tea
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             343M
Journal length:           88000
Journal sequence:         0x0000009c
Journal start:            536

Reserved GDT blocks:      143 

共保留了143个block, 然而 Group describe大小为32bytes, 那么1个BLOCK为4096bytes, 

4096/32 = 128, 一个block 可以保存128组 Group describe(组描述符),所以143个GDT block已经足够使用,那么这个错误是什么引起的呢

4. 尝试解决方案

(1)有人说是Journal size小引起的,在制作 rootfs.img时可以指定大一点的Journal size,参数为-j

(make_ext4fs -l 2200M -L ROOTFS rootfs.img rootfs/  -j 88000)约指定343M,已足够使用,然而还有上面扩容的问题。

(2)有人说是GDT不足引起的,尝试修改源码增加GDT reserver数量,修改为512, 问题依旧。

5. 使用make_ext4fs做的rootfs.img,有问题没有解决,目前正在探索,可能跟制做参数有问题,也可能是其他问题。

6. 使用以下方法解决resize2fs 问题

换一种方式,可以resize成功。原因为知。。。。

1. 空的文件,根据所需创建
dd if=/dev/zero of=rootfs.img bs=1M count=2200   
2. 格式化rootfs.img 为ext4
losetup /dev/loop3 rootfs.img
mkfs.ext4 /dev/loop3
3. 拷贝你所需的所有文件到到ext4 rootfs.img
mount /dev/loop3 /mnt
cp file /mnt
umount /mnt 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部