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]