Duplicate existing FreeBSD Server in VM

DAve dave.list at pixelhammer.com
Thu Nov 1 19:47:18 PDT 2007

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

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 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.
ifconfig_em0="inet netmask"

Reboot the new server, it should come up just fine.

Three years now I've asked Google why they don't have a
logo change for Memorial Day. Why do they choose to do logos
for other non-international holidays, but nothing for

Maybe they forgot who made that choice possible.

More information about the freebsd-questions mailing list