User Tools

Site Tools


unix:virtualization:virtlib:importxen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
unix:virtualization:virtlib:importxen [2022/05/08 22:14] – created rodolicounix:virtualization:virtlib:importxen [2022/05/19 23:28] (current) rodolico
Line 1: Line 1:
 ====== Import Xen virtuals to KVM/Xen ====== ====== Import Xen virtuals to KVM/Xen ======
 +
 +**Warning**: Preliminary. These are my notes I'm getting ready to try.
  
 This is a work in progress, as I've not been able to find anything on the 'net about it. Everything I've seen assumes your Xen virtuals are being managed by libvirt already, so it is a matter of using some built in utilities. This is a work in progress, as I've not been able to find anything on the 'net about it. Everything I've seen assumes your Xen virtuals are being managed by libvirt already, so it is a matter of using some built in utilities.
  
-The way I propose to do it is to manually generate a libvirt configuration file, modified to use values from the original Xen machine. We'll use the virt-install command with the --import and --xml options.+The way I propose to do it is to manually generate a libvirt configuration file, modified to use values from the original Xen machine. We'll use the virt-install command with the --import and --print-xml options.
  
 +Lets try to convert the following Xen configuration file
  
-<code bash> +<code python>
-virt-install \ +
-   --hvm \ +
-   --connect    qemu:///system \ +
-   --import \ +
-   --noautoconsole \ +
-   --boot     hd,cdrom,menu=on \ +
-   --name       router-a \ +
-   --os-variant freebsd11.1 \ +
-   --metadata uuid=d9510e01-e461-461f-9aa8-3fee223cb4a0,name=router-a,title=router-a,description='Primary Router'+
-   --memory     4096 \ +
-   --vcpus      4 \ +
-   --disk       path=/dev/vg0/router-a.disk0,bus=virtio,target=sda \ +
-   --graphics vnc,port=5901 \ +
-   --network  bridge=br_lan,mac=00:16:3e:bb:26:72,model=virtio +
-</code> +
- +
-The items after //name// in the above command are all populated from a Xen configuration file. Assume the following configuration file: +
- +
-<code conf>+
 builder='hvm' builder='hvm'
 memory=4096 memory=4096
Line 31: Line 15:
 name='server.example.com'# change this to the name displayed on xm list name='server.example.com'# change this to the name displayed on xm list
  
-# change the MAC address to be unique. There is a list of MAC's we use in shared/Tech/DailyData/ips.ods+# change the MAC address to be unique.
 # change the vifname so it shows up well on ifconfig output # change the vifname so it shows up well on ifconfig output
 vif= [ vif= [
Line 54: Line 38:
 uuid='44f33f93-f606-4513-8dc0-7e1eac977025' uuid='44f33f93-f606-4513-8dc0-7e1eac977025'
 </code> </code>
 +
 +To do this, will run virt-install with the --print-xml flag, which will simply show the configuration. In this case, I'm writing it to a file so it can be edited, then used to test, then define the virtual.
 +
 +<code bash>
 + virt-install \
 +   --print-xml \
 +   --hvm \
 +   --connect    qemu:///system \
 +   --name       **CHANGEME** \
 +   --memory     **CHANGEME** \
 +   --vcpus      **CHANGEME** \
 +   --disk       path=**CHANGEME**,bus=virtio,target=sda \
 +   --graphics vnc,port=**CHANGEME** \
 +   --noautoconsole \
 +   --os-variant debian9 \
 +   --metadata uuid=**CHANGEME**,name=**CHANGEME**,title=**CHANGEME**,description='**CHANGEME**' \
 +   --boot     hd,cdrom,menu=on \
 +   --network  bridge=**CHANGEME**,mac=**CHANGEME**,model=virtio \
 +   --network  bridge=**CHANGEME**,mac=**CHANGEME**,model=virtio \
 +   > test.xml
 +</code>
 +
 +The items marked **CHANGEME** in the above command are all populated from a Xen configuration file. **NOTE**: it is very important to place the boot drive first in the list, before any other drives or cdrom's In the above example Xen config, I'd end up with something like:
 +
 +<code xml>
 +<code bash>
 + virt-install \
 +   --print-xml \
 +   --hvm \
 +   --connect    qemu:///system \
 +   --name       server.example.com \
 +   --memory     4096 \
 +   --vcpus      4 \
 +   --disk       path=/dev/disk/by-path/ip-10.22.209.32:3260-iscsi-iqn.2019-09.com.nas:server.disk0-lun-0,bus=virtio,target=sda \
 +   --graphics vnc,port=5904 \
 +   --noautoconsole \
 +   --os-variant debian9 \
 +   --metadata uuid=44f33f93-f606-4513-8dc0-7e1eac977025,name=server.example.com,title=server.example.com,description='Example Server' \
 +   --boot     hd,cdrom,menu=on \
 +   --network  bridge=br_dmz,mac=00:16:3f:97:db:f3,model=virtio \
 +   > test.xml
 +</code>
 +
 +
 +Once you have this done, edit the resulting file with any changes you may need. I change the CPU as per [[unix:virtualization:virtlib:migrate|]] so I can migrate easily.
 +
 +Now, shut down the virtual on its Xen hypervisor and test it with the following command: <code bash>virsh create test.xml --console</code>. This will start the new definition, putting you in the console so you can watch it boot. **Be very sure to shut down the virtual in its origin first**.
 +
 +If all works well, shut down the virtual, then make the definition permanent with <code bash>virsh define test.xml</code>
 +
 +You are done.
unix/virtualization/virtlib/importxen.txt · Last modified: 2022/05/19 23:28 by rodolico