FreeBSD: Moving To A Larger Harddrive

[ad#Google Adsense]

Moving to a Larger Hard Drive

Applicable to: FreeBSD 4.3 and Higher

This Sheet describes the procedure I used to move my company’s FreeBSD system to a larger hard drive.

1. Verify that the system supports two hard drives. If not, rebuild the kernel with support for two hard drives:

# ATA and ATAPI devices

device ata0 at isa? port IO_WD1 irq 14

device ata1 at isa? port IO_WD2 irq 15

device ata

device atadisk # ATA disk drives

2. Shutdown and install the additional drive as the slave on the primary IDE controller. Be sure to set the existing drive from ‘single’ to ‘master.’

3. Boot to single user mode:

ok boot -s

# fsck -p

# mount -u /

# mount -a -t ufs

# swapon -a

4. Run sysinstall:

# /stand/sysinstall [This is now just sysinstall on newer versions

1. Choose ‘Configure,’ then ‘Fdisk’ from the menu, then choose drive ‘ad1.’

2. In the FDISK Partition Editor, choose ‘A’ to use the entire disk, then choose ‘W’ to write the changes to disk. Press ‘Q’ to continue.

3. Choose ‘Standard’ at the “Install Boot Manager” dialog box.

4. Back at the sysinstall menu, choose ‘Label’.

5. In the Disklabel Editor, create the following partitions:

ad1s1a /mnt 512MB as UFS

ad1s1b swap 512MB as swap

ad1s1e /mnt/usr remaining as UFS

Note: To get partition ‘a’, tell Disklabel Editor the mount point is ‘/’, then change it to ‘/mnt’ using the ‘M’ option.

Choose ‘W’ to write changes to disk, then choose ‘Q’ to continue.

6. Exit sysinstall.

5. If the new filesystems aren’t automatically mounted, mount them by hand:

# mount /dev/ad1s1a /mnt

# mount /dev/ad1s1e /mnt/usr

6. Copy the existing filesystems:

# tar clf – -C / -X /mnt . | tar xpvf – -C /mnt

# tar clf – -C /usr . | tar xpvf – -C /mnt/usr

7. Shutdown and remove the old hard drive. Be sure to set the new drive from ‘slave’ to ‘single.’

8. Boot to single user mode:

ok boot -s

9. If softupdates are compiled into the kernel, enable soft updates on the new drive:

# tunefs -n enable /usr

10. Mount the remaining filesystems:

# fsck -p

# mount -u /

# mount -a -t ufs

# swapon -a

11. Verify that all of the filesystems are properly mounted:

# mount

/dev/wd0s1a on / (ufs, local, writes: sync 8 async 204)

/dev/wd0s1e on /usr (ufs, local, soft-updates, writes: sync 366 async 13493)

procfs on /proc (procfs, local)

12. Reboot and observe startup messages to ensure the system is functioning properly.

[ad#Google Adsense]