Google Site SearchFN Site Search FN Blog Login FN Blog Login
Site Navigation:
 
 

HOWTO add a second hard drive in Fedora Core system

by Thomas Chung on Sep 02, 2004 (UPDATED 2004-09-07)

In this article, I would like to cover a basic HOWTO installing a second hard drive to expland your storage needs.

It's been about a year since I purchased my new Linux System and I feel my 80Gb internal hard drive is running out of space already. So I've decided to purchase a new 160Gb internal hard drive and install it as a second hard drive. But how do I format and mount the second hard drive in existing Fedora Core system? Let's look at the process step by stop.

Reference: http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/admin-primer/s1-storage-rhlspec.html

First, install the NEW hard drive as a slave drive. You might need to remove a jumper from the drvie to make it a slave drive. Also make sure to plug BLACK color connector to your OLD drive which indicates it's a master drive and plug GRAY color connector to your NEW hard drive which indicates it's a slave drive. See the Installation Guide comes with the hard drive for more information.

Don't forget to plugin in 4-pin power connector on both hard drives and power on the computer.

Check the BIOS to make sure your computer detects both drives.

Now, 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/hdb

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/hdb1             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.ext3 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.ext3 -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                  ext3    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/hdb1             147G   33M  140G   1% /home2
none                  252M     0  252M   0% /dev/shm
[root@localhost root]#
Congratulation, you've added the second hard drive in your Fedora Core system successfully!
UPDATE 2004-09-07
Some of our readers asked me how to write files on newly created partition such as /home2 as a user. All you need to do is to create a directory and set permission to own by the user.

For example..

[root@localhost root]# cd /home2
[root@localhost root]# mkdir tchung
[root@localhost root]# chown -R tchung.tchung tchung