KVM&QEMU學習筆記(一)
1.安裝和配置
使用隨系統自帶的KVM
大部分的Linux發行版已經內建了KVM核心模組以及使用者空間工具,使用這些內建元件是最容易、推薦的方式:KVM核心模組現在是Linux核心的一部分,除非你使用的是精簡過的核心使用者空間元件,軟體包名稱一般是qemu-kvm或者kvm,例如Ubuntu下可以執行 sudo apt-get installqemu-kvm 安裝此元件,客戶機驅動:Linux客戶機的驅動包含在核心中;Windows客戶機的驅動需要下載。
手工構建KVM
安裝QEMU的依賴包:
注意:2.6.29以上版本的核心,可以和任何版本的qemu-kvm搭配使用sudo apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev libpci-dev
構建和安裝使用者空間元件
tar xzf qemu-kvm-release.tar.gz
cd qemu-kvm-release
./configure --prefix=/usr/local/kvm
make
sudo make install
構建和安裝KVM核心模組
如果你使用舊版本核心,或者核心精簡了KVM,則需要此步驟:
tar xjf kvm-kmod-release.tar.bz2
cd kvm-kmod-release
./configure
make
sudo make install
啟用核心模組第一臺虛擬機器# 對於Intel CPU sudo /sbin/modprobe kvm-intel # 對於AMD CPU sudo /sbin/modprobe kvm-amd
要建立虛擬機器,首先要建立一個虛擬磁碟,然後從光碟機啟動此虛擬機器:
mkdir -p ~/Vmware/KVM # 以qcow2格式建立一個16G的虛擬磁碟,注意,預設不會預先分配空間 qemu-img create -f qcow2 ~/Vmware/KVM/centos7-base.img 16G # 指定光碟映象,從光碟機啟動虛擬機器 # -hda 第一塊硬碟的映象 # -cdrom 光碟機的映象,你可以把宿主的/dev/cdrom傳入,這樣可以使用物理光碟機 # -boot 指定啟動順序,d表示第一個光碟機,c表示第一塊硬碟 # -m 為虛擬機器分配多少記憶體,預設單位M,預設128M qemu-system-x86_64 -enable-kvm -hda ~/Vmware/KVM/centos7-base.img -boot d -m 512 -cdrom ~/Software/OS/CentOS-7-x86_64-Minimal-1503-01.iso
上述命令執行完畢之後,會彈出一個視窗,該視窗相當於虛擬機器的顯示器。你可以在其中完成作業系統的安裝。安裝完畢後,執行下面的命令,即可啟動虛擬機器:
qemu-system-x86_64 -enable-kvm -hda ~/Vmware/KVM/centos7-base.img -m 512
配置CPU 使用選項 -cpu 選項可以選擇客戶機使用的CPU,執行 qemu-system-x86_64-cpu help 可以列出QEMU支援的CPU名稱、可用的CPUID標記。
你可以這樣配置一個CPU:
-cpu SandyBridge,+erms,+smep,+fsgsbase,+pdpe1gb,+rdrand,+f16c,+osxsave,+dca,+pcid,+pdcm,\
+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme
SMP配置
所謂對稱多處理(Symmetrical Multi-Processing) ,是指在一個計算機上彙集了一組處理器,各處理器共享記憶體子系統以及匯流排結構。在PC機上QEMU最多可以模擬255個CPU。
你可以這樣配置SMP: -smp1,sockets=1,cores=1,threads=1 。這個配置表示主機板上有一個CPU插槽、1個CPU、每個CPU具有1核心、每個核心具有1個硬體執行緒(超執行緒)。配置磁碟
你可以在宿主機上建立一個磁碟映象檔案,然後供客戶機使用。客戶機磁碟I/O都將針對此檔案。映象檔案可以有幾種格式。
Raw映象這種映象的特點是格式簡單,效能較好。
你的檔案系統(例如Ext3)必須支援稀疏檔案(sparse file),才能避免不必要的磁碟空間佔用。稀疏檔案是一種高效使用磁碟空間的技術,當檔案大小很大,而其絕大部分塊都是空白(未使用)的時,可以基於檔案元資料來表示那些空白的塊(而不是真實的硬碟空間)。
建立Raw映象:
qemu-img create -f raw hda.img 1G
# 檢視映象資訊
qemu-img info hda.img
# image: hda.img
# file format: raw
# virtual size: 1.0G (1073741824 bytes)
# disk size: 0
你也可以使用dd命令產生Raw映象,例如:
# 產生非稀疏檔案:塊大小1MB,寫入1024個塊,虛擬大小1G,實際大小1G
dd if=/dev/zero of=hda.img bs=1024k count=1024
# 產生稀疏檔案:塊大小1MB,寫入0個塊,虛擬大小1G,實際大小0
dd if=/dev/zero of=hda.img bs=1024k count=0 seek=1024
建立qcow2映象
你可以這樣建立一個qcow2映象:
qemu-img create -f qcow2 hda-back.img 16G
轉為backing file
然後,在未來某個時刻把它作為backing file使用:
qemu-img create -f qcow2 -o backing_file=hda-back.img hda.img
壓縮、加密和擴充套件
映象hda.img在一開始是空白的,所有資料都是從hda-back.img中獲取,一旦發生寫入操作,hda.img就開始有資料而hda-base.img保持不變。
使用下面的命令可以壓縮一個qcow2映象:
qemu-img convert -c -f qcow2 -O qcow2 hda.img hda.compressed.img
使用下面的命令可以為一個qcow2映象設加密:
qemu-img convert -o encryption -f qcow2 -O qcow2 hda.img hda.encrypted.img
# 提示輸入密碼
使用壓縮映象啟動虛擬機器時,必須在Monitor中輸入密碼才可以。
使用下面的命令,可以擴充套件一個qcow2映象的大小:
qemu-img resize hda.img +10G
注意:擴大得到的空間,不會被分割槽或者格式化。
格式轉換
你可以把一個映象的格式在Raw和qcow2之間進行轉換:
# 把Raw格式的hda.img轉換為qcow2格式的hda.qcow2
qemu-img convert -f raw -O qcow2 hda.img hda.qcow2
下一·篇開始講kvm虛擬機器的快照