Utilizing dump/restore to migrate data to a larger drive is one of the easiest and fool proof methods to perform a hard drive upgrade in FreeBSD.
This guide is assuming that you have a vanilla FreeBSD 4.11 install on the primary drive, and a secondary drive setup with the label as /backdrive. This logic should apply with FreeBSD 4, 5, 6, 7.
Here is how we do this:
First, lets just do this step by step, so lets dump the / partition. This is to be used per partition, so when you do df, and you see multiple partition, do this for each partition. But as this server only has 1 partition, simply do:
dump 0f - / > root.dmp
Transfer over the file to the new server:
scp root.dmp [email protected]:/tmp
Next, on the new server, cd into the directory we’ll be restoring, and begin the restore:
cd /backdrive restore -rf /tmp/root.dmp
Fix the disk label and make /backdrive the / partition to boot:
# Notice we're modifying this for the second disk disklabel -e -f ad1s1 # Change: disk: ad1s1 to ad0s1 # And change: e: 154199170 2097152 4.2BSD 2048 16384 89 # (Cyl. 130*- 9728*) # To: a: 154199170 2097152 4.2BSD 2048 16384 89 # (Cyl. 130*- 9728*)
Then fix fstab to point to /dev/ad0s1a for /.
Extended notes on disklabel:
Ok, there is a small science with disklabel. But just watch to 2 things:
1. The e: is the root partition on the second drive. So in disklabel:
change e: to a: (as a: is the default root partition on freebsd).
2. Now you have to match up whats showing in disk label to what is showing in fstab:
Before: 8 partitions: <-- (figure out this nightmare) # size offset fstype [fsize bsize bps/cpg] b: 4194304 0 swap # (Cyl. 0 - 261*) c: 71119692 0 unused 0 0 # (Cyl. 0 - 4426*) e: 262144 4194304 4.2BSD 2048 16384 94 # (Cyl. 261*- 277*) f: 524288 4456448 4.2BSD 2048 16384 94 # (Cyl. 277*- 310*) g: 524288 4980736 4.2BSD 2048 16384 94 # (Cyl. 310*- 342*) h: 65614668 5505024 4.2BSD 2048 16384 89 # (Cyl. 342*- 4426*) After: 8 partitions: # size offset fstype [fsize bsize bps/cpg] b: 4194304 0 swap # (Cyl. 0 - 261*) c: 71119692 0 unused 0 0 # (Cyl. 0 - 4426*) a: 262144 4194304 4.2BSD 2048 16384 94 # (Cyl. 261*- 277*) f: 524288 4456448 4.2BSD 2048 16384 94 # (Cyl. 277*- 310*) g: 524288 4980736 4.2BSD 2048 16384 94 # (Cyl. 310*- 342*) h: 65614668 5505024 4.2BSD 2048 16384 89 # (Cyl. 342*- 4426*)
And with fstab, I just have to verify each label by testing it and figuring out which is which.