Duplicate existing FreeBSD Server in VM
gao at schrodinger.com
Mon Dec 10 20:13:36 PST 2007
> Terry Sposato wrote:
>> 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.
> # boot live filesystem cd
> # use disklabel to check/create slices
> /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 10.0.240.130 dump -0L -f - /dev/ad0s1a | restore -rf - /dev/ad0s1a
> cd /mnt/ufs.2
> ssh root at 10.0.240.130 dump -0L -f - /dev/ad0s1e | restore -rf - /dev/ad0s1e
> cd /mnt/ufs.3
> ssh root at 10.0.240.130 dump -0L -f - /dev/ad0s1f | restore -rf - /dev/ad0s1f
> cd /mnt/ufs.4
> ssh root at 10.0.240.130 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.
> ifconfig_em0="inet 10.0.240.13X netmask 255.255.255.0"
> 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