Attaching a new hard drive
Plan the layout of the file system with the
Partition the new hard drive
Format the new partitions
Test the new space
Copy data from old to new partition
Remove old data (optional)
Here is a longer version for my recipe.
Plan the new file system. Where would you
like to use the new space? Do
to print a summary of
free/used space on each of the existing mounted partitions. Do
directories to find their size.
For example, I would
consider using new hard drive space in one of the following mount
Here is why.
is supposed to survive any upgrade of Linux. It is nice to have it
on a separate partition because I can even reformat other partitions
without affecting my local contents stored in /usr/local.
I surely want it of the type "ext2", “ext3” or
contains user data. Surely, it is the data that deserves the most
care. It is obviously supposed to survive any upgrade of Linux. Wow,
obviously I want it on a separate partition. The type is normally
"ext2", “ext3” or "raiserfs".
is a non-standard Linux directory. I may keep my MP3 (music) files
there. Those tend to be large.
Another non-standard directory. If I dual boot, I would consider
making an extra partion of the type "DOS FAT32" or similar
so as to share files between MS Windows and Linux transparently
(both ways). I would configure all the Windows-based programs to use
this "drive" as the default location for all
user-generated files. I could even have "mp3s", "cds"
and other such directories in this location. The serious drawback of
this approach--MS Windows may insist on messing up with this
partition on re-install.
Partition the new hard drive. For example,
if my new harddrive is the slave on the second IDE interface
(perhaps the "fourth" IDE drive), I could use:
or the more
old-fashioned (and standard) tool:
If your drive is not
"hdd" adjust the above command as needed.
-- first ide master (whole disk)
-- first ide slave
-- second ide master
-- second ide slave
-- first scsi (whole disk)
-- second scsi (whole disk)
-- sixteenth scsi (whole disk)
For other disks,
Most of the time, I
want my Linux partitions to be of the type ext3 ("Linux").
Partitioning can be
tricky--if you never have done it, read man
fdisk and man
cfdisk. It is very easy to delete a
partition with all your data. Make sure you know which disk you are
does not make any changes to the hard drive until I write the new
partition layout. So if I make a bad mistake, I can always quit
without writing. I write the layout to the drive only when I am
Format each partition. For example, to
format the first partition, while checking for bad blocks (-c), I
-c -t ext2 /dev/hdd1
Test the new partitions around. Mount the
new partitions manually (the mount directory must exist and be
empty). Copy a bunch of files to each partition. View/edit a couple
of random files. Delete them all.
Copy data. Optional--only if you would like
to move data from an old partition to a new partition. Go to the
single-user mode (init
1). Mount the new partition manually.
Copy the data from the old partition to the new partition. Careful
with the old data, you probably don't want to lose it if you made a
mistake, so I wouldn't delete it yet--I rename the top level
directory appropriately. E.g.,
-R /usr/local/ /mnt/hdd1/
Edit the file /etc/fstab.
Modify it to reflect your new file system layout. Perhaps, insert
the mountpoint for the new partition(s) or modify any old
mountpoints as needed. For example, if moving /usr/local
to its own partition, I would need to add to add a line like this:
/usr/local ext2 defaults 1 2
Reboot and test. The alternative to reboot
is to unmount old and mount new mount points. For example:
but hard reboot may be
a more rigorous test of the new layout.
Remove old data. After a few days, when I
have the confidence everything is really working fine, I delete the
old data (e.g., the directory /usr/local.oldbackup_of_2001-04-21).