Mounting a new Partition in Linux (CentOS/RH) virtual image by adding new virtual storage

Sometime it may required to add a new virtual storage disk to an existing virtual image. Adding the virtual storage disk to an existing virtual image is part of the virtualization system and depending on your virtualization technology (HyperVisor, Xen, VMware…) you can easily add a new virtual storage disk to your VM however making that VM accessible to your existing OS needs little work. Here are the instruction of adding a new 100GB virtual storage partition to CentOS Linux machine:

Checking the disks with valid files system on Linux OS:
[root@liunxbox64 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
35G 3.2G 31G 10% /
tmpfs 935M 0 935M 0% /dev/shm
/dev/xvda1 477M 75M 377M 17% /boot

Note: you dont see any mounted partition as /dev/xvdb*

Listing disk partition in Linux:
[root@liunxbox64 ~]# cat /proc/partitions
major minor #blocks name

202 0 41943040 xvda
202 1 512000 xvda1
202 2 41430016 xvda2
202 16 104857600 xvdb <————– This is the partition available in Linux but not ready yet to use.
253 0 37330944 dm-0
253 1 4096000 dm-1

Above you can see that xvdb partition is available so we will try to make this parition part of Linux file system.

Creating partition with the fdisk command:
[root@liunxbox64 ~]# fdisk /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xd288a1a2.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054):
Using default value 13054

Command (m for help): p

Disk /dev/xvdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd288a1a2

Device Boot Start End Blocks Id System
/dev/xvdb1 1 13054 104856223+ 83 Linux

Command (m for help): x

Expert command (m for help): b
Partition number (1-4): 1
New beginning of data (1-209712509, default 63):
Using default value 63

Expert command (m for help): p

Disk /dev/xvdb: 255 heads, 63 sectors, 13054 cylinders

Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID
1 00 1 1 0 254 63 1023 63 209712447 83
2 00 0 0 0 0 0 0 0 0 00
3 00 0 0 0 0 0 0 0 0 00
4 00 0 0 0 0 0 0 0 0 00

Expert command (m for help): r

Command (m for help): p

Disk /dev/xvdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd288a1a2

Device Boot Start End Blocks Id System
/dev/xvdb1 1 13054 104856223+ 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Making sure the partition is created:

[root@liunxbox64 ~]# fdisk -l /dev/xvdb

Disk /dev/xvdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd288a1a2

Device Boot Start End Blocks Id System
/dev/xvdb1 1 13054 104856223+ 83 Linux
[root@liunxbox64 ~]# fdisk -l /dev/xvdb1

Disk /dev/xvdb1: 107.4 GB, 107372772864 bytes
255 heads, 63 sectors/track, 13053 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Setting Partition’s file system to ext4 type
[root@liunxbox64 ~]# mkfs.ext4 /dev/xvdb1

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214055 blocks
1310702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Editing /etc/fstab file to enter newly created ext4 partition:
Finding partition UUID:

[root@liunxbox64 ~]# blkid /dev/xvdb1
/dev/xvdb1: UUID=”269fe527-501d-4598-bc52-e0b862af249d” TYPE=”ext4″

Now editing /etc/fstab to include newly created partition UUID as below:

$ vi /etc/fstab
UUID=b24c297f-d468-45c6-b42e-97bae9cf0ef1 /hadoop2 ext4 errors=remount-ro 0 1

Mounting partition:
[root@liunxbox64 ~]# mkdir /hadoop2

[root@liunxbox64 ~]# mount /hadoop2

[root@liunxbox64 ~]# df -h /hadoop2
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 99G 60M 94G 1% /hadoop2
Verifying the partition is listed in Linux:
[root@liunxbox64 ~]# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
35G 3.2G 31G 10% /
tmpfs 935M 0 935M 0% /dev/shm
/dev/xvda1 477M 75M 377M 17% /boot
/dev/xvdb1 99G 60M 94G 1% /hadoop2 <————- Now the partition is listed here

Advertisements