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,則需要此步驟:
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 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
所謂對稱多處理(Symmetrical Multi-Processing) ,是指在一個計算機上彙集了一組處理器,各處理器共享內存子系統以及總線結構。在PC機上QEMU最多可以模擬255個CPU。
你可以這樣配置SMP: -smp 1,sockets=1,cores=1,threads=1 。這個配置表示主板上有一個CPU插槽、1個CPU、每個CPU具有1核心、每個核心具有1個硬件線程(超線程)。你可以在宿主機上創建一個磁盤鏡像文件,然後供客戶機使用。客戶機磁盤I/O都將針對此文件。鏡像文件可以有幾種格式。
這種鏡像的特點是格式簡單,性能較好。
你的文件系統(例如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鏡像:
qemu-img create -f qcow2 hda-back.img 16G
然後,在未來某個時刻把它作爲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
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