DEV Community

Cover image for Add hard disk to VMware CentOS 7 VM
Jirawat Uttayaya
Jirawat Uttayaya

Posted on

Add hard disk to VMware CentOS 7 VM

There are two easy steps to add a hard disk for a VMware CentOS 7 VM.

  1. Assign a new hard disk in VMware vSphere
  2. Configure the new hard disk in CentOS

Assign hard disk in vSphere

  1. In VMware vSphere, right click on the VM and select "Edit Settings..."
    VMware edit settings

  2. In the "New device:" section, select "SCSI Controller", and click the "OK" button. Note, there is a hard limit of 4 SCSI Controllers per VM.
    VMware SCSI Controller

  3. Right click "Edit Settings..." again and select "New Hard Disk"
    VMware New Hard Disk

  4. Input the byte size of the new hard disk (in this example, 5 GB). In the "Virtual Device Node" section, assign the new SCSI controller number. Click the "OK" button.
    VMware Assign SCSI

Configure new hard disk in CentOS

  • SSH into the CentOS VM and sudo to root
    sudo su -

  • List the block device to see the newly assigned vSphere hard disk.
    lsblk
    CentOS lsblk
    If you do not see the vSphere hard disk, force a rescan

for host in $(ls -1d /sys/class/scsi_host/*); do echo "- - -" > ${host}/scan ; done
for device in $(ls -1d /sys/class/scsi_disk/*); do echo "1" > ${device}/device/rescan ; done

Enter fullscreen mode Exit fullscreen mode
  • Format the disk partition. Get the device name from the previous lsblk output
    fdisk /dev/sdb
    See the screenshot for the options you should pick
    n (new partition)
    p (primary)
    (Press ENTER) (Use default partition number)
    (Press ENTER) (Use default first sector)
    (Press ENTER) (Use default last sector)

    t (change the partition type)
    8e (Linux LVM)

    w (write)

    CentOS fdisk

  • List the block device again to display the new disk partition /dev/sdb1
    CentOS lsblk2

  • Initialize the physical volume
    pvcreate /dev/sdb1
    pvs (to display the new physical volume)
    CentOS pv

  • Create the volume group
    vgcreate vgBackup /dev/sdb1 (vgBackup is just an name for this example. The volume group name can be whatever you want)
    vgs (to display the volume group)

  • Create the logical volume for the volume group
    lvcreate -n lvBackup -l +100%FREE vgBackup (lvBackup is just an name for this example. The logical volume name can be whatever you want)
    lvs (to display the logical volume)
    CentOSlv

  • Construct an XFS filesystem on the new logical volume
    mkfs.xfs /dev/vgBackup/lvBackup
    CentOS mkfs

  • Mount a Unix directory to the logical volume
    Edit the text file /etc/fstab and add the line below:
    /dev/vgBackup/lvBackup /backup xfs defaults 1 2

    mkdir -p /backup
    mount /backup
    df -h (to display the new directory)
    CentOS fstab

To learn more about Unix Logical Volumes, go to official RedHat LVM docs

Top comments (3)

Collapse
 
bbhide profile image
Bhavesh bhide

This steps worked like a charm. The meta comments are so much helpful without making the solution too long! Love it

Collapse
 
amaneer94 profile image
Aman Ullah

You saved my day.

Collapse
 
randallf profile image
randallf

Very clear, worked the first time! Thanks!