[CentOS] Upgrading Drive, Best Practice?

Tue Aug 9 03:03:05 UTC 2005
Bryan J. Smith <b.j.smith at ieee.org>

On Mon, 2005-08-08 at 19:03 -0700, Ajay Sharma wrote:
> Hi,
> This might sound like a n00b question, but I've honestly never done this 
> with a Linux machine...  (it is running Centos3)

It's not a noob question.  It comes up regularly.

> How would you do it?

I regularly do this on Linux and Solaris (and should be applicable to
just about any other System-V UNIX flavor -- especially step #3) using
the following procedure.

I recommend you do it from run-level 1 (or even init=/bin/sh), but it's
not totally necessary (it all depends on what files are open and/or what
is running).

  1.  Slice (partition) new disk and create new filesystems

NOTE: If you're using filesystem labels (e.g., e2label), we sure you
enter them appropriate under #4 below.  If you configure software RAID,
remember your configuration files.

  2.  Create a new mount point, say /newroot, and mount new filesystem
tree under /newroot

NOTE A:  You do _not_ need a 1:1 filesystem setup, you can change your
filesystem organization if you wish.

NOTE B:  Also remember that /newroot/tmp, if a separate filesystem,
should be chmod 1777, although #3 might correct this anyway.

  3.  Copy all existing data as follows ... (pretty much universal to
all System-V UNIX flavors) ...

  for i in / /fs1 /fs2 ...; do
    cd $i
    find . -mount | cpio -pmdv /newroot$i
  done

You can make this one line with:  
  # for i in / /fs1 /fs2 ...; do cd $i; find . -mount | cpio -
pmdv /newroot$i; done

NOTE A:  The list of filesystems should be the _original_, not the new
ones.  Using the "-mount" (sometimes "-xdev" on other implementations)
option to find does not cross filesystems, hence why you pass the
existing filesystems.  The new tree will be populated as appropriate.

NOTE B:  "Sparse files" may be expanded after this operation and take up
more disk space, depending on the filesystem(s) in use.

  4.  Modify filesystem (e.g., /newroot/etc/fstab), bootloader
(e.g., /newroot/etc/grub.conf or lilo.conf),  etc... as appropriate,
including any LVM/MD disk organization.

  6.  Re-install bootloader (e.g., GRUB/LILO) to new disk

NOTE:  You _may_ need to boot the distro's CD and recovery mode after
you remove the former disk for proper BIOS-Linux device disk mapping.
I've been able to do so in LILO without, but GRUB always seems to never
likes the fact that my mappings don't line up until I make them actual
(so I typically use the rescue CD).


-- 
Bryan J. Smith     b.j.smith at ieee.org     http://thebs413.blogspot.com
----------------------------------------------------------------------
The best things in life are NOT free - which is why life is easiest if
you save all the bills until you can share them with the perfect woman