You have a 50G Amazon Elastic Block Storage device, or maybe a 50G Rackspace SSD Cloud Block Storage device that is running low on space. So you clone it and create a 100G drive. But when you mount it on your system, it still only shows 50G. What the #$%&!
This is because the partition and filesystem needs to be expanded to know it has more space!
Assuming that you have the larger drive already attached to your system, first verify the drive size vs the partition size:
[root@web01 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 20G 0 part / xvdb 202:16 0 100G 0 disk └─xvdb1 202:17 0 50G 0 part
Checking the output above, you will see that xvdb has 100G available, but the partition, xvdb1, has only 50G. I’ll outline how to expand the filesystem to use all the new space on this ext4 volume.
Unmount the disk if its currently mounted:
[root@web01 ~]# umount /dev/xvdb1
Confirm the drive does not have any filesystem errors:
[root@web01 ~]# e2fsck /dev/xvdb1
Now comes the nail biting part. We need to remove the partition, then recreate it so it will see the entire disk. This guide assumes there is only 1 partition on this drive. This will not remove the data, however never trust notes that you didn’t verify yourself. Make sure you have backups before proceeding!
[root@web01 ~]# fdisk /dev/xvdb d n p 1 enter enter t 83 w
Now, once the partition is recreated, you need to run another filesystem check:
[root@web01 ~]# e2fsck -f /dev/xvdb1 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/xvdb1: 13/3276800 files (0.0% non-contiguous), 251700/13107024 blocks
Then resize the filesystem:
[root@web01 ~]# resize2fs /dev/xvdb1 resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/xvdb1 to 26214055 (4k) blocks. The filesystem on /dev/xvdb1 is now 26214055 blocks long.
Finally, mount the volume and confirm it shows the correct space:
[root@web01 ~]# mount -a [root@web01 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 20G 0 part / xvdb 202:16 0 100G 0 disk └─xvdb1 202:17 0 100G 0 part /mnt [root@web01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 1.2G 18G 7% / tmpfs 496M 0 496M 0% /dev/shm /dev/xvdb1 99G 60M 94G 1% /mnt