How To Resize ext3 Partitions Without Losing Data | HowtoForge - Linux Howtos and Tutorials
# umount /dev/sda1
# fsck -n /dev/sda1
# tune2fs -O ^has_journal /dev/sda1
# e2fsck -f /dev/sda1
# resize2fs /dev/sda1 6000M # 改成 6G
The output is as follows:
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/sda1 to 1536000 (4k) blocks.
The filesystem on /dev/sda1 is now 1536000 blocks long.
Please take note of the amount of blocks (1536000) and their size (4k). We need that soon.
# fdisk /dev/sda
Type p d 1 n p 1
First cylinder (1-1305, default 1): 1
But we don't have a value for the last cylinder of our new partition. Fortunately, we can specify the size in kilobytes (K), so we calculate the size like this:
We multiply the amount of blocks from the resize2fs output (1536000) by the size of a block (4k), and to go sure the partition is big enough, we add 3 to 5% to it (3% was enough for me, but if you want to go sure take 5%):
1536000 * 4k * 1.03 = 6328320k
So we prepend that value with a + sign and replace the small k with a capital one (K) and enter it:
Last cylinder or +size or +sizeM or +sizeK (1-1247, default 1247): +6328320K
Type x f r to fix partition order.
Our original /dev/sda1 had the bootable flag (see the fdisk -l output from the beginning of this chapter), so we must add it to our new /dev/sda1 again:
Command (m for help): a
Partition number (1-5): 1
Now let's write our new partition table and exit fdisk.
# fsck -n /dev/sda1
# tune2fs -j /dev/sda1
# e2fsck -f /dev/sda1
# reboot