New Feature Coming in Beta 15: VM Manager


jonp

Recommended Posts

With the soon-to-be-released unRAID 6.0-beta15, one of the biggest upgrades will be the inclusion of a new VM Manager for creating KVM-based virtual machines.  This new feature is the result of merging the popular VM Manager plugin created by dmacias here in our community.  A huge thank you goes out to dmacias for his hard work on this plugin and for providing support to those in the community who have been using it. 

 

While the VM Manager plugin was a great way to get folks started with KVM, there were a number of features we wanted to add / upgrade to improve functionality.  Here's the short list:

  • Add multiple vdisks / network interfaces per VM
  • Basic and advanced view mode for creating VMs
  • CPU pass through and pinning
  • Assign host-based graphics, sound, and USB devices to VMs
  • Edit VMs using a form-based or XML-based editor
  • Improved XML editor with auto-formatting, color-coding, tabulation, and auto-complete
  • Automatic XML optimization based on VM configuration criteria

But that's just the short list of features.  There is also one more major feature:  OVMF support.

 

Open Virtual Machine Firmware enables us to create virtual machines using a UEFI BIOS as opposed to a traditional VGA-BIOS.  The reason this is important is that with UEFI-based VM guests, we can eliminate the need to support VGA arbitration, which means better support for graphics device assignment to VMs.  With SeaBIOS (the VGA BIOS used for VMs traditionally in both Xen and KVM), determining what GPUs will and won't work with pass through to virtual machines comes down to trying it out and seeing for yourself.  With OVMF, so long as both your GPU and guest operating system support UEFI, pass through should work just fine.  There are other benefits to OVMF/UEFI as well, but we'll save those for discussion on another day.

 

The Vision

With VM Manager in unRAID, we now have an operating system that can effectively scale in capability with that of your hardware, allowing folks to consolidate multiple disparate hardware systems into a single and more robust machine.

 

Have a low-end system and a need for just simple storage?  Great, unRAID has you covered as a Software-defined NAS.

 

Have a little more memory/CPU horsepower at your disposal and want to add other services such as file sharing, media serving, backup, and more?  Use our Docker Manager to add the capabilities of an Application Server to your system.

 

Have even more powerful hardware that includes hardware-assisted virtualization (Intel VT-x / AMD-V) and IOMMU (Intel VT-d AMD-Vi) support?  Perfect!  unRAID can also act as a Virtualization Host, allowing you to even assign graphics, sound, and input devices to create localized virtual desktops!

 

Note to Existing Users of the VM Manager Plugin

If you are using dmacias plugin for your VMs, you will need to remove this plugin before upgrading to beta 15 in order for the new VM manager to properly load.  Failure to do so may result in undesirable effects and is not supported.  If you didn't read this before upgrading, you can remove the plugin after updating, but will need to reboot your server once again for the built-in VM Manager to load.

 

In addition, one of the new features of the VM Manager is the ability to edit existing VM configurations without resorting to manual XML editing.  Doing so, however, will remove any customizations to your XML that deviate from the standards built into the VM Manager itself.  Therefore, if you have added any special XML to your VM and wish to modify it, you will need to do so exclusively with the XML editor.

Link to comment
  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

Definitely looking forward to this => personally I think it's the nicest new feature in v6, other than the basic NAS features that were previously missing [uPS support and notifications} and have finally been added to the NAS functionality.

 

Dockers are nice ... but for those of us who simply use UnRAID as a NAS, an easy-to-configure hypervisor allows us to keep UnRAID "pure" (as a NAS) while gaining additional functionality from our hardware platform via VMs.

 

Link to comment

do you think we can get a good plugin to go with this for adding drives out of the array for vm storage :)

 

Supporting non-array devices for use with VMs is something we want to do in the future.  For now, it is highly recommended to create VMs inside a cache-only user share.

Link to comment

I have passed through an entire hard drive that is not part of my array with this VM running as time-machine server.

 

<domain type='kvm' id='2'>
  <name>Time-Machine</name>
  <uuid>af150d8f-32b5-bb12-a855-64034ff0229d</uuid>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/VMS-Dockers/VMS/Time-Machine/Time-Machine.qcow2'/>
      <backingStore/>
      <target dev='hda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAK507205'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/ISO-STORE/14.04 mini.iso'/>
      <backingStore/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/mnt/user/Backups'/>
      <target dir='/unraid-backup'/>
      <alias name='fs0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </filesystem>
    <interface type='bridge'>
      <mac address='c6:93:a6:75:de:cf'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

 

will the new VM manager pick it up ?

Link to comment

I have passed through an entire hard drive that is not part of my array with this VM running as time-machine server.

 

<domain type='kvm' id='2'>
  <name>Time-Machine</name>
  <uuid>af150d8f-32b5-bb12-a855-64034ff0229d</uuid>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/VMS-Dockers/VMS/Time-Machine/Time-Machine.qcow2'/>
      <backingStore/>
      <target dev='hda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAK507205'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/ISO-STORE/14.04 mini.iso'/>
      <backingStore/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/mnt/user/Backups'/>
      <target dir='/unraid-backup'/>
      <alias name='fs0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </filesystem>
    <interface type='bridge'>
      <mac address='c6:93:a6:75:de:cf'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

 

will the new VM manager pick it up ?

 

Yup, definitely.  I actually do this now as well, but will be reverting to using virtual disks shortly.  Block device pass through for storage hasn't really given me much of a performance increase as far as I can tell compared to vdisks, and vdisks are more portable and have more features than when you pass through an entire block device anyway.

Link to comment

I have passed through an entire hard drive that is not part of my array with this VM running as time-machine server.

 

<domain type='kvm' id='2'>
  <name>Time-Machine</name>
  <uuid>af150d8f-32b5-bb12-a855-64034ff0229d</uuid>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/VMS-Dockers/VMS/Time-Machine/Time-Machine.qcow2'/>
      <backingStore/>
      <target dev='hda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAK507205'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/ISO-STORE/14.04 mini.iso'/>
      <backingStore/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/mnt/user/Backups'/>
      <target dir='/unraid-backup'/>
      <alias name='fs0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </filesystem>
    <interface type='bridge'>
      <mac address='c6:93:a6:75:de:cf'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

 

will the new VM manager pick it up ?

 

Something else worth noting, your machine type is set to pc-i440fx-2.1.  In the new release, we have QEMU 2.2.  This doesn't mean your VM won't work, but it won't be taking advantage of any enhancements that QEMU 2.2 has put in place.  To fix, you have two options with the new VM manager:

 

1)  Edit the XML and change machine='pc-i440fx-2.1' to machine='pc-i440fx-2.2'.

2)  Edit the VM using the form-based editor and just click "update" without changing anything.

 

I forgot to mention that the form-based editor will respect block-device pass through as you have in your XML.

Link to comment

I have passed through an entire hard drive that is not part of my array with this VM running as time-machine server.

 

<domain type='kvm' id='2'>
  <name>Time-Machine</name>
  <uuid>af150d8f-32b5-bb12-a855-64034ff0229d</uuid>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/VMS-Dockers/VMS/Time-Machine/Time-Machine.qcow2'/>
      <backingStore/>
      <target dev='hda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAK507205'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/ISO-STORE/14.04 mini.iso'/>
      <backingStore/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/mnt/user/Backups'/>
      <target dir='/unraid-backup'/>
      <alias name='fs0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </filesystem>
    <interface type='bridge'>
      <mac address='c6:93:a6:75:de:cf'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

 

will the new VM manager pick it up ?

 

Something else worth noting, your machine type is set to pc-i440fx-2.1.  In the new release, we have QEMU 2.2.  This doesn't mean your VM won't work, but it won't be taking advantage of any enhancements that QEMU 2.2 has put in place.  To fix, you have two options with the new VM manager:

 

1)  Edit the XML and change machine='pc-i440fx-2.1' to machine='pc-i440fx-2.2'.

2)  Edit the VM using the form-based editor and just click "update" without changing anything.

 

I forgot to mention that the form-based editor will respect block-device pass through as you have in your XML.

 

 

I'll save out a copy of the current xml just to be on the safe side before playing.

 

Any more news on UN-VMS ?

Link to comment

I have passed through an entire hard drive that is not part of my array with this VM running as time-machine server.

 

<domain type='kvm' id='2'>
  <name>Time-Machine</name>
  <uuid>af150d8f-32b5-bb12-a855-64034ff0229d</uuid>
  <memory unit='KiB'>524288</memory>
  <currentMemory unit='KiB'>524288</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/VMS-Dockers/VMS/Time-Machine/Time-Machine.qcow2'/>
      <backingStore/>
      <target dev='hda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAK507205'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/ISO-STORE/14.04 mini.iso'/>
      <backingStore/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/mnt/user/Backups'/>
      <target dir='/unraid-backup'/>
      <alias name='fs0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </filesystem>
    <interface type='bridge'>
      <mac address='c6:93:a6:75:de:cf'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

 

will the new VM manager pick it up ?

 

Something else worth noting, your machine type is set to pc-i440fx-2.1.  In the new release, we have QEMU 2.2.  This doesn't mean your VM won't work, but it won't be taking advantage of any enhancements that QEMU 2.2 has put in place.  To fix, you have two options with the new VM manager:

 

1)  Edit the XML and change machine='pc-i440fx-2.1' to machine='pc-i440fx-2.2'.

2)  Edit the VM using the form-based editor and just click "update" without changing anything.

 

I forgot to mention that the form-based editor will respect block-device pass through as you have in your XML.

 

 

I'll save out a copy of the current xml just to be on the safe side before playing.

 

Any more news on UN-VMS ?

 

Would be premature to discuss at this point.  The first iteration of VM Manager will be to create your own VMs using an ISO you provide.  In the future, we will be offering pre-built templates similar to stacklet, but optimized even further for unRAID OS to simplify how you obtain and use them.

Link to comment

So I've been using unRAID VMs since the early days of Beta6(when it was only Xen!)

 

I invested the time in getting to grips with Xen config, Xen passthrough, VM drivers & optimisation etc.

 

It was made clear many moons ago by Tom (when KVM was introduced) that it was unlikely that both would be supported long term. It looks like KVM is the winner and getting all the love.

 

I'd love to migrate but really don't want to go through a learning curve all over again and have so much Xen specific stuff in my VMs that it's going to be a bunch of hassle (GPU start/stop scripts, Xen drivers, windows licences now tied to Xen virtual hardware etc.)

 

It would be really nice if there was a quick easy and foolproof method of migrating Xen -> KVM. Anyone got any pointers?

 

Thanks

 

Link to comment

... windows licences now tied to Xen virtual hardware etc.

 

This is by far the most significant element for those of us who have large collections of Windows-based virtual machines.    It MAY not be all that much of an issue, since I believe the KVM based virtual platform is a virtualized Intel 440 based chipset machine ... same as VMware (and also the same that was used by Microsoft's Virtual PC).    Once I get a v6 system set up to test with (after v6 final is released) I'll find out, as I have a few dozen Windows VM's that it'd be nice to migrate.

 

Link to comment

Is there a "system requirements" section for VM's anywhere? Reason being I'd like to play with a win7 VM when 6 goes final using my current hardware, after adding more RAM of course.

Your build is similar to mine except for CPU.

 

There has been limited (or maybe no) success with iGPU (e.g. Intel HD Graphics), and the CPU in your build thread will not do hardware passthru.

 

And our small form factor is not conducive to adding video cards anyway.

Link to comment

For existing users, if we remove the plugin and install b15, will the new and improved version recognize our existing VM's? If not, what steps will I need to preserve the existing ones and recreate them?

 

Yes it will preserve them; however, it would not hurt to copy the contents of each VM xml to a text file. That way if the xml's were to disappear you could easily reimport them back.

 

EDIT: spelling, it's like English isn't my first language...

Link to comment

So I've been using unRAID VMs since the early days of Beta6(when it was only Xen!)

 

Very familiar with you and your blog!  You've been a great supporter and we appreciate it!

 

I invested the time in getting to grips with Xen config, Xen passthrough, VM drivers & optimisation etc.

 

It was made clear many moons ago by Tom (when KVM was introduced) that it was unlikely that both would be supported long term. It looks like KVM is the winner and getting all the love.

 

The primary reason it was unlikely to support both hypervisors was because we didn't want to maintain two separate VM management tools.  Since implemented in beta 3, our Xen Manager has leveraged the user-space tools provided directly by the Xen project to create and manage Xen-based guests.  The new VM Manager, however, is built entirely upon Libvirt, a management framework that can support BOTH Xen and KVM.  Now this has been the case for some time, but early on, when we experimented with creating VMs using libvirt, we found that several features made possible with the native Xen tools were NOT available when creating those VMs using libvirt.  One of the big ones was PCI device assignments.  Another big challenge was that Libvirt had a tool which was supposed to convert a Xen CFG file into a Libvirt domain XML file.  This tool didn't work very well in our testing.  However, as of Libvirt 1.2.8, we found substantial improvements to manageability of Xen-based guests using KVM.  There are still some "gotchas," but there is hope that when combined with Xen 4.5, manageability may see feature parity with the native Xen tools.  If this is the case, it would be of little effort for us to add support for Xen to the new VM Manager.  To be clear though, we have yet to test Xen 4.5 with the newer versions of Libvirt, so while we are hopeful, I cannot say for certain that this will happen.  What I can say for certain is that 6.0's release will not be held back in order for us to add Xen support to the VM Manager.

 

I'd love to migrate but really don't want to go through a learning curve all over again and have so much Xen specific stuff in my VMs that it's going to be a bunch of hassle (GPU start/stop scripts, Xen drivers, windows licences now tied to Xen virtual hardware etc.)

 

It would be really nice if there was a quick easy and foolproof method of migrating Xen -> KVM. Anyone got any pointers?

 

Thanks

 

From a licensing standpoint, Windows-based guests shouldn't require reactivation as a result of moving from Xen to KVM.  Garycase's post is right in that both KVM and Xen utilize QEMU's i440fx emulated chipset, which means that when converting from Xen to KVM, you should not have to reactivate your copy of Windows.  In addition, KVM doesn't require start/stop scripts for GPU assignment and in my testing, VirtIO from KVM blows away what Xen has to offer in terms of paravirtualization drivers.  The most time-consuming aspect in migrating will be the process of converting from a Xen domain CFG format to libvirt XML format and replacing the Xen drivers with VirtIO.  When I find time, I will write up a guide on how to do this (maybe even craft a video walk through).

Link to comment

The most time-consuming aspect in migrating will be the process of converting from a Xen domain CFG format to libvirt XML format and replacing the Xen drivers with VirtIO.

 

I would also like to chime in and say that this is the most time-consuming aspect and it honestly was not difficult. I actually (just for fun) took out my Windows 7 laptop's hard drive and made a DD copy of its partition to an .img file. Before I made the copy I manually installed the VirtIO drivers onto Windows 7 so when it was finished I just pointed my VM XML to the new .img file on my server and had a copy of my laptops Win 7 running as a VM. Honestly, it would have been easier to just install a fresh copy of Windows 7 as a VM but I just wanted to say I could.

Link to comment

The most time-consuming aspect in migrating will be the process of converting from a Xen domain CFG format to libvirt XML format and replacing the Xen drivers with VirtIO.

 

I would also like to chime in and say that this is the most time-consuming aspect and it honestly was not difficult. I actually (just for fun) took out my Windows 7 laptop's hard drive and made a DD copy of its partition to an .img file. Before I made the copy I manually installed the VirtIO drivers onto Windows 7 so when it was finished I just pointed my VM XML to the new .img file on my server and had a copy of my laptops Win 7 running as a VM. Honestly, it would have been easier to just install a fresh copy of Windows 7 as a VM but I just wanted to say I could.

 

Did the VM version of the laptop install require re-activation?

 

Link to comment

The most time-consuming aspect in migrating will be the process of converting from a Xen domain CFG format to libvirt XML format and replacing the Xen drivers with VirtIO.

 

I would also like to chime in and say that this is the most time-consuming aspect and it honestly was not difficult. I actually (just for fun) took out my Windows 7 laptop's hard drive and made a DD copy of its partition to an .img file. Before I made the copy I manually installed the VirtIO drivers onto Windows 7 so when it was finished I just pointed my VM XML to the new .img file on my server and had a copy of my laptops Win 7 running as a VM. Honestly, it would have been easier to just install a fresh copy of Windows 7 as a VM but I just wanted to say I could.

 

Did the VM version of the laptop install require re-activation?

 

Yes, because the "hardware" had changed so much. Although I believe that all I had to do was click "internet" reactivation and it activated just fine.

Link to comment

Interesting r.e. the Windows 8 setup.    I assume you did both of those changes at the same time -- I would certainly NOT expect a re-activation requirement due to changing the memory size;  but I'm not surprised that changing the # of CPU cores did [That's akin to changing the CPU].

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.