1. 程式人生 > >KVM&QEMU學習筆記(一)

KVM&QEMU學習筆記(一)

1.安裝和配置

使用隨系統自帶的KVM

大部分的Linux發行版已經內建了KVM核心模組以及使用者空間工具,使用這些內建元件是最容易、推薦的方式:KVM核心模組現在是Linux核心的一部分,除非你使用的是精簡過的核心使用者空間元件,軟體包名稱一般是qemu-kvm或者kvm,例如Ubuntu下可以執行 sudo apt-get installqemu-kvm 安裝此元件,客戶機驅動:Linux客戶機的驅動包含在核心中;Windows客戶機的驅動需要下載。

手工構建KVM

安裝QEMU的依賴包:

sudo apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers   pkg-config libgnutls-dev libpci-dev
注意:2.6.29以上版本的核心,可以和任何版本的qemu-kvm搭配使用

構建和安裝使用者空間元件

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虛擬機器的快照