I want to shrink an ext4 filesystem to make room for a new partition and came across the resize2fs program. The command looks like this:resize2fs -p /dev/mapper/ExistingExt4 $sizeHow should I determine $size if I want to substract exactly 15 GiB from the current ext4 filesystem? Can I use the output of df somehow?
How do I determine the new size for resize2fs?
partition;ext4;resize2fs
You should not use df because it shows the size as reported by the filesystem (in this case, ext4).Use the dumpe2fs -h /dev/mapper/ExistingExt4 command to find out the real size of the partition. The -h option makes dumpe2fs show super block info without a lot other unnecessary details. From the output, you need the block count and block size....  Block count:              19506168  Reserved block count:     975308  Free blocks:              13750966  Free inodes:              4263842  First block:              0  Block size:               4096  ...Multiplicating these values will give the partition size in bytes. The above numbers happen to be a perfect multiple of 1024:$ python -c 'print 19506168.0 * 4096 / 1024'78024672.0Since you want to shrink the partition by 15 GiB (which is 15 MiB times 1 KiB):$ python -c 'print 19506168.0 * 4096 / 1024  -  15 * 1024 * 1024'62296032.0As resize2fs accepts several kinds of suffixes, one of them being K for 1024 bytes, the command for shrinking the partition to 62296032 KiB becomes:resize2fs -p /dev/mapper/ExistingExt4 62296032KWithout unit, the number will be interpreted as a multiple of the filesystem's blocksize (4096 in this case). See man resize2fs(8)