KVM NOOB - can I get some pointers and a sanity check?


Recommended Posts

I've got an old unRAID setup (*upgraded* to 4.7, not messed with since) and 2nd machine running windows to convert audio/video for streaming (as well as watching on TV).

 

The virtualization goals of 6 seem to align with my desire to consolidate the two machines into one server.  I've got 6.0-beta7 installed on a new machine with 4TB drives to start pulling content from the old server, and I'd like to start figuring out how to run a windows VM on it.  So I'm trying to learn, but it is hard to keep up, given it is a moving target.

 

With Beta 7, KVM looks to be the recommended approach.  I guess my high level questions are:

1) I'm thinking I should install a new drive, not parity checked by unRAID, to host my VM.  I can manage backups myself, and I don't want to take the hit on my disk I/O performance.  Is this the recommended approach?  If so, what is the recommended filesystem?

2) I've used hyper-v, virtualbox, and vmware.  Those have provided a UI for creating a new VM, so creating a VM in a text editor is new.  I found this link that looks like a good starting point.  It talks about libvirt as a proxy for various hypervisors.  Is libvirt the right API to use for unRAID?

3) I'm ok with starting without passthru, but that will be needed down the road.  According to this blog, Intel's GPU in the i5 won't do passthru.  I'd need to add a discrete GPU to the server to do passthru then, right?  Or has someone found a fix for that which I've missed?

 

TIA for any pointers, and if you have other getting started links (anything specific to the direction unRAID is going especially) would be appreciated.

Link to comment

I've got an old unRAID setup (*upgraded* to 4.7, not messed with since) and 2nd machine running windows to convert audio/video for streaming (as well as watching on TV).

 

The virtualization goals of 6 seem to align with my desire to consolidate the two machines into one server.  I've got 6.0-beta7 installed on a new machine with 4TB drives to start pulling content from the old server, and I'd like to start figuring out how to run a windows VM on it.  So I'm trying to learn, but it is hard to keep up, given it is a moving target.

 

With Beta 7, KVM looks to be the recommended approach.  I guess my high level questions are:

1) I'm thinking I should install a new drive, not parity checked by unRAID, to host my VM.  I can manage backups myself, and I don't want to take the hit on my disk I/O performance.  Is this the recommended approach?  If so, what is the recommended filesystem?

2) I've used hyper-v, virtualbox, and vmware.  Those have provided a UI for creating a new VM, so creating a VM in a text editor is new.  I found this link that looks like a good starting point.  It talks about libvirt as a proxy for various hypervisors.  Is libvirt the right API to use for unRAID?

3) I'm ok with starting without passthru, but that will be needed down the road.  According to this blog, Intel's GPU in the i5 won't do passthru.  I'd need to add a discrete GPU to the server to do passthru then, right?  Or has someone found a fix for that which I've missed?

 

TIA for any pointers, and if you have other getting started links (anything specific to the direction unRAID is going especially) would be appreciated.

Either use a cache drive or mount a separate drive outside of the array to host your vm's

 

Check this thread to have your vm's autostart with the array and enable usage of virt-manager or other libvirt manager. I symlink my /etc/libvirt directory to my vm drive so my setting persist after reboot

http://lime-technology.com/forum/index.php?topic=34490.msg321290#msg321290

 

Also I made a plugin that installs webvirtmgr. Read through this thread

http://lime-technology.com/forum/index.php?topic=34875.0

However as Peter found out only the virtual network is available for selection under webvirtmgr but you could edit the xml after creation or use virt-manager from a linux computer or vm

 

And this one is what really got me started following Peter's example but for windows vm's there are other threads

http://lime-technology.com/forum/index.php?topic=34097.0

 

EDIT:

What are you using to watch tv and streaming with  in windows?  I have been running a VM for Mythbuntu to stream TV from 2 HDHR3-CC's to Raspberry Pi's and other systems running OpenELEC or XBMC.

Link to comment

Excellent, thanks for the pointers.  I'll read up more on libvirt and check out your links.

 

What are you using to watch tv and streaming with  in windows?  I have been running a VM for Mythbuntu to stream TV from 2 HDHR3-CC's to Raspberry Pi's and other systems running OpenELEC or XBMC.

I'm running J River Media Center.  Works well with media on unRAID, keeps multiple machines synchronized, and can stream (I use their Andoid app called Gizmo).  I've been happy with it.

Link to comment

I'm running J River Media Center.  Works well with media on unRAID, keeps multiple machines synchronized, and can stream (I use their Andoid app called Gizmo).  I've been happy with it.

I have heard of it but never looked into it much. I have only used WMC, MediaPortal, XBMC and Mythtv backend.  Never even used mythtv though just xbmc and cmyth. Hopefully you can get it working.

 

Link to comment

Ok, decided to go with btrfs instead, so I followed these instructions.

 

I have win7 installing now, after finding the virtio-win drivers here.

 

I wanted to make sure I could get things working without experimenting with passthru until I had the basics down.

 

Can I start making passthru changes on the existing VM (if I shut it down)?  Or does that jack up the VM, and I should create a new one?

 

Thanks again for the help.

Link to comment

I'm trying to get video passthru working, but my updated domain.xml is producing errors.

 

If I exclude the following lines, I can run virsh create Win7.xml and it creates/starts the VM and it runs fine.  So things are working until I try passthru.

 

With these lines included

  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=root.1,addr=00.1'/>
  </qemu:commandline>

I get the following error:

root@Tower2:/mnt/btrfs/VM/Win7# virsh create Win7.xml
error: Failed to create domain from Win7.xml
error: internal error: early end of file from monitor: possible problem:
2014-09-01T13:46:20.027666Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error no iommu_group for device
2014-09-01T13:46:20.027706Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device initialization failed.
2014-09-01T13:46:20.027723Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device 'vfio-pci' could not be initialized

root@Tower2:/mnt/btrfs/VM/Win7#

 

I've run vfio-bind on 0000:01:00.0 and 0000:01:00.1, although I guess I'm not sure how to test if it worked.  I'm running b7, and it looks like qemu.conf already includes groups 1-32, so changes described in other posts don't seem to apply anymore. 

 

I'm not sure how to troubleshoot.

 

In case it helps, here are the devices I'm trying passthru on:

root@Tower2:/mnt/btrfs/VM/Win7# lspci -knn | grep -i nvi
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 430] [10de:0de1] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GF108 High Definition Audio Controller [10de:0bea] (rev a1)

Link to comment

Here's what it is now:

root@Tower2:/sys/kernel/iommu_groups# cat /boot/syslinux/syslinux.cfg
default /syslinux/menu.c32
menu title Lime Technology
prompt 0
timeout 50
label unRAID OS
  menu default
  kernel /bzimage
  append intel_iommu=on,igfx_off vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream initrd=/bzroot
label unRAID OS Safe Mode (no plugins)
  kernel /bzimage
  append initrd=/bzroot unraidsafemode
label Memtest86+
  kernel /memtest
label Xen/unRAID OS
  kernel /syslinux/mboot.c32
  append /xen --- /bzimage --- /bzroot
label Xen/unRAID OS Safe Mode (no plugins)
  kernel /syslinux/mboot.c32
  append /xen --- /bzimage --- /bzroot unraidsafemode
root@Tower2:/sys/kernel/iommu_groups#

 

I've tried without igfx_off as well, and without pcie_acs_override as well.  This is an intel board/cpu (i5).

 

I think the root of the problem is that there aren't any iommu_groups, but I'm not sure why they aren't getting created.  As in, /sys/kernel/iommu_groups is an empty dir, even after running vfio-bind.

Link to comment

Turns out it was a hardware issue not a software issue.  I looked in the BIOS, and it listed vt-d as unsupported.  Turns out the i5 3570 supports vt-d, but the i5-3570k does not.  Guess which one I have.

 

I put another CPU in, one that supports vt-d, and now I have passthru of my GPU!

 

Note, I had included VNC in the xml config for installing windows before I tried passthru.  I had to turn this off with GPU passthru, otherwise the windows vm os would complain that the GPU didn't have the necessary resources.

Link to comment
  • 2 weeks later...

Stumbled on this thread by accident but looks like I need to be running something similar to the OP - Unraid+Jriver MC. I currently an older Q6600 system dedicated for unraid and a relatively newer i5 3570K, AsRock Z77 extreme4, Radeon R9 280x  as my Win7 HTPC/Jriver MC. I am considering unifying my system to a Unraid+HTPC that be left on 24/7. What processor did you replace with and are you able to pass through HDMI audio?

 

Thanks!

 

Turns out it was a hardware issue not a software issue.  I looked in the BIOS, and it listed vt-d as unsupported.  Turns out the i5 3570 supports vt-d, but the i5-3570k does not.  Guess which one I have.

 

I put another CPU in, one that supports vt-d, and now I have passthru of my GPU!

 

Note, I had included VNC in the xml config for installing windows before I tried passthru.  I had to turn this off with GPU passthru, otherwise the windows vm os would complain that the GPU didn't have the necessary resources.

Link to comment
  • 2 weeks later...

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.