Duplicate existing FreeBSD Server in VM

Simon Gao gao at schrodinger.com
Mon Dec 10 20:13:36 PST 2007

DAve wrote:
> Terry Sposato wrote:
>> Hi,
>> I have just installed a machine and have it setup running a web based CRM
>> solution. I want to have an exact duplicate of this machine running as a VM
>> for redundancy reasons. 
>> What is the best way to go about getting this exact machine transferred to
>> the VM? Both machines exist on the same network and will be able to talk to
>> each other, I have been thinking of a couple of different ways to get all my
>> data across which is the easy part, but I want to match everything that is
>> installed, base system, ports etc.
>> Anyone have any ideas or point me into the right direction?
> You can use dump over ssh easily enough, here are my notes from using it
> to create multiple production machines from a single test server. There
> are better ways I am sure, but this is quick and easy if you are
> familiar with FreeBSD installs.
> Note #1 In the first comment line I say to boot the live file system CD,
> that is what you would do in the VM, just as you would normally boot an
> installer CD, but use a Live filesystem CD instead.
> Note #2 I used several slices with sizes some may not agree with. It was
> a choice we made for various reasons, the servers have been running for
> three years. You may have more or less slices of varying sizes, adjust
> the steps below to your preferences.
> Note #3 You will need to check and WRITE DOWN which slice is which mount
> point, /, /var, /usr and so on. Your disks may be different if you
> choose not to create a seperate /tmp, or /var.
> I'll be out of the office for a week, but you can try and adjust as
> needed, it won't hurt anything and you can always overwrite and try
> again. WRITE IT DOWN.
> Works for us, I've used it several times, adjusting as needed for the
> system I am cloning.
> DAve
> ====================================================
> # boot live filesystem cd
> # use disklabel to check/create slices
> /stand/sysinstall
> /dev/ad0s1b    256mb   swap
> /dev/ad0s1a    256mb   /mnt/ufs.1    softupdates
> /dev/ad0s1e    256mb   /mnt/ufs.2    softupdates
> /dev/ad0s1d    256mb   /mnt/ufs.3    softupdates
> /dev/ad0s1f    all     /mnt/ufs.4    softupdates
> /dev/ad1s1d    20000mb /mnt/ufs.5
> # unmount the new slices
> umount /mnt/ufs.1
> umount /mnt/ufs.2
> umount /mnt/ufs.3
> umount /mnt/ufs.4
> umount /mnt/ufs.5
> # make newfs on each slice
> newnfs /dev/ad0s1a
> newnfs /dev/ad0s1e
> newnfs /dev/ad0s1f
> newnfs /dev/ad0s1d
> newnfs /dev/ad1s1d
> # remount the slices
> mount -t ufs -o rw /dev/ad0s1a /mnt/ufs.1
> mount -t ufs -o rw /dev/ad0s1e /mnt/ufs.2
> mount -t ufs -o rw /dev/ad0s1d /mnt/ufs.3
> mount -t ufs -o rw /dev/ad0s1f /mnt/ufs.4
> # fetch the filesystems from the test server
> # you will need to enable root ssh access on the test server for this.
> cd /mnt/ufs.1
> ssh root at dump -0L -f - /dev/ad0s1a | restore -rf - /dev/ad0s1a
> cd /mnt/ufs.2
> ssh root at dump -0L -f - /dev/ad0s1e | restore -rf - /dev/ad0s1e
> cd /mnt/ufs.3
> ssh root at dump -0L -f - /dev/ad0s1f | restore -rf - /dev/ad0s1f
> cd /mnt/ufs.4
> ssh root at dump -0L -f - /dev/ad0s1d | restore -rf - /dev/ad0s1d
> # change the following entries in rc.conf, remember everything is
> mounted under /mnt!
> # X = the ecluster number 1,2,3,4,5,6,7,8, etc.
> hostname="new_server_X"
> ifconfig_em0="inet netmask"
> Reboot the new server, it should come up just fine.
Your instructions is very helpful. When using on 4.11, "-L" seems not
working with dump.

Also I have one question, I clone file system from one machine to
another different type of machine. The source machine's file system is
on /dev/da0s1, but destination's is on /dev/ad0s1.  Then I run following
to update boot loader:

fdisk -B -b /boot/boot0 /dev/ad0
bsdlabel -B /dev/ad0s1

However, the cloned system can't find kernel on reboot. What am I missing?


More information about the freebsd-questions mailing list