how to calculate correct values for resize2fs
Jelle de Jong
jelledejong at powercraft.nl
Sat Jun 27 13:18:07 UTC 2009
Bodo Thiesen wrote:
> 1. Please don't CC to poster if you answer, we are all on this list and
> get the messages anyways.
Sorry I just hit the reply to all button on my MUA
> 2. And please don't full-quote if not *really* necessary.
Ok
> 3. From your other mail:
> > The problem is I have to automate this process
> That's an important information you forgot to mention in the initial
> post ;)
Hmm I tough the question was clear engough sorry for that
Ok I seems to have missed a part and that is that after the resizing of
the file system I have to resize the partition to make the free space.
Then I have to make the file system fit the partition again, and after
that I can make a new partition in the free space.
So I set up an test enviorment and started calculating and testing, I
think I now understand how to calculate values for resize2fs.
However I am now stuck on resizing the partition after the file system
has been resized. I hope I am now not two off-topic since the question
is now not resize2fs related. Some checks on the calculation would be
nice too.
Please see:
dd count=102400 bs=1024 if=/dev/zero of=temp
/sbin/parted --script temp \
mklabel msdos \
mkpart primary 0 50% \
mkpart primary 50% 100% \
toggle 1 boot \
print
sudo losetup /dev/loop0 temp
fdisk -ul /dev/loop0
Disk /dev/loop0: 104 MB, 104857600 bytes
4 heads, 32 sectors/track, 1600 cylinders, total 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x0000cef3
Device Boot Start End Blocks Id System
/dev/loop0p1 * 32 102399 51184 83 Linux
/dev/loop0p2 102400 204799 51200 83 Linux
echo "32*512" | bc
16384
losetup -o 16384 /dev/loop1 /dev/loop0
echo "32*102400" | bc
3276800
losetup -o 3276800 /dev/loop2 /dev/loop0
sudo losetup -a
fdisk -l /dev/loop0
mkfs.ext2 /dev/loop1
mkfs.ext4 /dev/loop2
mkdir disk1
mkdir disk2
sudo mount /dev/loop1 disk1/
sudo mount /dev/loop2 disk2/
mount | grep disk
/dev/loop1 on /home/jelle/disk1 type ext2 (rw)
/dev/loop2 on /home/jelle/disk2 type ext4 (rw)
sudo touch disk1/test1
ls -hal disk1/
total 21K
drwxr-xr-x 3 jelle jelle 1.0K 2009-06-27 14:15 .
drwx--x--x 96 jelle jelle 8.0K 2009-06-27 14:14 ..
drwx------ 2 root root 12K 2009-06-27 14:13 lost+found
-rw-r--r-- 1 root root 0 2009-06-27 14:15 test1
sudo touch disk2/test2
ls -hal disk2/
total 21K
drwxr-xr-x 3 jelle jelle 1.0K 2009-06-27 14:15 .
drwx--x--x 96 jelle jelle 8.0K 2009-06-27 14:14 ..
drwx------ 2 root root 12K 2009-06-27 14:13 lost+found
-rw-r--r-- 1 root root 0 2009-06-27 14:15 test2
sudo umount /dev/loop1
sudo umount /dev/loop2
losetup -d /dev/loop1
losetup -d /dev/loop2
losetup -a
/sbin/parted --script temp \
mklabel msdos \
mkpart primary 0 100% \
toggle 1 boot \
print
fdisk -ul /dev/loop0
echo "32*512" | bc
16384
losetup -o 16384 /dev/loop1 /dev/loop0
mkfs.ext2 /dev/loop1
fdisk -l /dev/loop0 | head -n 2 | tail -n 1 | awk '{ print $5 }'
104857600 # bytes
dumpe2fs -h /dev/loop1 | grep "Block size:" | awk '{ print $3 }'
1024 # blocksize
echo "104857600/1024^2" | bc
100 # MiB
echo "104857600/1024" | bc
102400 # filesystem blocksize
echo "16*1024^2" | bc
16777216 # bytes of 16 MiB
echo "16777216/1024" | bc
16384 # filesystem blocksize
echo "102400-16384" | bc
86016 # to get a 16 MiB free space
echo "2*1024^2/1024" | bc
2048 # 2 MiB extra for shrinking
echo "102400-16384-2048" | bc
83968 # to get a 18 MiB free space
# check the filesystem
e2fsck -f /dev/loop1
# shrink the filesystem
resize2fs /dev/loop1 83968
# check new block count
dumpe2fs -h /dev/loop1 | grep "Block count:" | awk '{ print $3 }'
83968 # block count
# calculate the resize of the partition
fdisk -l /dev/loop0 | head -n 2 | tail -n 1 | awk '{ print $5 }'
104857600 # bytes
echo "16*1024^2" | bc
16777216 # bytes of 16 MiB
echo "104857600-16777216" | bc
88080384 # bytes
/sbin/parted --script /dev/loop0 \
resize 1 0 88080384B \
print
Error: File system has an incompatible feature enabled. Compatible
features are has_journal, dir_index, filetype, sparse_super and
large_file. Use tune2fs or debugfs to remove features.
# help!
dumpe2fs -h /dev/loop1 | grep "Filesystem features:"
Filesystem features: ext_attr resize_inode dir_index filetype
sparse_super
tune2fs -O ^ext_attr /dev/loop1
Clearing filesystem feature 'ext_attr' not supported.
# partition table of /dev/loop0
sfdisk -d /dev/loop0
/sbin/parted --script /dev/loop0 print
Model: Unknown (unknown)
Disk /dev/loop0: 105MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 16.4kB 105MB 105MB primary ext2 boot
# grow the filesystem to fit the partition
resize2fs /dev/loop1
# then I need to create a new 16 MiB partition...
Best regards,
Jelle
More information about the Ext3-users
mailing list