VMWare
for a while now and I always get asked some common questions about it.
One of those is how to add a new virtual disk to a Linux virtual
machine. So in response to that, here are the steps to adding a new
SCSI based virtual disk to a CentOS Linux virtual machine. The steps
for adding a disk to a 视窗系统 machine is very much the same except you
would use the Disk Management utility from the Control Panel.
Step 1: Open virtual machine settings
Select your virtual machine, as you can see from the photo I selected
the Infrastructure virtual machine. Next press the “Edit virtual
machine settings’ to open the Virtual Machine Settings dialog.
Step 2: Add new hardware
From the “Virtual Machine Settings” dialog select the “Add…” button at
the bottom of the screen. From this dialog you can also modify how much
memory you dedicate to the machine when it boots.
Step 4: Select new hard disk
From this screen we can see the many types of hardware we can add to a
virtual machine. You can emulate just about any piece of hardware that
one can expect in a modern operating system. It definitely makes
testing with different configurations and devices much easier. For our
example we want to select “Hard Disk” and then select the “Next >”
button.
Step 5: Create the virtual disk
In the next screen we see the three options for adding a new disk. We
can “Create a new virtual disk”, this will create a brand new disk on
the guest operating system. The second option, “Use an existing virtual
disk”, allows you to mount a disk from another virtual machine. I like
to do this with my “source” drive. I have one virtual disk that I’ve
made that has all the Oracle and Linux CDs on it, that way I can just
mount it to the machine I need when I have to do a new install instead
of copying the binaries I need across disks, its definitely a big time
saver. The last option is to “Use a physical disk”, this allows you to
mount a local physical disk to the operating system. This option is
akin to NFS mounting a drive to a virtual machine. To add a new disk we
select the “Create a new virtual disk” option and select the “Next
>” button.
Step 6: Select type of disk
Next we want to select the type of disk. I’ve been using VMWare for a
long time and agree that the recommended Virtual Disk Type should be
SCSI. I don’t know why, but I’ve had much better success with the SCSI
virtual disks than the IDE ones. So in this step we want to select
“SCSI (Recommended)” and the “Next >” button.
Step 7: Set disk size and options
Now we want to set the size of the disk we are creating. One of the
nice features of VMWare is that you don’t have to allocate all of the
disk when you create it. So if you create a 40 GB disk it doesn’t have
to take it all right away, the disk will grow as your virtual machine
needs it. I will say this is a big performance hit you take when the
disk has to extend, but for most applications its OK. Also, I will warn
that if the virtual disk grows and there is no physical disk left on
the host operating system you will see a catastrophic failure and in
most cases both the host and guest operating systems lock up and become
unusable. (Don’t say I didn’t warn you) Lastly, you can split the files
into 2GB sizes, while this isn’t necessary, it just makes all the disks
much easier to manage and move around. For this step we want to set our
disk size (12 GB in this case), I chose not to allocate the disk space
right now (the machine has a 300 GB drive and has only 20 GB on it) and
Split disk into 2 GB files.
Step 8: Name the disk file
This is actually pretty simple in that you decide what you want to
physically call the disk and where to put it. .vmdk is the extension
for VMWare virtual disks. After we name the disk we can select the
“Finish” button which adds the disk to the virtual machine.
Step 9: Ensure new disk exists
So now we can see that the new disk has been added to the “Virtual
Machine Settings” within the selected virtual machine. From here the
disk acts just like it would if you added a new disk to a standalone
server. So we select the “OK” button to continue.
Step 10: Boot the virtual machine
From here we just start the virtual machine like we would normally,
either by selecting the button on the toolbar or selecting the “Start
this virtual machine” link.
Step 11: Virtual machine start up
The machine boots normally as it would any other time.
Step 12: Create the Partition
After we’ve logged in and accessed a terminal window as root (or
another user with root/sudo privs) we first want to run fdisk on the
newly created drive. In Linux the first SCSI drive is sda, the second
sdb, the third sdc, etc. since this was the second SCSI drive we added
to the system, the device is known as /dev/sdb
The first command we want to run is fdisk /dev/sdb (NOTE: Thanks to everyone that caught my typo here)
this utility works very much like the DOS utility of the old days and
allows you to create and manage partitions. To create a new partition
we enter the command n to create a new partition. This is going to be a primary partition p, and the first partition number 1.
Because I want this disk to consume the full 12 GB I specified earlier
we start at the first cylinder and end it at the last cylinder. We then
want to write the partition table with the new partition we have just
created so we enter the command w which writes the new table and exits fdisk.
Step 13: Format the partition
Now that we’ve create the partition, we now want to format the first
with the new file system. I’ve decided to use ext3 filesystem for this
disk, ext3 provides all the features of the classic ext2 file system
plus journaling which helps to prevent disk corruption in the event of
an improper shutdown and speeds up the recovery process. For a good
overview of Linux standard file systems check out this article:
http://linux.org.mt/article/filesystems
So, to format the new partition we enter the command mkfs -t ext3 /dev/sdb1. This command makes a new files system with the type t ext3 on the /dev/sdb1 partition, this is the first partition on the sdb disk.
Step 14: Create the mount point
Determine where you want to add the new virtual disk you’ve created. I
like to create a partition specifically for all the software I install
after the basic Linux install called /software to do that we run mkdir /software,
just a simple make directory command. Once that is complete we then
want to mount the newly created partition. Because we haven’t added the
partition to the /etc/fstab yet we have to mount it manually. To do that we run mount -t ext3 /dev/sdb1 /software.
To break down this command we run mount with the ext3 filesystem type,
the partition /dev/sdb1 to the directory /software. Pretty simple and
straight forward. To check that the partition is properly mounted we
run df -k which shows us the mounted partitions and the amount of available space.
Step 15: Open the fstab file
The fstab file holds all of the used disks and partitions, and
determines how they are supposed to be used by the operating system. So
we edit the file to add the newly created partition
Step 16: Modify the fstab for the new partition
After we open the fstab file in the previous step we add the following line:
/dev/sdb1 /software ext3 defaults 1 1
The first column is the partition name, the second is the default mount
point, the third is the filesystem type. The fourth is the mount
options, in this case I used default which mounts the drive rw, suid,
dev, exec, auto, nouser and asynchronous. The 5th and 6th options are
for the dump and fsck options. If dump is set to 1 the filesystem is
marked to be backed up, if you are going to have sensitive material on
the drive its a good idea to set it to 1. If fsck is set to greater
than 1, then the operating system uses the number to determine in what
order fsck should be run during start up. If it is set to 0 it will be
ignored such as in the case of a cdrom drive since its a solid state
disk. For more information on the fstab file check out this article:
http://www.tuxfiles.org/linuxhelp/fstab.html
Lastly, we write and quit the file with the :wq command.
So now that the fstab has been written the drive will be mounted and
unmounted when the machine is either started or shutdown. So there you
have it, the quick and dirty process for adding a brand new disk to a
virtual machine. Until next time…