在 Ubuntu 18.04 LTS 安裝 KVM
我們已經涵蓋了 在 Ubuntu 18.04 上設置 Oracle VirtualBox 無頭伺服器。在本教程中,我們將討論如何使用 KVM 設置無頭虛擬化伺服器,以及如何從遠端客戶端管理來賓機器。如你所知,KVM(Kernel-based virtual machine)是 Linux 的開源全虛擬化方案。使用 KVM,我們可以在幾分鐘內輕鬆將任何 Linux 伺服器轉換為完整的虛擬化環境,並部署各種不同的虛擬機,如 GNU/Linux、*BSD、Windows 等。
在 Ubuntu 中使用 KVM 設置無頭虛擬化服務器
我在 Ubuntu 18.04 LTS 伺服器上測試了這個指南,不過這個教學也適用於其他 Linux 發行版,例如 Debian、CentOS、RHEL 與 Scientific Linux。這個方法非常適合想要在沒有任何圖形介面的 Linux 伺服器上建立簡單虛擬化環境的人。
為了本指南的目的,我將使用兩個系統。
KVM 虛擬化伺服器:
- 主機作業系統 - Ubuntu 18.04 LTS 精簡伺服器(無圖形介面)
- 主機作業系統的 IP 位址 : 192.168.225.22/24
- 來賓作業系統(我們將在 Ubuntu 18.04 上主機化): Ubuntu 16.04 LTS 伺服器
遠端桌面客戶端 :
- 作業系統 - Arch Linux
安裝 KVM
首先,讓我們檢查系統是否支援硬體虛擬化。要進行此操作,請在終端機中執行以下命令:
$ egrep -c '(vmx|svm)' /proc/cpuinfo如果結果是零 (0),表示系統不支援硬體虛擬化或虛擬化在 BIOS 中被禁用。請進入 BIOS,檢查虛擬化選項並啟用它。
如果結果是1或更多,系統將支援硬體虛擬化。不過,在執行上述命令之前,你仍然需要在 BIOS 中啟用虛擬化選項。
或者,你可以使用以下命令來驗證它。你需要先按照下面的描述安裝 kvm,才能使用這個命令。
$ kvm-ok範例輸出:
INFO: /dev/kvm exists
KVM acceleration can be used如果你遇到以下錯誤,你仍然可以在 KVM 中運行客戶機,但性能會非常差。
INFO: Your CPU does not support KVM extensions
INFO: For more detailed results, you should run this as root
HINT: sudo /usr/sbin/kvm-ok此外,還有其他方法可以確認您的 CPU 是否支援虛擬化。請參考以下指南以獲取更多詳細資訊。
- 如何檢查 CPU 是否支援虛擬化技術 (VT)
接下來,安裝 KVM 及其他所需套件,以在 Linux 中設置虛擬化環境。
在 Ubuntu 和其他基於 DEB 的系統上,執行:
$ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker安裝 KVM 後,啟動 libvertd 服務(如果尚未啟動):
$ sudo systemctl enable libvirtd$ sudo systemctl start libvirtd建立虛擬機器
所有虛擬機檔案及其他相關檔案將儲存在 /var/lib/libvirt/。ISO 映像檔的預設路徑是 /var/lib/libvirt/boot/。
首先,讓我們看看是否有任何虛擬機器。要查看可用虛擬機器的列表,請執行:
$ sudo virsh list --all範例輸出:
Id Name State
----------------------------------------------------如您上方所見,目前沒有可用的虛擬機。
現在,讓我們創建一個。
例如,讓我們創建一個具有 512 MB RAM、1 顆 CPU 核心、8 GB 硬碟的 Ubuntu 16.04 虛擬機。
$ sudo virt-install --name Ubuntu-16.04 --ram=512 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-16.04-vm1,size=8 --cdrom /var/lib/libvirt/boot/ubuntu-16.04-server-amd64.iso --graphics vnc請確保您在路徑 /var/lib/libvirt/boot/ 或您在上述命令中指定的任何其他路徑中擁有 Ubuntu 16.04 ISO 映像檔。
範例輸出:
WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING No console to launch for the guest, defaulting to --wait -1
Starting install...
Creating domain... | 0 B 00:00:01
Domain installation still in progress. Waiting for installation to complete.
Domain has shutdown. Continuing.
Domain creation completed.
Restarting guest.讓我們分解上述命令,看看每個選項的作用。
- --name :此選項用於定義虛擬機的名稱。在我們的例子中,VM的名稱是 Ubuntu-16.04。
- --ram=512:分配 512MB 的 RAM 給虛擬機。
- --vcpus=1 :表示虛擬機器中的 CPU 核心數量。
- --cpu host:通過將主機的 CPU 配置暴露給虛擬機來優化 CPU 性能。
- --hvm :請求完整的硬體虛擬化。
- --disk path :用來儲存虛擬機硬碟的位置及其大小。在我們的範例中,我分配了 8GB 的硬碟容量。
- --cdrom:安裝程式 ISO 映像檔的位置。請注意,您必須在此位置擁有實際的 ISO 映像檔。
- --graphics vnc:允許從遠端客戶端透過 VNC 存取虛擬機。
使用 VNC 客戶端存取虛擬機器
現在,前往遠端桌面系統。如以下所示,使用 SSH 連接到 Ubuntu 伺服器(虛擬化伺服器)。
$ ssh sk@192.168.225.22這裡,sk 是我 Ubuntu 伺服器的使用者名稱,192.168.225.22 是它的 IP 位址。
運行以下命令以找出 VNC 端口號。我們需要這個來從遠程系統訪問虛擬機。
$ sudo virsh dumpxml Ubuntu-16.04 | grep vnc範例輸出:
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>記下連接埠號碼 5900。安裝任何 VNC 客戶端應用程式。在本指南中,我將使用 TigerVnc。TigerVNC 可在 Arch Linux 的預設軟體庫中取得。要在基於 Arch 的系統上安裝它,請執行:
$ sudo pacman -S tigervnc在已安裝 VNC 客戶端應用程式的遠端客戶端系統中輸入以下 SSH 端口轉發命令。
$ ssh sk@192.168.225.22 -L 5900:127.0.0.1:5900再次,192.168.225.22 是我的 Ubuntu 伺服器(虛擬化伺服器)的 IP 位址。
然後,從你的 Arch Linux(客戶端)打開 VNC 客戶端。
在 VNC 伺服器欄位中輸入 localhost:5900 並點擊 連線 按鈕。
然後像在實體系統中那樣開始安裝 Ubuntu 虛擬機。
同樣地,您可以根據伺服器硬體規格設置任意多的虛擬機器。
或者,您可以使用 virt-viewer 工具來在虛擬機中安裝作業系統。virt-viewer 在大多數 Linux 發行版的預設軟體庫中均可取得。安裝 virt-viewer 後,執行以下命令以建立對虛擬機的 VNC 存取。
$ sudo virt-viewer --connect=qemu+ssh://192.168.225.22/system --name Ubuntu-16.04管理虛擬機器
使用 virsh 管理使用者介面從命令列管理虛擬機非常有趣且好玩。這些命令很容易記住。讓我們看一些例子。
要查看正在運行的虛擬機列表,請執行:
$ sudo virsh list或者,
$ sudo virsh list --all範例輸出:
Id Name State
----------------------------------------------------
2 Ubuntu-16.04 running要啟動虛擬機,請執行:
$ sudo virsh start Ubuntu-16.04或者,你可以使用虛擬機的 ID 來啟動它。
如你在上方輸出中所見,Ubuntu 16.04 虛擬機的 Id 是 2。因此,要啟動它,只需像下面這樣指定其 Id。
$ sudo virsh start 2要重新啟動虛擬機,請執行:
$ sudo virsh reboot Ubuntu-16.04範例輸出:
Domain Ubuntu-16.04 is being rebooted要暫停正在運行的虛擬機,請執行:
$ sudo virsh suspend Ubuntu-16.04範例輸出:
Domain Ubuntu-16.04 suspended要恢復暫停的虛擬機,請執行:
$ sudo virsh resume Ubuntu-16.04範例輸出:
Domain Ubuntu-16.04 resumed要關閉虛擬機,請執行:
$ sudo virsh shutdown Ubuntu-16.04範例輸出:
Domain Ubuntu-16.04 is being shutdown要完全移除虛擬機,請執行:
$ sudo virsh undefine Ubuntu-16.04$ sudo virsh destroy Ubuntu-16.04範例輸出:
Domain Ubuntu-16.04 destroyed如需更多選項,我建議你查閱手冊頁。
$ man virsh暫時就這些了,各位。開始使用你們的新虛擬化環境吧。KVM 虛擬化將主要用於研究與開發以及測試目的,但不限於此。如果你有足夠的硬體,你也可以將其用於大型生產環境。
相關閱讀:
- 如何在 Ubuntu 22.04 伺服器上安裝 KVM [完整指南]
- 在 Ubuntu 20.04 無頭伺服器上安裝和配置 KVM
資源:
- KVM 網站









