[[PageOutline]]
{{{
#!html
KVM + OpenNebula = Virtual Cluster Deployment
}}}
----
= 【系統環境】 =
* 硬體資源
|| || '''CPU''' ||'''Memory''' || '''Disk''' ||
|| '''Version''' || Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz || 8GB || 1TB ||
* 軟體資源
|| Host/dom0 OS || Debian GNU/Linux testing (squeeze) (64bit) ||
|| KVM || 72+dfsg-5+squeeze1 ||
|| VM/Guest/dmoU OS || MS Windows XP & Debian lenny (AMD64) ||
|| !OpenNebula || 1.4.0 ||
----
= 【Step 1: 檢查 KVM 及其所需環境】 =
* 請先確認 CPU 有支援 (Intel vmx 或 AMD svm 指令集)
{{{
$ egrep '(vmx|svm)' --color=always /proc/cpuinfo
}}}
{{{
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
}}}
----
= 【Step 2: 安裝 KVM 及其所需要的套件並載入模組】 =
* 安裝KVM及其所需相關工具
{{{
$ sudo apt-get install kvm qemu-kvm bridge-utils libvirt-bin virtinst vtun virt-manager
}}}
* 檢查 KVM 模組: kvm-intel 是給 Intel CPU,kvm-amd 是給 AMD CPU
{{{
$ sudo modprobe -l | grep kvm
kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko
}}}
* 載入 KVM module for Intel Chip
{{{
$ sudo modprobe kvm-intel
}}}
----
= 【Step 3: 安裝 !OpenNebula 及其所需要的套件】 =
* '''pcX''' 和 '''pcY''' 須安裝相關套件 (假設有兩台機器要串起來)
{{{
$ sudo aptitude install g++ ruby libsqlite3-0 sqlite3 libsqlite3-dev libsqlite3-ruby libxmlrpc-c3-dev libxmlrpc-c3 libssl-dev scons
}}}
----
= 【Step 4: 下載並安裝!OpenNebula】 =
* 在 pcX 上執行 (!OpenNebula 只需安裝在 pcX 上)
* 下載 source code
{{{
$ cd
$ wget http://dev.opennebula.org/attachments/download/103/one-1.4.0.tar.gz
$ tar zxvf one-1.4.0.tar.gz
}}}
* 編譯和安裝 !OpenNebula
{{{
$ cd one-1.4
$ sudo scons
$ sudo mkdir /home/one
$ sudo ./install.sh -d /home/one
}}}
* 編輯 !OpenNebula 路徑
{{{
$ sudo su
# echo export ONE_LOCATION=/home/one >> ~/.bashrc
# echo export ONE_XMLRPC="http://localhost:2633/RPC2" >> ~/.bashrc
# echo export PATH='$ONE_LOCATION/bin:$PATH' >> ~/.bashrc
# echo export ONE_AUTH=/home/one/.one/one_auth >> ~/.bashrc
# mkdir /home/one/.one
# echo "root:cloud123" >> /home/one/.one/one_auth
# source ~/.bashrc
# echo $ONE_AUTH
(測試 $ONE_AUTH 路徑是否存在)
# echo $ONE_LOCATION
(測試 $ONE_LOCATION 路徑是否存在)
}}}
----
= 【Step 5: 編輯 ONE 設定檔】 =
* 在 pcX 上編輯,將 62~65 & 106~110 & 151~154 行註解掉,打開 70~73 & 115~119 & 159~162 行
{{{
# cd /home/one
# gedit etc/oned.conf
}}}
{{{
#!sh
21 HOST_MONITORING_INTERVAL = 5
23 VM_POLLING_INTERVAL = 10
62 #IM_MAD = [
63 # name = "im_xen",
64 # executable = "one_im_ssh",
65 # arguments = "im_xen/im_xen.conf" ]
70 IM_MAD = [
71 name = "im_kvm",
72 executable = "one_im_ssh",
73 arguments = "im_kvm/im_kvm.conf" ]
106 #VM_MAD = [
107 # name = "vmm_xen",
108 # executable = "one_vmm_xen",
109 # default = "vmm_xen/vmm_xen.conf",
110 # type = "xen" ]
115 VM_MAD = [
116 name = "vmm_kvm",
117 executable = "one_vmm_kvm",
118 default = "vmm_kvm/vmm_kvm.conf",
119 type = "kvm" ]
151 # TM_MAD = [
152 # name = "tm_ssh",
153 # executable = "one_tm",
154 # arguments = "tm_ssh/tm_ssh.conf" ]
159 TM_MAD = [
160 name = "tm_nfs",
161 executable = "one_tm",
162 arguments = "tm_nfs/tm_nfs.conf" ]
}}}
----
= 【Step 6: 啟動 ONE】 =
* 啟動 ONE 前的小叮嚀:
1. 確認 pcX 和 pcY 都已經載入 KVM module
2. 兩台都可讓 '''root 免密碼 ssh 登入'''
{{{
// pcX (Server) 上執行
# ssh-keygen
# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# scp -r ~/.ssh pcY:~
//測試 ssh免密碼登入
ssh pcY
[CTRL+D]
}}}
3. 只需在 '''pcX''' 啟動 ONE 即可
* 在 pcX 上執行
{{{
# one start
}}}
----
= 【Step 7: 新增 pcX 和 pcY 到 ONE Pool】 =
* 在 pcX 上執行
{{{
# onehost add pcX im_kvm vmm_kvm tm_nfs
# onehost add pcY im_kvm vmm_kvm tm_nfs
# onehost list
HID NAME RVM TCPU FCPU ACPU TMEM FMEM STAT
1 pcX 0 400 399 400 1313856 0 on
2 pcY 0 400 399 400 1313856 0 on
# onehost show pcX
}}}
* '''''onehost list'''''參數說明
* RVM - Number of running VMs
* TCPU - Total CPU
* FCPU - Free CPU
* ACPU - Available CPU (not allocated by VMs)
* TMEM - Total Memory
* FMEM - Free Memory
----
= 【Step 8: 製作 VM】 =
== 製作 VM - 以 Microsoft Windows XP 為例 ==
* 產生一個 10GB 的 QEMU disk image format 的檔案
{{{
$ sudo qemu-img create -f qcow2 xp.img 10G
}}}
* 讀取光碟檔並開啟虛擬機器來安裝XP (10GB硬碟空間 & 1GB記憶體大小)
{{{
$ sudo qemu-system-x86_64 -cdrom /home/clouder/xp.iso -hda xp.img -boot d -m 1024 -localtime -net nic -net tap
}}}
* 開啟虛擬機器 (10GB硬碟空間 & 1GB記憶體大小)
{{{
$ sudo qemu-system-x86_64 -hda xp.img -m 1024 -net nic -net tap
}}}
== 製作 VM - 以 Debian 為例 ==
* 產生一個 10GB 的 QEMU disk image format 的檔案
{{{
$ sudo qemu-img create -f qcow2 deb.img 10G
}}}
* 下載 Debian-5.0 ISO file
{{{
$ wget http://cdimage.debian.org/debian-cd/5.0.6/amd64/iso-cd/debian-506-amd64-CD-1.iso
}}}
* 讀取光碟檔並開啟虛擬機器來安裝Debian (10GB硬碟空間 & 1GB記憶體大小)
{{{
$ sudo qemu-system-x86_64 -cdrom /home/clouder/debian-506-amd64-CD-1.iso -hda deb.img -boot d -m 1024 -localtime -net nic -net tap
}}}
* 開啟虛擬機器 (10GB硬碟空間 & 1GB記憶體大小)
{{{
$ sudo qemu-system-x86_64 -hda deb.img -m 1024 -net nic -net tap
}}}
----
= 【Step 9: 使用 ONE 來開啟 VM】 =
* 在 pcX 上執行
* 編輯 xp 的設定檔 (__X 和 Y 請自行修改成自己的電腦名稱__)
{{{
# cd /home/domains
# gedit xp.one
}}}
{{{
#!sh
NAME = xp
CPU = 1
MEMORY = 1024
OS = [ boot = hd ]
DISK = [ source = /var/lib/libvirt/images/xp.img,
clone = no,
target = hda,
readonly = no ]
GRAPHICS = [ type ="sdl",
listen ="127.0.0.1",
port = "5901" ]
}}}
* 使用 ONE 來開啟虛擬機器 xp, 並指定佈署到實體機器 pcX
{{{
# onevm create xp.one ; onevm deploy xp pcX
# onevm list
ID NAME STAT CPU MEM HOSTNAME TIME
1 xp runn 0 131072 pcX 00 00:04:21
# onevm show xp
}}}
* onevm list 的資訊
* ID ONE VM identifier
* NAME Name of the ONE
* STAT Status of the VM
* CPU CPU percentage used by the VM
* MEM Memory used by the VM
* HOSTNAME Host where the VM is being or was run
* TIME Time since the submission of the VM (days hours:minutes:seconds
----
= 【Reference】 =
* [http://www.linux-kvm.org KVM 官網]
* [https://help.ubuntu.com/community/KVM KVM (Ubuntu)]
* 支援
* [http://www.linux-kvm.org/page/Guest_Support_Status KVM Guest 支援狀況]
* [http://www.linux-kvm.org/page/Host_Support_Status KVM Host 支援狀況]
* 安裝
* [http://www.linux-kvm.org/page/HOWTO1 KVM 官網安裝]
* [http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-lenny-server Virtualization With KVM On A Debian Lenny Server]
* 工具
* [http://virt-manager.et.redhat.com/ Virtual Machine Manager]
* Network
* [http://cha.homeip.net/blog/archives/2009/04/fedora_kvm_brid.html Fedora KVM Bridge 備忘]
* [http://blog.bodhizazen.net/linux/kvm_network_scripts/ KVM network scripts]
* [http://www.benjr.tw/?q=node/537 KVM - Network]
* [https://help.ubuntu.com/community/KVM/Networking KVM Networking (Ubuntu)]
* [http://blog.cynapses.org/2007/07/12/qemu-kvm-internal-network-setup/ qemu kvm internal network setup]