[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Moving /home to its own partition.

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.


Be kind to pigeons
Get my GPG key here: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x21C61F7F

Attachment: pgpZV8uZoEle5.pgp
Description: PGP signature

Reply to: