Vmware’s esxi server lets you convieniently Add and remove virtual Hardware on a GuestOS via the intuitive Vcenter or Vsphere Interface. However once a piece of virtual harder is added to a GuestOS, that guestOS still need to handle the installation of the hardware like it normally would.

Lets walk through installing a new harddrive on a fedora Guest OS.
The first step is to add the new virtual drive. To do this, right click on the GuestOS in Vcenter or Vsphere. Select Edit Settings. In the popup Click Add. Choose Hard Disk and follow the prompts.

Now its time to add the hardware in the guest os. Click the console tab in Vcenter.

Before you format the NEW hard drive, you need to partition it as a Linux file system. Let’s use fdisk utility to partition the NEW hard drive.

[root@localhost root]# fdisk /dev/sdb

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

Type m to see the menu first.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):

Type p to print the current partition table.

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Notice it has an empty partition table since it’s a brand NEW hard drive.

Type n to add new partition and p to choose primary partition

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p

Type 1 for first partition and press enter for first cylinder and enter again for last cylinder to accept the default.

Partition number (1-4): 1
First cylinder (1-19457, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19457, default 19457):
Using default value 19457

Command (m for help):

Type p again to print current partition table.

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1             1     19457 156288321   83  Linux

Command (m for help):

Notice, now we have Linux file system created in the partition table.

To save this new partition table, type w.

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

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost root]#

Notice, you have also exited from fdisk utility.

Now that you have created Linux partition, it’s time to format the partition on the hard drive.

Let’s use mkfs.ext4 utility to format the partition as EXT3 file system which is EXT2 file system with journaling capabilities.

Also let’s label the partition as /home2

[root@localhost root]# mkfs.ext4 -L /home2 /dev/hdb1
mke2fs 1.34 (25-Jul-2003)
Filesystem label=/home2
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19546112 inodes, 39072080 blocks
1953604 blocks (5.00%) reserved for the super user
First data block=0
1193 block groups
32768 blocks per group, 32768 fragments per group
16384 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 (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost root]#

In order to mount new partition labeled /home2 automatically during the reboot, type following line in red in the /etc/fstab file

[root@localhost root]# vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
LABEL=/home2            /home2                  ext4    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda6               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/cdrom1             /mnt/cdrom1             udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/dvd                /mnt/dvd                udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/dvd1               /mnt/dvd1               udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0
/dev/sda1               /mnt/sda                auto    noauto,owner,users 0 0
/dev/sdb1               /mnt/sdb                auto    noauto,owner,users 0 0
/dev/sdc1               /mnt/sdc                auto    noauto,owner,users 0 0

BTW, 1 in the fifth field is used to determine if this filesystem will be backed up by the dump command and 2 in the sixth field is used to determine if this filesystem will be checked by the fsck program at the reboot time. Normally 1 is used for root filesystem (/) and 2 is used for non-root file system (/home2).

It’s almost done but before you reboot the system. Make sure to create a directory “/home2” as a mount point.

[root@localhost root]# mkdir /home2
[root@localhost root]#

Now, it’s done! Reboot the system and see if the partition on the NEW hard drive has been mounted.

[root@localhost root]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda5              70G   57G  9.7G  86% /
/dev/hda3              99M   55M   40M  59% /boot
/dev/sdb1             147G   33M  140G   1% /home2
none                  252M     0  252M   0% /dev/shm
[root@localhost root]#

Thats it!

Based on http://fedoranews.org/tchung/storage/