RHCSA 系列(十五): 虛擬化基礎和使用 KVM 進行虛擬機器管理
假如你在詞典中查一下單詞 “虛擬化”,你將會發現它的意思是 “創造某些事物的一個虛擬物(而非真實的)”。在計算機行業中,術語虛擬化指的是:在相同的物理(硬體)系統上,同時執行多個作業系統,且這幾個系統相互隔離的可能性,而那個硬體在虛擬化架構中被稱作宿主機。
RHCSA 系列: 虛擬化基礎和使用 KVM 進行虛擬機器管理 – Part 15
通過使用虛擬機器監視器(也被稱為虛擬機器管理程式),虛擬機器(被稱為 guest)由底層的硬體來供給虛擬資源(舉幾個例子來說,如 CPU,RAM,儲存介質,網路介面等)。
考慮到這一點就可以清楚地看出,虛擬化的主要優點是節約成本(在裝置和網路基礎設施,及維護工作等方面)和顯著地減少容納所有必要硬體所需的物理空間。
由於這個簡單的指南不能涵蓋所有的虛擬化方法,我鼓勵你參考在總結部分中列出的文件,以此對這個話題做更深入的瞭解。
請記住當前文章只是用於在 RHEL 7 中用命令列工具使用 KVM (Kernel-based Virtual Machine) 學習虛擬化基礎知識的一個起點,而並不是對這個話題的深入探討。
檢查硬體要求並安裝軟體包
為了設定虛擬化,你的 CPU 必須能夠支援它。你可以使用下面的命令來檢視你的系統是否滿足這個要求:
# grep -E 'svm|vmx' /proc/cpuinfo
在下面的截圖中,我們可以看到當前的系統(帶有一個 AMD 的微處理器)支援虛擬化,svm 字樣的存在暗示了這一點。假如我們有一個 Intel 系列的處理器,我們將會看到上面命令的結果將會出現 vmx 字樣。
檢查 KVM 支援
另外,你需要在你宿主機的硬體(BIOS 或 UEFI)中開啟虛擬化。
現在,安裝必要的軟體包:
- qemu-kvm 是一個開源的虛擬機器程式,為 KVM 虛擬機器監視器提供硬體模擬,而 qemu-img 則提供了一個操縱磁碟映象的命令列工具。
- libvirt 包含與作業系統的虛擬化功能互動的工具。
- libvirt-python 包含一個模組,它允許用 Python 寫的應用來使用由 libvirt 提供的介面。
- libguestfs-tools 包含各式各樣的針對虛擬機器的系統管理員命令列工具。
- virt-install 包含針對虛擬機器管理的其他命令列工具。
命令如下:
# yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install
一旦安裝完成,請確保你啟動並開啟了 libvirtd 服務:
# systemctl start libvirtd.service
# systemctl enable libvirtd.service
預設情況下,每個虛擬機器將只能夠與放在相同的物理伺服器上的虛擬機器以及宿主機自身通訊。要使得虛擬機器能夠訪問位於區域網或因特網中的其他機器,我們需要像下面這樣在我們的宿主機上設定一個橋接介面(比如說 br0):
1、 新增下面的一行到我們的 NIC 主配置中(類似 /etc/sysconfig/network-scripts/ifcfg-enp0s3
這樣的檔案):
BRIDGE=br0
2、 使用下面的內容(注意,你可能需要更改 IP 地址,閘道器地址和 DNS 資訊)為 br0 建立一個配置檔案(/etc/sysconfig/network-scripts/ifcfg-br0
):
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
3、 最後在檔案/etc/sysctl.conf
中設定:
net.ipv4.ip_forward = 1
來開啟包轉發並載入更改到當前的核心配置中:
# sysctl -p
注意,你可能還需要告訴 firewalld 讓這類的流量應當被允許通過防火牆。假如你需要這樣做,記住你可以參考這個系列的 使用 firewalld 和 iptables 來控制網路流量。
建立虛擬機器映象
預設情況下,虛擬機器映象將會被建立到 /var/lib/libvirt/images
中,且強烈建議你不要更改這個設定,除非你真的需要那麼做且知道你在做什麼,並能自己處理有關 SELinux 的設定(這個話題已經超出了本教程的討論範疇,但你可以參考這個系列的第 13 部分 使用 SELinux 來進行強制訪問控制,假如你想更新你的知識的話)。
這意味著你需要確保你在檔案系統中分配了必要的空間來容納你的虛擬機器。
下面的命令將使用位於 /home/gacanepa/ISOs
目錄下的 rhel-server-7.0-x86_64-dvd.iso 映象檔案和 br0 這個網橋來建立一個名為 tecmint-virt01
的虛擬機器,它有一個虛擬 CPU,1 GB(=1024 MB)的 RAM,20 GB 的磁碟空間(由/var/lib/libvirt/images/tecmint-virt01.img
所代表):
# virt-install \
--network bridge=br0
--name tecmint-virt01 \
--ram=1024 \
--vcpus=1 \
--disk path=/var/lib/libvirt/images/tecmint-virt01.img,size=20 \
--graphics none \
--cdrom /home/gacanepa/ISOs/rhel-server-7.0-x86_64-dvd.iso
--extra-args="console=tty0 console=ttyS0,115200"
假如安裝檔案位於一個 HTTP 伺服器上,而不是儲存在你磁碟中的映象中,你必須將上面的 -cdrom
替換為 -location
,並明確地指出線上儲存倉庫的地址。
至於上面的 –graphics none
選項,它告訴安裝程式只以文字模式執行安裝過程。假如你使用一個 GUI 介面和一個 VNC 視窗來訪問主虛擬機器控制檯,則可以省略這個選項。最後,使用 –extra-args
引數,我們將傳遞核心啟動引數給安裝程式,以此來設定一個序列的虛擬機器控制檯。
現在,所安裝的虛擬機器應當可以作為一個正常的(真實的)服務來執行了。假如沒有,請檢視上面列出的步驟。
管理虛擬機器
作為一個系統管理員,還有一些典型的管理任務需要你在虛擬機器上去完成。注:下面所有的命令都需要在你的宿主機上執行:
1. 列出所有的虛擬機器:
# virsh list --all
你必須留意上面命令輸出中的虛擬機器 ID(儘管上面的命令還會返回虛擬機器的名稱和當前的狀態),因為你需要它來執行有關某個虛擬機器的大多數管理任務。
2. 顯示某個虛擬機器的資訊:
# virsh dominfo [VM Id]
3. 開啟,重啟或停止一個虛擬機器作業系統:
# virsh start | reboot | shutdown [VM Id]
4. 假如網路無法連線且在宿主機上沒有執行 X 伺服器,可以使用下面的命令來訪問虛擬機器的序列控制檯:
# virsh console [VM Id]
注:這需要你新增一個序列控制檯配置資訊到 /etc/grub.conf
檔案中(參考剛才建立虛擬機器時傳遞給-extra-args
選項的引數)。
5. 修改分配的記憶體或虛擬 CPU:
首先,關閉虛擬機器:
# virsh shutdown [VM Id]
為 RAM 編輯虛擬機器的配置:
# virsh edit [VM Id]
然後更改
<memory>[記憶體大小,注意不要加上方括號]</memory>
使用新的設定重啟虛擬機器:
# virsh create /etc/libvirt/qemu/tecmint-virt01.xml
最後,可以使用下面的命令來動態地改變記憶體的大小:
# virsh setmem [VM Id] [記憶體大小,這裡沒有括號]
對於 CPU,使用:
# virsh edit [VM Id]
然後更改
<cpu>[CPU 數目,這裡沒有括號]</cpu>
至於更深入的命令和細節,請參考 RHEL 5 虛擬化指南(這個指南儘管有些陳舊,但包括了用於管理虛擬機器的 virsh 命令的詳盡清單)的第 26 章裡的表 26.1。
總結
在這篇文章中,我們涵蓋了在 RHEL 7 中如何使用 KVM 和虛擬化的一些基本概念,這個話題是一個廣泛且令人著迷的話題。並且我希望它能成為你在隨後閱讀官方的 RHEL 虛擬化入門 和 RHEL 虛擬化部署和管理指南 ,探索更高階的主題時的起點教程,並給你帶來幫助。
另外,為了分辨或擴充這裡解釋的某些概念,你還可以參考先前包含在 KVM 系列 中的文章。
via: http://www.tecmint.com/kvm-virtualization-basics-and-guest-administration/
作者:Gabriel Cánepa 譯者:FSSlc 校對:wxy
相關文章
- KVM虛擬機器的管理虛擬機
- 虛擬化技術之kvm虛擬機器建立工具qemu-kvm虛擬機
- 在 fnOS上安裝 KVM 虛擬化,並使用 Cockpit 網頁管理虛擬機器KPI網頁虛擬機
- 虛擬化技術之kvm基礎
- KVM [ 4 ] --- KVM虛擬機器管理:儲存池,虛擬機器快照,網路網橋虛擬機
- KVM虛擬化平臺管理
- 虛擬化四、KVM虛擬化技術
- 虛擬化技術之kvm虛擬機器建立工具virt-install虛擬機
- 玩玩虛擬化-KVM
- 伺服器虛擬化基礎知識:如何虛擬化?伺服器
- JVM虛擬機器基礎JVM虛擬機
- kvm 修改虛擬機器名稱虛擬機
- kvm純命令建立虛擬機器虛擬機
- kvm 安裝 windows 虛擬機器Windows虛擬機
- Linux 安裝 KVM 虛擬機器Linux虛擬機
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- KVM虛擬機器的冷遷移虛擬機
- KVM虛擬機器遷移(靜態)虛擬機
- KVM虛擬機器新增物理網路卡虛擬機
- 讓KVM虛擬機器支援console功能虛擬機
- 虛擬機器系列 | 執行引擎和垃圾回收虛擬機
- 實操:KVM虛擬化管理平臺操作
- 虛擬化實戰:對(類)虛擬機器進行實時熱遷移虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- KVM虛擬化環境搭建
- 部署KVM虛擬化平臺
- 抽空學學KVM(七):虛擬機器快照和克隆虛擬機
- kvm虛擬機器ping 不通閘道器和外網虛擬機
- 【虛擬化資料恢復】KVM虛擬機器誤刪除資料恢復案例資料恢復虛擬機
- 虛擬機器基礎環境配置虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- 虛擬化技術之kvm管理工具virsh常用基礎命令(二)
- 虛擬化技術之kvm管理工具virsh常用基礎命令(一)
- 【原創】Linux虛擬化KVM-Qemu分析(六)之中斷虛擬化Linux
- 【原創】Linux虛擬化KVM-Qemu分析(七)之timer虛擬化Linux
- 主流虛擬化平臺 QEMU-KVM 被曝存在漏洞,可完全控制宿主機及其虛擬機器虛擬機
- Ubuntu虛擬機器進入虛擬環境的流程Ubuntu虛擬機
- 伺服器物理機使用ESXI虛擬化並劃分虛擬機器伺服器虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java