29

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 $size 

How 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?

1 Answer 1

46

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, so we can calculate the result in KiB:

$ python -c 'print 19506168.0 * 4096 / 1024' # python2 $ python -c 'print(19506168.0 * 4096 / 1024)' # python3 78024672.0 

Since 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' #python2 $ python -c 'print(19506168.0 * 4096 / 1024 - 15 * 1024 * 1024)' #python3 62296032.0 

As 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 62296032K 

Without unit, the number will be interpreted as a multiple of the filesystem's blocksize (4096 in this case). See man resize2fs(8)

4
  • 4
    man resize2fs: Optionally, the size parameter may be suffixed by one of the following the units designators: 's', 'K', 'M', or 'G', for 512 byte sectors, kilobytes, megabytes, or gigabytes, respectively. May be simpler than doing block calculations. Commented Jun 7, 2015 at 9:53
  • 1
    Aren't you missing a k at resize2fs -p /dev/mapper/ExistingExt4 62296032 ? Commented Jul 19, 2015 at 21:37
  • @SopalajodeArrierez You are right, a capital K was missing. Without this letter, resize2fs should complain in my case as the size is larger than the actual disk. Commented Jul 19, 2015 at 22:40
  • 2
    dumpe2fs doesn't report the partition size; it really reports the size of the file system. (Which is good, because it's probably what you want.) Commented Jul 4, 2018 at 11:25

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.