I’ve been using 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 Windows 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…
You are a god among men, all hail M-Topps and his infinite wisdom sauce! *horns* *angels* *a goddamn torrent of blog hits and comments*
Great Document…. It saved my lot of time :))
Thanks, brilliant work.
This is a really informative doc, and helped me to configure the additional disk as well as understand some related topics of Linux disk management.
Still useful, helped me add another one today
Thank you – I keep coming back to this document whenever I need to add a disk/filesystem to my vmware linux m/c.
For a newbie that had to learn Linux in two days, people like you who write these easy to understand articles are worth your weight in gold! Well written, clear and concise. Thanks, much appreciated!
Thank you for info
Excellent article – thank you for taking the time to put this together. Well written and concise…a must read for intermediate .nix admins (like me)
Its really useful.
Helpful for the addition of a hard disk given my limited Linux system admin. Knowledge.
It’s a good document and I got the help I needed.
I’ve come a long way with utilizing VM technology since that day you introduced it to me in that training class in Reston. This is exactly what I needed, thanks. Kudos to Alem for pointing me to your site.
brilliant. thank you.
Outstanding work…….. Good!! ROCK ON!!
Awsome.. you are such a blessing for me brother….i was stuck in office..thanks love you …Hassan Azmat
Sir thank you very much for your straightforward solution. 🙂
I love this article!!!
This is a great work ad you have made it so simple. Great job, thanks a lot for the article. It has helped me a lot.
Thanks and Regards,
So useful! Thanks!
Brilliant! You need not know everything and at some point you’ve got to find a way out through some specific problem, though your are not an expert in that area…..expert references like this which is simple and to the point, is a great respite!
excellent tutorial really helpful for linux users
Thanks. Great Job.
Pingback: Add a second disk to a VMWare VM | Technical notes
starting with no knowledge about linxu partitioning – all work finished in 2 minutes. Thanks!
Thank you for sharing this. It helped me to enable the second disk I created.
I would add that GParted might be preferred to create and format the partition. At least for people rather not using intimidating command-line fdisk. To use GParted:
sudo apt-get install gparted
Very informative. Has helped me a lot.Thanks very much.
Perfect! Thank you!
Nice Tutorial It helps me for creating the partition on VMware on Linux O/S
Thanks, it helps me a lot 🙂
Amazing Work…….Too Good…..Helped me a lot.
First of all, let me say that this was an enormous help. You’ve made my day 🙂
But I have a question, i added the thisk, just like you taught here, and everything went ok.
But now i want to copy a folder (+/- 18Gb) from Windows to my CentOS virtual machine. As i dont’t have enough free space on my first disk, the sda1, i will need to copy it directly to the disk i’ve just created right? Into its directory?
Before reaching here, i tried to expand the disk up to 100Gb, but then i have to mout the partition, can i reproduce the steps here for that? is it safe?
Thanks a lot,
Keep on with the good work 🙂
Thanks Matt, You made adding disk to VMware so easy, can’t thank you enough for it.
Keep up the Good work, Liked the Screenshots , clearly the best one on this topic while searching Google !.
Hey – great tutorial
Matt is there any way, we can increase the size of the sad1 itself?
Like in for new partition we provide ‘n’ as command. Is there any tweak that instead of providing ‘n’ we can merge the newly added disk into already existing sda1.
Thanks for your great work, Matt. Linux AND vmware newbie here. Trying to learn Oracle on a linux box – ran out of space after 20Gb and you saved my skin. I’m sending you good Internet karma – thanks again!
Really helpful article.
very very helpful … thanks a whole lot
The is a brilliant document. straight to the point without the lost of a sight. Well educative. Just finished mine with the doc and everything worked. To those of you who believed in open source and open minds I salute you all for your effort unable are able. thank you.
very useful, but in my case the VMDK disk is shared by 2 vms, how can I mount the same VMDK on the second VM without formatting it, and have the file written on the drive from the 1st vm accessible from the second drive
Very detailed and helpful. Thank you so much.
This is great documentation. For me the Virtual Disk was already added to the VM, I just needed to create the partition and mount it. With this document in hand it was just a cakewalk. Really great job. Thanks a lot. 🙂
This is great stuff though it is base on Vmware, I use this article to do the same in Virtual Box. Again thanks for the simplicity and clarification of adding the extra disk to vm there of in this article.
Thanks a ton for the great article! 🙂
Could you please add a note on how one can delete the new disk added to VMWare ?
I have deleted it via the menus, but unable to delete the partitions completely…
Thanks ever so much!
Perfect document ! Thanks man.
Really useful and informative steps indeed, precise and handy too.
Pingback: How add new disk to VMWare/VirtualBox for Linux box ? « Apps DBA notes