How to migrate a physical system to a KVM virtual server with only network access?
Solution 1:
Assuming you don't have remote console access, or it's through some crappy horrible useless Java applet:
- ssh to the remote system and shut down as many services as possible. Basically everything but the ssh server itself.
-
From your local system, capture a copy of the running disk image back to your local system:
ssh [email protected] "dd if=/dev/sda bs=1024k" > p2v.img
Wait several hours. Depending on the size of the hard disk and your available bandwidth, this may take a very long time.
You will end up with a file
p2v.img
. Mount this to a KVM virtual machine as a raw disk image andfsck
it, as there will be errors.
Since you do have remote console access to the server, I would do something like this:
- From the remote console, bring the system to single-user mode (
init 1
as root, or reboot with1
added to the boot command line). - Bring up the network manually, e.g. with the appropriate
ifconfig
androute
commands. -
P2V it to the remote hypervisor (or a storage server):
dd if=/dev/sda bs=1024k | ssh [email protected] "cat > /path/to/p2v.img"
Create a new KVM virtual machine using
p2v.img
as the disk, start it up and make any necessary changes.
The virt-v2v tool can also P2V a Linux server to a KVM virtual machine.
Solution 2:
All major hypervisors have a native P2V tool. Pick a hypervisor and use its tool.