Wednesday, 9 May 2012

Add a new hard drive to your Oracle Developer Days VM

For those of you who end up using the Oracle Developers Day VM for more that just demo's but playing with other things too, will find that at some point, you'll need more space. (Like I did)   Today's post is about just that.  We're going to add a new VMDK drive to our virtual machine and configure it so its available to you in the machine.

First thing we want to do is to have a list of the devices in your linux box.  This will save you searching for it once you add it later.

[oracle@localhost ~]$ cd /dev
[oracle@localhost dev]$ ls -al hd*
brw-r----- 1 root disk  3,  0 May  4 05:50 hda
brw-r----- 1 root disk  3,  1 May  4 05:51 hda1
brw-r----- 1 root disk  3,  2 May  4 05:50 hda2
brw-r----- 1 root disk  3, 64 May  4 05:50 hdb
brw-r----- 1 root disk  3, 65 May  4 05:51 hdb1
[oracle@localhost dev]$ 

Now we can power down the machine and add the drive.

You need to make sure your VM is powered down so we can make changes to the server.

Checking the storage frame of this VM, we can see that there is only two drives connected.  Double clicking on the storage frame pops up the storage window where we can add the drive.

Clicking on add drive, asks us if we want to add an already built drive or add a new one.  We want to add a new one.

We then choose a VMDK to use.  There are other types, but we're using this one for now.

On the next page of the wizard, we choose dynamically allocated. which will size the disk to just the be the size of the data that is in it.  So if there is no data on the drive, this file will be tiny.

Next we give it a name and size.

Clicking ok to finish the wizard show the new drive added.  One las thing we do is to change the type of the hard drive to be a secondary slave.

And there we have it, one file added.  This is useless to us though until we go in and format configure it in linux, then bring it online so its of use to us.

Ok, Now we have a drive attached to our virtual machine.  All that remains is for us to configure it in in the machine so it is formatted and mounted.

Firing up the VM as normal, we want to SU as root for the next phase.  The first thing we need to do is to format the disk.

[oracle@localhost ~]$ cd /dev
[oracle@localhost dev]$ ls -al hd*
brw-r----- 1 root disk  3,  0 May  4 05:50 hda
brw-r----- 1 root disk  3,  1 May  4 05:51 hda1
brw-r----- 1 root disk  3,  2 May  4 05:50 hda2
brw-r----- 1 root disk  3, 64 May  4 05:50 hdb
brw-r----- 1 root disk  3, 65 May  4 05:51 hdb1
brw-r----- 1 root disk  3, 65 May  4 05:53 hdd
[oracle@localhost dev]$ 

Now looking at the top device listing versus this one we can see that the new device that has been add is /dev/hdd

This disk that we've added is blank and raw so the first thing we need to do is to set up partitions and then format the disk.

[oracle@localhost dev]$ sudo fdisk /dev/sdd

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): 

Choose 'n' to create a new partition and then choose 'e' and then pick the defaults through that option.

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

Finally, when this comes back, choose the 'w' to write the partition table back to disk.

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

Calling ioctl() to re-read partition table.
Syncing disks.
[oracle@localhost dev]$  

Now we can build the file system on the disk we have partitioned with mkfs.

[oracle@localhost dev]$  sudo mkfs -t ext3 /dev/sdd
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
6111232 inodes, 12211400 blocks
610570 blocks (5.00%) reserved for the super user
First data block=0
373 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

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

[oracle@localhost dev]$  

Now you have a drive, but its not mounted anywhere so you still cant see it.    You will now need to create a mount point for your drive in the root file system.

[oracle@localhost ~]$ sudo mkdir -p /newdrive
[sudo] password for oracle: 
[oracle@localhost ~]$ 

 And lastly you can issue the mount command to mount the drive to that mount point.

[oracle@localhost ~]$ sudo mount -t ext3 /dev/hdd /newdrive
[oracle@localhost ~]$ 

Now you can list your drive with 'ls -al /newdrive' and it is listed and usable.  However, the next time, the machine is rebooted, you will not have this drive mounted.  We need to add a line to the file /etc/fstab to allow it to be mounted automatically.

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-hda2         swap                    swap    defaults        0 0
http://localhost:80     /home/oracle/dav        davfs   noauto,users    0 0
/dev/hdd                /newdrive               ext3    defaults        1 2     

Adding the line above to this file will allow the drive to be mounted each time the machine reboots.  

Now you have a drive which you can use for data or install other Oracle software on, like Oracle Golden Gate  to help synchronise data between databases.  Find out more about the Oracle developer day VM on OTN


Ian787 said...


Thank you for this useful post.

I managed to install a new hdd to my virtual machine, but it cannot detect the audio.

My laptop is an ultrabook.


Kristen12 said...

Ian how did you manage to install oracle? I use the newest mac pro couldn't manage to install anything :(((

Barry McGillin said...

The who idea is that you use a VM for install Oracle on. Download the Oracle Developer Days vm here and install it.

There is no recent Oracle installs for mac and afaik, there wont be anytime soon

பிறைதீசன் :: Praitheeshan said...

Your post is very useful.Thanks.
I'm new to linux.when i use bellow command
[oracle@localhost dev]$ sudo fdisk /dev/sdd

I'm getting following error
[oracle@localhost dev]$ sudo fdisk /dev/hdd
[sudo] password for oracle:
sudo: fdisk: command not found

plz , help to resolve this.


Barry McGillin said...

Its not an error, its asking for the password of the oracle user to invoke the fdisk command as root. When it asks for this, put in your oracle password

Krishna Mangal said...

try the following:

sudo /sbin/fdisk /dev/hdd

abhishek said...

very helpful!!

Dave Moten said...

are you mixing up /dev/hdd and /dev/sdd in this article? I suspect that where you wrote /dev/sdd you meant /dev/hdd...