Home
Interests
Photos
Favorites

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 expand 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 drive 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 plug in 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

Copyright 2003-2004 FedoraNEWS.ORG
 

Questions or problems regarding this web site should be directed to abeckman@outdoorssite.com.

Copyright 2008 Art Beckman. All rights reserved.

Last Modified: March 9, 2008