快轉到主要內容

為何我喜歡用Virt Manager + QEMU/KVM,從焗烤義大利麵說起

分類   人文藝術 自由軟體議題
標籤   QEMU Libvirt QEMU-KVM
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

學習Linux的歷程裡沒提過的外傳故事!QEMU/KVM技能樹。

截至目前,GNU/Linux系統常見的虛擬化軟體有:

  1. QEMU/KVM,搭配Virt Manager或GNOME Boxes管理
  2. Oracle VirtualBox
  3. VMware
  4. Xen

為什麼本站的「虛擬機與容器技術」分類文章談論的虛擬機軟體幾乎都是QEMU/KVM呢?(至少到現在為止),這得從我對QEMU/KVM的沉迷說起。

小弟不才,關於Linux虛擬化的理解也只是一瓢飲的程度而已。

1. 焗烤義大利麵與QEMU/KVM
#

之所以熱衷研究QEMU/KVM虛擬機到現在,是因為最初想遷移到Linux,又擔憂失去存取Windows功能的因素。

2022年以前,還沒有接觸過邪教式的自由軟體意識形態,所以我自是放不下Windows。即使知道Wine的存在,還是希望有一個虛擬機能即弄出Windows環境,好讓我在必要的時候跑軟體。

(後見之明:沒想到會在兩年後去資工系學C#程式,虛擬機救了我一命讓我得以安裝Visual Studio完成作業。)

此前已經有一些虛擬機操作經驗,但其實不是很懂背後原理,僅是覺得VirtualBox和Vmware很直觀好用!系統唰唰地就裝起來了。QEMU/KVM對我來說是未知的領域。

我隱約了解到,虛擬機最大的死穴就是圖形處理能力,於是從大二的時候(2020年)開始研究GPU直通技術。

在屏東大學學校宿舍附屬的學校餐廳,我點了焗烤義大利麵,坐下來拿出手機,看著「為了可能的聲音」、「CT Wang」、「如何在Linux打LOL」、「鳥哥」等人寫的文章,開始研究如何GPU直通。

同一時期,嘗試過在實體機安裝黑蘋果,讀著文章,回去宿舍測試後還真的成功了!啊不過音效卡kext搞不定所以很快放棄ㄌ

店家提供的小碗盛著餐點,義大利麵包在鋁箔中間,上面覆蓋著熱熱的焗烤餅皮。用叉子一戳破,捲著牽羹的番茄麵條和餅皮,放入口中酥脆又酸甜的感覺,實在好吃。

媽媽咪呀,根本看不懂網友文章在寫什麼,什麼IOMMU、VFIO、nouveau黑名單蝦米碗糕!?為什麼每個人介紹GPU直通都像在寫論文一樣。看著看著麵也吃完了,就不做了睡大覺!

慢慢到了2022年,我才第一次在Ubuntu嘗試成功GPU直通,也不是突然開悟什麼的,而是不斷試錯才成功的。畢竟那個時期是連vim都不會用的時候。

初次完成某事的喜悅總是盛大的,快要手舞足蹈的地步,所以我鉅細靡遺的把GPU直通步驟寫在舊「Ivon的實驗室」部落格上。這篇文章後來搬移到這個部落格: Ubuntu Nvidia GPU直通教學

爾後進入大distro-hopping時代,卻沒有忘記QEMU/KVM,這一定是我每次裝系統必裝的軟體。

在不同的Linux發行版重複類似的步驟,多做幾次GPU直通後,對步驟的熟稔度也就提升了許多。慢慢摸索出背後的邏輯關係。

我不曉得明明Virt Manager有GUI可以用,卻一堆人要用命令行virt-install新增虛擬機,並且還專注介紹virsh指令用法。當然,不過是各人的關注面向不同罷了,畢竟是我要玩虛擬機,不是真的管伺服器。

2022年,玩BlissOS的時候順便學到了virglrenderer的半虛擬化GPU加速技術。

2023年,學會使用Looking Glass擷取虛擬機畫面取代外接螢幕的用法。並且順道學了反遊戲偵測QEMU/KVM虛擬機的技巧。

除了GPU直通外,還順道學習了許多Libvirt的相關技術,例如VirtIO-FS、擴充容量、遠端虛擬機桌面的用法,這可以說是學習永無止境。

到現在,已經研究了四年啊,斷斷續續的才了解到Libvirt與QEMU/KVM鬆散又複雜的關係。像我這種學習速度,若是修一門資工系的課程早就被當100次了。

2. 使用QEMU/KVM的優點
#

為什麼很少人提及QEMU/KVM當作桌面版Linux的虛擬化方案呢?用戶似乎都以伺服器運維工程師為主,不然就是寫韌體的工程師用命令行跑QEMU。那麼使用QEMU/KVM虛擬機究竟有何優勢?

參考 RedHat官網的說法,跟Vmware比起來,成本、擴展性、開源、靈活性就是QEMU/KVM的優點。

但我認為靈活性也是最大缺點。

許多新手桌面Linux用戶似乎偏好Virtualbox和Vmware這類虛擬化方案。這背後的理由不難理解,畢竟他們參考資料比較多,跨平台,也較容易上手。

相較之下,QEMU/KVM的方案是個很鬆散的組合,這不利於行銷。因為除了QEMU/KVM套件外,你還得安裝Libvirt、virsh、Virt Manager、Virt Viewer、OVMF、VirtIO、swtpm等等服務,才可以組合起來。而玩到最後你會發現Virt Manager不過是個前端而已!真正跑在背後的虛擬機是Libvirt和QEMU/KVM。更慘的是圖形介面無法管理Libvirt的全部功能,有時得手動修改虛擬機XML,甚或打指令,這就很不友善。

有沒有可能,真的需要QEMU/KVM功能的用戶,都直接裝Proxmox VE了呢?它的網頁管理介面很好用的!

不過回到桌面Linux為主的使用環境,一旦你真的需要「自由軟體」解決方案,並且滿足「PCI Passthrough」的功能,那麼前面兩個虛擬機軟體就不可能同時滿足。

並且QEMU/KVM可以被許多工具管理,例如Libvirt、virsh、Virt Manager、Cockpit、oVirt、GNOME Boxes等等。

這就是QEMU/KVM的優點所在。

至於為什麼我文章都要強調「QEMU/KVM」而非只寫KVM,是希望能讓軟體開發者得到同等的重視,KVM只是核心模組,若沒有QEMU搭配啥都不是。的確,市面上有不依賴QEMU跑KVM的虛擬機軟體,例如Amazon Firecracker,但目前來說QEMU配KVM依然是主流作法。

3. 現今跑QEMU/KVM的配置
#

所學有限,未來可能會改配置。

現在的用法是混合型,我把Linux當桌面系統用,出門在外再用SSH與內網穿透軟體遠端存取,把Linux當伺服器用。

因為電腦有Intel內顯,故Nvidia GPU直通的時候Linux依然能使用桌面。大部分時候上網是不太需要Nvidia GPU的,至於玩大型遊戲就往Windows虛擬機裡面塞。

跑QEMU/KVM的電腦,CPU和RAM自是越大越好。

Linux發行版我選擇穩定發表的,也就是Ubuntu LTS。我不希望跑在Arch Linux這種不穩定的環境,那在虛擬機裡面測試就好了,外部的基礎設施不可以這麼放蕩。

關於虛擬機容量問題,只能很笨的將虛擬機qcow2檔案存在第二個硬碟裡面(所以他們可以活過distro-hopping),需要空間的時候再手動qemu-nbd掛載調整。等到我學會LVM之後應該就不會用這麼笨的方法了,彼時也得學著做RAID呢。

現在如果需要用GPU跑某些AI運算的時候,再用虛擬機跑,取代過去直接在實體系統安裝Python套件的做法,這樣隔絕的環境也比Docker要徹底。

將Nvidia顯示卡關在虛擬機裡面還有另外一個原因:KDE 5 X11搭配Nvidia驅動很容易畫面撕裂。那就乾脆不要出來了,讓Intel負責顯示畫面就好。

最後,我一直在想,是不是哪天乾脆把Ubuntu換成Proxmox VE好呢?

嗯嗯,不要,我還是希望實體的桌面Linux可以存在,而不是永遠活在虛擬的機器裡面。

相關文章

Ubunchu!看漫畫學Linux,認識自由軟體社群文化
分類   人文藝術 自由軟體議題
標籤   OS-Tan Ubuntu Debian Anime
紀錄使用Linux系統三年後的心得
分類   人文藝術 自由軟體議題
標籤   Linux
比較X11與Wayland。2024年了,你是否該切換到Wayland,拋棄X視窗系統
分類   人文藝術 自由軟體議題
標籤   Wayland X Window Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。