KVM QEMU PVE UNRAID INTEL IGD GVT-D 直通研究心得


最近零零散散大概花了一個多月時間研究有關虛擬化的問題,主要是希望復用一台高性能的主機。嘗試了ESXi,解決了非官方網卡問題,還是最終有關機紫屏PSOD,放棄,最終選擇了PVE(KVM based)的方案。基本使用沒有問題,不禁感慨linux的kernerl真的強大,kvm 承載windows居然如此順滑,也感謝rehat等一系列廠商的優化。

虛擬化當中最有趣的是直通,也就是虛擬機直接連接pci總線;目前可以實現控制器、pci外置設備以及pci總線上面的內置設備的直通,主要依賴vfio這個magic。有關gpu的直通着重寫一點:

(update1: windows 的VM安裝完后第一件事一定是安裝virtIO的驅動,redhat提供的各種驅動你都可以裝上! 可以避免很多問題)

   (update3: 不要使用chrome連接pve控制台。novnc永遠連不上。)

v卡gpu直通有兩種方案:

  pci直通和vGPU共享,前者和普通的pci直通沒什么區別,正確設置參數就好,而且在efi模式下也不存在vga仲裁的問題,host端的驅動被blacklist就可以(另外提一句,grub的command line可以支持把所有的vfio和black參數都寫進去,可以不需要修改文件)。VGA模式下可能在BIOS里面特殊設置,一般保持默認即可。

  linux的VM一般完美驅動,windows系列的主機部分會有driver的lock,有相關的patch可以解鎖非專業卡的直通,或者將kvm的特征隱藏起來。google上面很多相關內容。

  vGPU共享需要購買nvidia的授權和專用驅動,個人很少使用,沒有研究。

i卡gou直通非常復雜,原因和intel自己的產品思路以及作為內置顯卡和bios耦合太緊密導致的。直通有N種方案,包括民間的官方的各種嘗試。總結起來是:官方對於gpu加速支持的很好,推薦GVT-g,完美支持3d加速。民間對於視頻直出需求很多,目前看來只有BIOS+VGA+GVT-d以及UEFI+modeified OVMF+IGD ROM+GVT-d方式有可能實現,但基本上很難實現外接顯示器和虛擬顯卡共存,(vnc遠程桌面可以,但是基於虛擬顯卡的不行,比如spice),而且這些限制是由於intel的windows驅動+VBIOS導致的,硬件上其實沒有限制!

主要的方案有以下幾種:

    參考 

GVT-d:pci直通,優點是可以視頻輸出,並且相對支持較好。缺點是設置很復雜,需要繞過很多限制。一致的成功案例有 案例1 案例2 , 這兩個思路非常清晰,分別是BIOS和UEFI模式下的,很多點也講的很清楚。但貌似intel的windows驅動有限制,有可能無法正常使用,在ubuntu下一直可以正常使用,windows下面我自己嘗試無果。

  有具體分為BIOS下面和UEFI下面。前者需要解決的麻煩是VGA仲裁,需要保證bios正確處理了內外置顯卡、grub veasfb和efifb和nomodset選項、VGA驅動、等等復雜的問題。在這個非常全面的直通資料里面有部分章節講到。后者的麻煩是VBIOS和GOP驅動,需要提到到VM的OVMF里面,以保證啟動命令可以發給顯卡,需要寫手工活處理UEFI的固件。具體詳見案例2

(update2:有關vga的問題,目前有限的參數包括vfio里面的disable-vga, qemu里面的x-vga=on, igd-opregion grub里面的vesafb, efifb,以及bios里面的主顯卡選擇)

GVT-g:這種方式是官方支持的,可以多個VM共享3d計算能力,具體可以google,默認設置即可驅動起來。

 

總結:目前放棄使用IGD(集成顯卡)輸出VM的內容;使用其作為HOST的shell monitor;另外購買亮機顯卡,直通給不同的VM做顯示,基本上也可以滿足工作站的需要。至於HTPC用戶可能要自行研發了。

不知道要對intel說些什么好。

EOF

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM