https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/
作者 | Sk
譯者 | qhwdw ?共計翻譯:152.5 篇 貢獻時間:345 天
我們已經講解了 在 Ubuntu 18.04 無頭伺服器上配置 Oracle VirtualBox[1] 。在本教程中,我們將討論如何使用 KVM 去配置無頭虛擬化伺服器,以及如何從一個遠端客戶端去管理訪客系統。正如你所知道的,KVM(Kernel-based virtual machine)是開源的,是 Linux 上的全虛擬化。使用 KVM,我們可以在幾分鐘之內,很輕鬆地將任意 Linux 伺服器轉換到一個完全的虛擬化環境中,以及部署不同種類的虛擬機器,比如 GNU/Linux、*BSD、Windows 等等。
使用 KVM 配置無頭虛擬化伺服器
我在 Ubuntu 18.04 LTS 伺服器上測試了本指南,但是它在其它的 Linux 發行版上也可以使用,比如,Debian、CentOS、RHEL 以及 Scientific Linux。這個方法完全適合哪些希望在沒有任何圖形環境的 Linux 伺服器上,去配置一個簡單的虛擬化環境。
基於本指南的目的,我將使用兩個系統。
KVM 虛擬化伺服器:
遠端桌面客戶端:
安裝 KVM
首先,我們先檢查一下我們的系統是否支援硬體虛擬化。為此,需要在終端中執行如下的命令:
$ egrep -c '(vmx|svm)' /proc/cpuinfo
假如結果是 zero (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 是否支援虛擬化。更多資訊參考接下來的指南。
接下來,安裝 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 記憶體、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
:這個選項定義虛擬機器名字。在我們的案例中,這個虛擬機器的名字是 Ubuntu-16.04
。–ram=512
:給虛擬機器分配 512MB 記憶體。–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
示例輸出:
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
,然後點選 “Connect” 按鈕。
然後就像你在物理機上安裝系統一樣的方法開始安裝 Ubuntu 虛擬機器。
同樣的,你可以根據你的伺服器的硬體情況配置多個虛擬機器。
或者,你可以使用 virt-viewer
實用程式在訪客機器中安裝作業系統。virt-viewer
在大多數 Linux 發行版的預設倉庫中都可以找到。安裝完 virt-viewer
之後,執行下列的命令去建立到虛擬機器的訪問連線。
$ 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 手冊頁:
$ man virsh
今天就到這裡吧。開始在你的新的虛擬化環境中玩吧。對於研究和開發者、以及測試目的,KVM 虛擬化將是很好的選擇,但它能做的遠不止這些。如果你有充足的硬體資源,你可以將它用於大型的生產環境中。如果你還有其它好玩的發現,不要忘記在下麵的評論區留下你的高見。
謝謝!
via: https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/
作者:SK[4] 選題:lujun9972 譯者:qhwdw 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出