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:

  1. ssh to the remote system and shut down as many services as possible. Basically everything but the ssh server itself.
  2. 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.

  3. You will end up with a file p2v.img. Mount this to a KVM virtual machine as a raw disk image and fsck it, as there will be errors.


Since you do have remote console access to the server, I would do something like this:

  1. From the remote console, bring the system to single-user mode (init 1 as root, or reboot with 1 added to the boot command line).
  2. Bring up the network manually, e.g. with the appropriate ifconfig and route commands.
  3. P2V it to the remote hypervisor (or a storage server):

    dd if=/dev/sda bs=1024k | ssh [email protected] "cat > /path/to/p2v.img"
    
  4. 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.