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: -smp 1,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虛擬機的快照


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章