[ubuntu-us-mi] resizing mounted filesystem

Robert Citek robert.citek at gmail.com
Thu Oct 7 04:35:26 BST 2010


... sort of.  I mistakenly resized the image in my last post:

On Tue, Oct 5, 2010 at 9:20 PM, Robert Citek <robert.citek at gmail.com> wrote:
> # workaround to demonstrate filesystem can be resized, just not when mounted
> umount ext4.loop/
> e2fsck -fy ext4.img
> resize2fs ext4.img
> mount -o loop ext4.img ext4.loop
> df -PhT ext4.loop

I should have resized the filesystem on the loopback device, e.g.
/dev/loop0.  When that happens you cannot resize an ext4 filesystem,
even when unmounted.  Here's some code to demonstrate, again run as
root:

dd if=/dev/zero of=ext4.img bs=1M count=10000
dev=$(losetup -vf ext4.img| cut -d" " -f4)
mkfs.ext4 ${dev} 5M
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 2G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 5G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G

At this point resize2fs returns an error:

resize2fs: /dev/loop0: The combination of flex_bg and
	!resize_inode features is not supported by resize2fs.

This means the filesystems is 5GB forever.  It cannot be resized,
expanded or shrunk.

In contrast, ext3 does not have this issue.

mkfs.ext3 ${dev} 5M
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 2G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 5G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G


Workaround: when creating an ext4 filesystem, use the extended option
resize=.  For example:

mkfs.ext4 -E resize=100000000000 ${dev} 5M
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 5G
tune2fs -l ${dev} | grep -i gdt
resize2fs ${dev} 3G

This option can be added to /etc/mke2fs.conf.   Technically, using
resize= is not really a workaround.  It merely postpones the problem
to a bigger sized file system.

Regards,
- Robert



More information about the ubuntu-us-mi mailing list