How-To:Linux 建置 KVM 虛擬機器

操作環境:

  • Fedora 34

 

Linux 的 KVM(Kernel-based Virtual Machine)技術,旨在為 Linux 平台提供原生的虛擬化解決方案。KVM 從問世之初便引起了高度關注,如今已廣泛地應用在雲端主機服務或企業級的虛擬化設施上。然而有很長一段時間,DR 自己的試驗環境仍是習於使用 VirtualBox 來建置,畢竟它也是一套在安裝及使用上都相當簡易的虛擬化軟體。但直到最近開始覺得,既然 KVM 是 Linux 本身即提供的虛擬化方案,應該是直接使用 KVM 就好。因此本文會是一份在 Linux 工作站電腦上建立 KVM 虛擬機器的簡單說明。

 

準確來說,KVM 是指涉 Linux 內核中提供虛擬化支援的模組,它需要搭配 QEMU 這套模擬器暨虛擬化程式,以及 libvirt 工具及服務,才能構成完整可操作的虛擬化軟體。不過 KVM 自 Linux 2.6.20 起便是內建模組,以及 QEMU 及 libvirt 的安裝則也是相當簡易,在 Fedora 發行版上只需要一行指令即可安裝完畢。

 

1. 安裝所需套件

執行以下 dnf 群組安裝指令:

  • sudo dnf group install virtualization

 

2. 執行 virt-manager

執行前一步驟的安裝指令後,應該會一併安裝 virt-manager(Virtual Machine Manager)這套圖形介面的虛擬機管理程式,可用於新增、執行及管理虛擬機器,在桌面環境下應比使用文字介面的 virsh 來得方便許多。執行指令如下:

  • sudo virt-manager

 

若未加上 sudo,則執行時依然會要求 root 權限,獲取權限後才能夠順利執行。或者替代方式是將當前使用者加入到 libvirt 群組內:

  • sudo usermod -a -G libvirt <username>

 

在執行 virt-manager 時也會一併啟動 libvirtd 服務(若先前未啟動的話),可使用以下指令檢查服務執行狀態:

  • sudo systemctl status libvirtd

 

倘若在中文環境下,覺得 virt-manager 的中文介面不太順眼,則可在執行時將環境變數調整為英文:

  • LANG=en_US.UTF-8 sudo virt-manager

 

 

virt-manager 的操作細節基本上無須贅述,應該很容易就能夠瞭解建立及管理虛擬機器的方式。或許唯一需要留意之處,是建立出來的客體(guest)機器,預設不會反映出主體(host)的真實 CPU 型號。而這在某些情境下,對於客體系統的運作效能可能會有不一的影響。至於調整的方式,是前往【Edit】→【Preferences】→【New VM】,將【CPU default:】從「Application default」變更為「host-passthrough」。或者是開啟已建立的虛擬機器,於【View】→【Details】→【CPUs】→【Configuration】,將【Model:】變更為「host-passthrough」。

 

因著不同的使用情境及管理需求,其實也是有 virt-manager、virsh 以外的管理工具可使用,相關清單可參考 Management Tools 頁面。

 

3. VirtIO

QEMU/KVM 容許以半虛擬化(paravirtualization)的方式,來驅動客體系統的網路及磁碟裝置,藉此得到更佳的效能表現。然而其前提是客體系統得具備 VirtIO 驅動程式,並在虛擬機器的網路或磁碟設定中,指定使用 VirtIO 作為裝置類型。反之倘若客體系統不具備 VirtIO 驅動程式,則應留意在虛擬機器設定中不應使用 VirtIO,否則會無法順利執行。

 

4. 匯入 OVA

若是有匯入 *.ova 虛擬設備封裝的需求,最基本的實作方式,是將 *.ova 解開來,例如:

  • tar xvf <OVA 檔案>

 

然後便建立新的虛擬機器,將解開的虛擬磁碟映像檔指定到磁碟設定中。倘若欲轉換磁碟映像的格式,則可以使用 qemu-img 工具,例如以下指令能夠將 *.vmdk 轉換為 *.qcow2:

  • qemu-img convert -O qcow2 <VMDK 檔案> <QCOW2 檔案>

 

5. 其它參考資料