On Mon, Aug 04, 2003 at 03:33:17AM -0400, Kevin Mark wrote:
> On Sun, 2003-08-03 at 17:31, alex wrote:
> > Suppose Debian was installed on hda with only two partitions, swap
> > and / and you have accumulated much data in /home.
> >
> > Later, you add another hard drive, hdb, and decided to place swap
> > and a separate /home partition on this new drive while keeping / on
> > the original hda.
> >
> > How would you create new swap and /home partitions om hdb so Debian
> > would use these instead of the original /home and swap?
> Hi Alex,
> This is the basic step -- THIS IS NOT TESTED. wait for a few GURUS to
> debug.
I wouldn't call myself a GURU, but I seem to have done this sort of
thing quite a lot recently...
> edit partition table with
> cfdisk /dev/hdb
> create file system with
> mkfs.ext2 /dev/hdb1
> mount new partition with
> mount /dev/hdb1 /mnt/home2
... assuming that /mnt/home2 exists; if not, either create it or just
use /mnt
> move data to new partition with
> mv /home/* /mnt/home2
Everyone has their own recipe for this, it seems... I prefer 'cp -a',
which preserves permissions, handles special files correctly, doesn't
ignore dot files, and stuff.
cp -a /home/* /mnt/home2
> get rid of old home directory with
> rmdir /home
if you used cp -a instead of mv:
rm -rf /home (gets rid of old stuff)
mkdir /home (you still need a /home as a mount point)
Note that:
rm -rf /home/* won't get rid of those pesky dot files
rm -rf /home/.* gets rid of a little bit too much...
> modify /etc/fstab to point to new partition with
your-favourite-editor /etc/fstab
> add "/dev/hdb1 /home ext2 ?????? 1 1" (not sure what to put for ????)
Make that "/dev/hdb1 /home ext2 defaults 0 2"
> make changes active with
umount /mnt/home2
mount /home
(no need to reboot!)
> the swap is similar:
> cfdisk /dev/hdb
(if you forgot to define a swap partition the first time you ran cfdisk)
> mkswap /dev/hdb2
Turn off swap while editing swap entry in /etc/fstab:
swapoff -a
> edit /etc/fstab by changing /dev/<old-swap> to /dev/hdb2
Turn on new swap:
swapon -a
(again, no need to reboot)
cfdisk tends to moan at you to reboot to make sure that the kernel
re-reads the partition table. IME this is a "safety message" which is
given irrespective of whether it's needed; if nothing is using the
disk in question (as is the case when partitioning a brand-new disk)
the kernel re-reads the partition table quite happily. You know it has
done this by the line that appears which messes up the screen layout
and is recognisable as similar to the lines in dmesg produced by the
kernel when it reads the partition table on bootup. If you don't see
such a line, you need to reboot immediately on quitting cfdisk, before
you do anything else. You still don't need to reboot at any other point.
> > Additionally, how could you best utilize the space gained by
> > transferring data from the original /home to the new /home partition?
Define 'best' - there are loads of possible answers here... For an
ordinary home PC I'd say just leave it in / and the system will use it
as it needs it.
To make available the space used by your original swap partition,
you'll need to use parted. Assuming your old swap is on /dev/hda1 and
your / is on /dev/hda2:
parted /dev/hda
p (prints out a listing of the current partition table. You need this
information for resizing)
rm 1 (deletes /dev/hda1)
resize 2 START END (START = what p gave you for Start on /dev/hda1
END = what p gave you for End on /dev/hda2
This resizes /dev/hda2 to include the space
originally used for /dev/hda1)
q (quit)
You'll need to boot off a rescue disk, install CD or something to do
this, as it is dangerous to do it on a mounted filesystem.
--
Pigeon
Be kind to pigeons
Get my GPG key here: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x21C61F7F