KVM 介紹(1):簡介及安裝
2. KVM 的功能列表
KVM 所支援的功能包括:
- 支援CPU 和 memory 超分(Overcommit)
- 支援半虛擬化I/O (virtio)
- 支援熱插拔 (cpu,塊裝置、網路裝置等)
- 支援對稱多處理(Symmetric Multi-Processing,縮寫為 SMP )
- 支援實時遷移(Live Migration)
- 支援 PCI 裝置直接分配和 單根I/O 虛擬化 (SR-IOV)
- 支援 核心同頁合併 (KSM )
- 支援 NUMA (Non-Uniform Memory Access,非一致儲存訪問結構 )
3. KVM 工具集合
- libvirt:操作和管理KVM虛機的虛擬化 API,使用 C 語言編寫,可以由 Python,Ruby, Perl, PHP, Java 等語言呼叫。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
- Virsh:基於 libvirt 的 命令列工具 (CLI)
- Virt-Manager:基於 libvirt 的 GUI 工具
- virt-v2v:虛機格式遷移工具
- virt-* 工具:包括 Virt-install (建立KVM虛機的命令列工具), Virt-viewer (連線到虛機螢幕的工具),Virt-clone(虛機克隆工具),virt-top 等
- sVirt:安全工具
4. RedHat Linux KVM 安裝
RedHat 有兩款產品提供 KVM 虛擬化: 1. Red Hat Enterprise Linux:適用於小的環境,提供數目較少的KVM虛機。最新的版本包括 6.5 和 7.0. 2. Red Hat Enterprise Virtualization (RHEV):提供企業規模的KVM虛擬化環境,包括更簡單的管理、HA,效能優化和其它高階功能。最新的版本是 3.0. RedHat Linux KVM:- KVM 由 libvirt API 和基於該 API的一組工具進行管理和控制。
- KVM 支援系統資源超分,包括記憶體和CPU的超分。RedHat Linux 最多支援物理 CPU 核心總數的10倍數目的虛擬CPU,但是不支援在一個虛機上分配超過物理CPU核心總數的虛擬CPU。
- 支援 KSM (Kenerl Same-page Merging 核心同頁合併)
RedHat Linux KVM 有如下兩種安裝方式:
4.1 在安裝 RedHat Linux 時安裝 KVM
選擇安裝型別為 Virtualizaiton Host :
可以選擇具體的 KVM 客戶端、平臺和工具:
4.2 在已有的 RedHat Linux 中安裝 KVM
這種安裝方式要求該系統已經被註冊,否則會報錯:
[[email protected] ~]# yum install qemu-kvm qemu-img Loaded plugins: product-id, refresh-packagekit, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Setting up Install Process Nothing to do
你至少需要安裝 qemu-kvm qemu-img 這兩個包。
# yum install qemu-kvm qemu-img
你還可以安裝其它工具包:
# yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client
4.3 QEMU/KVM 程式碼下載編譯安裝
4.3.1 QEMU/KVM 的程式碼結構
QEMU/KVM 的程式碼包括幾個部分:
(1)KVM 核心模組是 Linux 核心的一部分。通常 Linux 比較新的發行版(2.6.20+)都包含了 KVM 核心,也可以從這裡得到。比如在我的RedHat 6.5 上:
[[email protected] isoimages]# uname -r 2.6.32-431.el6.x86_64 [[email protected] isoimages]# modprobe -l | grep kvm kernel/arch/x86/kvm/kvm.ko kernel/arch/x86/kvm/kvm-intel.ko kernel/arch/x86/kvm/kvm-amd.ko
(2)使用者空間的工具即 qemu-kvm。qemu-kvm 是 KVM 專案從 QEMU 新拉出的一個分支(看這篇文章)。在 QEMU 1.3 版本之前,QEMU 和 QEMU-KVM 是有區別的,但是從 2012 年底 GA 的 QEMU 1.3 版本開始,兩者就完全一樣了。
(3)Linux Guest OS virtio 驅動,也是較新的Linux 核心的一部分了。
(4)Windows Guest OS virtio 驅動,可以從這裡下載。
4.3.2 安裝 QEMU
RedHat 6.5 上自帶的 QEMU 太老,0.12.0 版本,最新版本都到了 2.* 了。
(1). 參考 這篇文章,將 RedHat 6.5 的 ISO 檔案當作本地源
mount -o loop soft/rhel-server-6.4-x86_64-dvd.iso /mnt/rhel6/
vim /etc/fstab
=> /root/isoimages/soft/RHEL6.5-20131111.0-Server-x86_64-DVD1.iso /mnt/rhel6 iso9660 ro,loop
[[email protected] qemu-2.3.0]# cat /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt/rhel6/
enabled=1
gpgcjeck=0
1 |
yum
clean all< br >yum
update
|
(2). 安裝依賴包包
yum install gcc yum install autoconf yum install autoconf automake libtool yum install -y glib* yum install zlib*
tar -jzvf qemu-2.3.0.tar.bz2 cd qemu-2.3.0 ./configure make -j 4 make install
(4). 安裝完成
[[email protected] qemu-2.3.0]# /usr/local/bin/qemu-x86_64 -version qemu-x86_64 version 2.3.0, Copyright (c) 2003-2008 Fabrice Bellard
(5). 為方便起見,建立一個link
ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm
4.3.3 安裝 libvirt
可以從 libvirt 官網下載安裝包。最新的版本是 0.10.2.
5. 建立 KVM 虛機的幾種方式
5.1 使用 virt-install 命令
virt-install \ --name=guest1-rhel5-64 \ --file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \ --file-size=8 \ --nonsparse --graphics spice \ --vcpus=2 --ram=2048 \ --location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \ --network bridge=br0 \ --os-type=linux \ --os-variant=rhel5.4
5.2 使用 virt-manager 工具
使用 VMM GUI 建立的虛機的xml 定義檔案在 /etc/libvirt/qemu/ 目錄中。
5.3 使用 qemu-img 和 qemu-kvm 命令列方式安裝
(1)建立一個空的qcow2格式的映象檔案
qemu-img create -f qcow2 windows-master.qcow2 10G
(2)啟動一個虛機,將系統安裝盤掛到 cdrom,安裝作業系統
qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /home/user/isos/en_winxp_pro_with_sp2.iso
(3)現在你就擁有了一個帶作業系統的映象檔案。你可以以它為模板建立新的映象檔案。使用模板的好處是,它會被設定為只讀所以可以免於破壞。
qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2
(4)你可以在新的映象檔案上啟動虛機了
qemu-kvm -hda windows-clone.qcow2 -m 400