1. 程式人生 > >KVM 介紹(1):簡介及安裝

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

5.4 通過 OpenStack Nova 使用 libvirt API 通過程式設計方式來建立虛機 (後面會介紹)