2019年1月15日 星期二

CentOS 7.6 上安裝 Linux KVM虛擬機器



經過了十年的洗禮,虛擬機器早已是大家日常IT工作的好夥伴了,有伺服器等級的 Esxi、Hyper-V,也有應用等級的 Vmware Workstation、Oracle Virtualbox,今天要介紹一款在 Linux底下、我常用的虛擬機器 KVM(Kernel Virtual Machine),由於獲得了 Linux核心的支持,也讓 KVM在虛擬機器的世界裡佔有一席之地。

Linux KVM有多厲害呢?平凡如 Synology VMM、複雜到 Google Compute Engine都以 KVM技術作為核心來搭建,趕緊來看看如何在我們的實體機器上建立一個 KVM環境吧!




1. KVM 環境安裝


安裝環境是在 CentOS 7.6x64 Desktop,首先要確認你的主機是否有開啟 CPU虛擬化支持,輸入以下指令查詢,正確的話應該會出現 Intel VT或 AMD SVM的關鍵字,這部分通常2010年後市面上販售的 CPU都有支援,如果沒有的話請去 BIOS將該功能開啟。
[root@server ~]# grep -E '(vmx|svm)' /proc/cpuinfo
安裝 KVM所需套件
[root@server ~]# yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer
我的硬體是建置於 AMD平台,確認系統是否已載入 CPU虛擬化所需模組
[root@server ~]# lsmod | grep kvm
kvm_amd              2177212  12 
kvm                   586948  1 kvm_amd
irqbypass              13503  9 kvm
開機預設啟用並啟動 libvirtd虛擬機器管理服務
[root@server ~]# systemctl enable libvirtd && systemctl start libvirtd



2. KVM 網路橋接


預設你的網路服務是 network,開始修改並停用eth0網卡讓實體主機除了能擁有原本的 IP以外,更能把自身的網路橋接給虛擬機器
[root@server ~]# nano /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet 
PROXY_METHOD=none 
BROWSER_ONLY=no 
BOOTPROTO=none 
DEFROUTE=yes 
IPV4_FAILURE_FATAL=no 
NAME=eth0 
DEVICE=eth0 
ONBOOT=yes 
BRIDGE=br0
新增橋接網卡 br0,IPADDR包含以下的資訊要改為你主機的IP環境
[root@server ~]# nano /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge 
BOOTPROTO=static
NAME=br1 
DEVICE=br0 
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.186.1.254
DSN1=168.95.1.1
DNS2=8.8.8.8
重啟網路服務讓br0生效
[root@server ~]# systemctl restart network



3. KVM 圖形化管理介面


KVM支持指令與API來建置管理虛擬機器,但那真的很勞累,建議直接使用圖形化GUI工具Virt-manager來管理你的虛擬機器。注意你的本機需要安裝 X Windows才能使用這個工具、或者是遠端使用 X11 forwarding的功能搭配Putty、透過Xming在你的客戶端桌面開啟。


呼叫你的圖形化管理工具
[root@server ~]# virt-manager
極為輕量、簡潔的介面,首先來開啟一個新的虛擬機器吧

選擇安裝媒介,此例為虛擬 CDROM

選擇虛擬 CDROM的 ISO映像檔,請以你的路徑為主

配置虛擬機器將會占用本機的 CPU與記憶體資源

配置虛擬磁碟的容量大小,這邊貪圖方便選擇系統幫我建立

虛擬網路卡選擇 Bridge br0的意思是該虛擬機器會跟本機共享網路埠 br0所連接的網路,如果你的本機網路來源是 DHCP,那麼虛擬網路卡也能取得這個 DHCP的網路,最後幫虛擬主機取一個名字吧!

檢視一下各項虛擬配置是否需要調整,若無則直接 Begin

恭喜!現在開始準備安裝作業系統到你的第一台虛擬機器囉!



番外篇. qcow2格式的虛擬磁碟


按照上面的虛擬機器建置方式,猛然發現本機上會多了一個 100GB的檔案,也就是 Virt-manager幫我建立的虛擬磁碟,雖然副檔名是 qcow2,但實際上都幫你填零了,不折不扣就像是 raw格式一樣,但其實我裝好 GuestOS後也才使用了 1.1GB啊!

所謂的 raw、如同你的實體硬碟一樣,每一個虛擬磁區都是真實存在,所以 100GB就是實實在在的 100GB,好處是因為預先將每一個虛擬磁區都填零,都已經是早就存在無須確認的配置,所以在跑虛擬機器的時候速度會比較快。

但通常跑 KVM我們比較常會使用的是 qcow2的虛擬磁碟格式,可以想像這個虛擬磁碟在建立的時候,其實只是用參數簡單的定義了磁碟大小與格式,真正被虛擬機器存取的時候才會因應需求填零或填入真正的資料,所以占用本機的原始空間真的非常小,也就是所謂的 thin provisioning,例如我的虛擬機器安裝了 1.1GB資料的作業系統,那這個 qcow2虛擬磁碟檔案實際占用本機的空間就是 1.1GB,也因為這種空殼的假象,如果今天虛擬機器突然下載了一個巨量資料,那麼 qcow2還要急急忙忙的在這個下載的過程中轉換出原本沒有的虛擬磁區,這便造成了 qcow2和 raw 效率上的差異,但由於 qcow2還另外支援了 snapshot快照功能,所以個人還是比較偏好,以下補充如何利用 qcow2的虛擬磁碟來建立虛擬機器:



虛擬磁碟檔的安放系統路徑請改為你自己的
[root@server ~]# qemu-img create -f qcow2 /home/tester/kvm-storage/CentOS76_minimal-template100G.img 100g

Formatting 'CentOS76_minimal-template100G.img', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 lazy_refcounts=off

[root@server ~]# ls -lah /home/tester/kvm-storage/CentOS76_minimal-template100G.img
-rw-r--r--. 1 root root 194K Jan 13 21:25 CentOS76_minimal-template100G.img
Virt-manager在創建新的虛擬機器時,在安裝媒介改為匯入已經存在的虛擬磁碟

選擇剛剛我們透過 qemu-img指令所創建的 qcow2虛擬磁碟

選擇適用於該虛擬機器的 GuestOS作業系統配置

最後到這一步,我們需要額外增加一個虛擬硬體才能進行 GuestOS的安裝

沒錯!就是虛擬 CDROM

另外在虛擬開機選單也要把剛加入的虛擬 CDROM給加入喔!




本文內容參閱以下連結:
How to install KVM on CentOS 7 / RHEL 7 Headless Server
Install KVM Hypervisor on CentOS 7.x and RHEL 7.x


0 意見: