CentOS5.6下安裝配置XEN虛擬機(jī)
使用背景:
最近做項(xiàng)目測(cè)試,每項(xiàng)業(yè)務(wù)需要運(yùn)行獨(dú)立的環(huán)境中,手頭又無多余的服務(wù)器,決定在現(xiàn)有一臺(tái)HP DL380G6的服務(wù)器上創(chuàng)建幾個(gè)虛擬機(jī)以滿足項(xiàng)目測(cè)試的需求
Xen的半虛擬化:
Xen通過一種叫做半虛擬化的技術(shù)獲得高效能的表現(xiàn)(較少的效能損失,典型的情況下大約損失 2%,在最糟的情況下會(huì)有 8% 的效能耗損;與其它使用完全的虛擬化卻造成***到 20% 損耗的其他解決方案形成一個(gè)明顯的對(duì)比),甚至在某些與傳統(tǒng)虛擬技術(shù)極度不友好的架構(gòu)上(x86),Xen也有***的表現(xiàn)。與那些傳統(tǒng)透過軟件模擬實(shí)現(xiàn)硬 件的虛擬機(jī)不同,在3.0版本及在Intel VT-X支援前的Xen需要讓客座作業(yè)系統(tǒng)(guest operating systems)與Xen API進(jìn)行連接。到目前為止,這樣連結(jié)已經(jīng)可以運(yùn)用在NetBSD,GNU/Linux,F(xiàn)reeBSD和貝爾實(shí)驗(yàn)室的Plan 9系統(tǒng)上。在Brainshare 2005會(huì)議上,Novell展示了NetWare與 Xen的連通。與Windows XP連通的技術(shù)曾在Xen開發(fā)初期進(jìn)行,但微軟的協(xié)議未能允許它發(fā)布。Sun微系統(tǒng)公司也正積極研究Solaris與Xen的連結(jié),使其能在Xen平臺(tái)上 運(yùn)作。
Xen的完全虛擬化:
Intel對(duì)Xen貢獻(xiàn)修改以支持其VT-X 架構(gòu)擴(kuò)展,而AMD則修改以支持其AMD-V架構(gòu)擴(kuò)展。如系統(tǒng)處理器支持虛擬硬件擴(kuò)展(Intel和AMD對(duì)本地支持虛擬化的擴(kuò)展),這項(xiàng)技術(shù)將允許未修 改的客操作系統(tǒng)運(yùn)行在Xen虛擬機(jī)中。事實(shí)上,那意味著性能的提升,并且你可以在沒有進(jìn)行任何協(xié)議不允許的修改的情況下對(duì)Windows進(jìn)行虛擬。
虛擬機(jī)的遷移:
Xen虛擬機(jī)可以在不停止的情況下在多個(gè)物理主機(jī)之間即時(shí)遷移(live migration)。在操作過程中,虛擬機(jī)在沒有停止工作的情況下內(nèi)存被反復(fù)的復(fù)制到目標(biāo)機(jī)器。虛擬機(jī)在最終目的地開始執(zhí)行之前,會(huì)有一次60-300 毫秒的非常短暫的暫停以執(zhí)行最終的同步化,給人無縫遷移的感覺。類似的技術(shù)被用來暫停一臺(tái)正在運(yùn)行的虛擬機(jī)到磁盤,并切換到另外一臺(tái),***臺(tái)虛擬機(jī)在以后 可以恢復(fù)。
系統(tǒng)平臺(tái)支持:
Xen目前可以運(yùn)行在x86及x86-64系統(tǒng)上,并正在向IA64、PPC移植。移植到其他平臺(tái)從技術(shù)上是可行的,未來有可能會(huì)實(shí)現(xiàn)
#服務(wù)器信息
HP DL380 G6
#系統(tǒng)環(huán)境
CentOS 5.6 64位
#組件安裝
Base
Development Libraries
Development Tools
Editors
Text-based Internet
#update yum
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
cat >>/etc/yum.repos.d/CentOS-Base.repo<<EOF
[base]
name=CentOS-$releasever - Base
baseurl=http://centos.ustc.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://centos.ustc.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
baseurl=http://centos.ustc.edu.cn/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://centos.ustc.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://centos.ustc.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
EOF
#set ntp
yum -y install ntp
echo "* 3 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1" >> /etc/crontab
service crond restart
#set ulimit
echo "ulimit -SHn 65535" >> /etc/rc.local
#如果看到輸出中有 pae,那么cpu就支持半虛擬化,如果輸出中同時(shí)有pae和vmx/svm(注:vmx為intel,svm為amd),那么cpu支持全虛擬化
cat /proc/cpuinfo |egrep '(flags|vmx)'
#p#
#安裝支持Xen的Linux內(nèi)核和 Xen
yum -y install xen kernel-xen xen-lib virt-manager python-virtinst
kernel-xen:修改的 Linux 核心,使可以跑 Xen 的環(huán)境
xen:主要的 xen 套件,包括配置文件、啟動(dòng)腳本和一些函數(shù)庫
xen-libs:Xen 所需要的函數(shù)庫
python-virtinst:提供終端安裝的軟件
virt-manager:用于圖形界面管理xen
#修改默認(rèn)以支持xen的內(nèi)核啟動(dòng)
vi /boot/grud/grub.conf
default=0
#重啟系統(tǒng)
reboot
#檢查內(nèi)核
uname -r
2.6.18-238.9.1.el5xen
#查看xen是否啟動(dòng)
#============================= 安裝xen虛擬機(jī) ==========================
#制作安裝源
#掛載系統(tǒng)光盤
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
#安裝httpd
yum -y install httpd
#修改httpd默認(rèn)目錄
vi /etc/httpd/conf/httpd.conf
將DocumentRoot "/var/www/html"修改為DocumentRoot "/mnt/cdrom"
將<Directory "/var/www/html">修改為<Directory "/mnt/cdrom">
sed -i 's#DocumentRoot "/var/www/html"#DocumentRoot "/mnt/cdrom"#' /etc/httpd/conf/httpd.conf
sed -i 's#<Directory "/var/www/html">#<Directory "/mnt/cdrom">#' /etc/httpd/conf/httpd.conf
#重啟httpd
service httpd restart
#制作客戶機(jī)主要磁盤
mkdir -p /data/vm
dd if=/dev/zero of=/data/vm/web_001.img bs=2k seek=4096k count=1
#制作客戶機(jī)交換磁盤
#dd if=/dev/zero of=/data/vm/swap.img bs=2k seek=512k count=1
virt-install -n web_001 -r 512 --vcpus=1 --nographic -f /data/vm/web_001.img -l http://192.168.9.220 -x "ip=192.168.9.221 netmask=255.255.255.0 gateway=192.168.9.1"
# -n :后面接虛擬機(jī)名稱,配置 /etc/xen 底下
# -r :后面接分配的內(nèi)存大小,至少需要 256MB 才能夠執(zhí)行
# --vcpus : 分配多少個(gè)cpu
# -f :后面接新建的磁盤文件!
# --nographics :不使用圖形化安裝;
# -p : 半虛擬化
# -s : 虛擬機(jī)的硬盤空間
# -l :后面接安裝源。寫法為:
# NFS : nfs:主機(jī)IP:目錄
# WWW : http://主機(jī)IP/目錄
# FTP : ftp://主機(jī)IP/目錄
#然后根據(jù)系統(tǒng)提示安裝系統(tǒng),使用文本模式安裝,安裝過程跟真實(shí)機(jī)一樣,虛擬機(jī)的配置文件存放在 /etc/xen 下面
#安裝完成后,查看真實(shí)機(jī)上的虛擬機(jī)列表
xm list
#附相關(guān)操作命令:
ls /etc/xen #xen配置文件目錄
#p#
xm list #查看各個(gè)域狀態(tài)
xm shutdown web_001 #關(guān)閉web_001這個(gè)虛擬機(jī)
xm console web_001 連接web_001控制臺(tái),連接到虛擬機(jī)上面可以用組合鍵 ctrl + ] 鍵切換到物理機(jī)
#如果配置了IP,可以用ssh -l username IP 來連接
xm create web_001 啟動(dòng)web_001
#真實(shí)機(jī)開機(jī)如何自動(dòng)啟動(dòng)虛擬機(jī)
ln -s /etc/xen/web_001 /etc/xen/auto/web_001
#也可以直接把配置文件拷貝到/etc/xen/auto/
cp -r /etc/xen/web_001 /etc/xen/auto/
XM命令:
xm create vm1 #其中vm1 為虛擬機(jī)的配置文件,位于/etc/xen/vm/vm1
xm create -c vm1 #如果需要啟動(dòng)控制臺(tái),則可以運(yùn)行命令
xm list #可以列出所有的虛擬機(jī)
xm console <domid> #可以顯示某虛擬機(jī)的控制臺(tái)
xm reboot|shutdown <domid> #可以重起和關(guān)閉id 為domid 的虛擬機(jī)
xm destroy <domid> #可以銷毀id 為domid 的虛擬機(jī)
xm console fc5 #從終端或控制臺(tái)登錄正在運(yùn)行的虛擬操作系統(tǒng)
xm save <DomId> <File> # 存儲(chǔ)正在運(yùn)行的虛擬操作系統(tǒng)的狀態(tài)
xm restore <File> # 喚醒虛擬操作系統(tǒng)
xm pause <DomId> #停止正在運(yùn)行的虛擬操作系統(tǒng)
xm unpause <DomId> #激活停止的虛擬操作系統(tǒng)
xm mem-set <DomId> <Mem> #調(diào)整虛擬平臺(tái)/虛擬操作系統(tǒng)的占用內(nèi)存
xm shutdown 虛擬操作系統(tǒng)的Name或DomID #關(guān)閉被虛擬的系統(tǒng)
xm destroy <DomId> #立即停止虛擬的系統(tǒng) (重要);
xm vcpu-set <DomId> <VCPUs> #調(diào)整虛擬平臺(tái)及虛擬操作系統(tǒng)的虛擬CPU個(gè)數(shù)
xm top 或 xentop # 查看虛擬系統(tǒng)運(yùn)行的狀態(tài)
xm save VM1 VM1.chk # stop the domain and save its current state into a file called VM1.chk
xm restore VM1.chk #resume execution of this domain
#如果覺得手動(dòng)安裝虛擬機(jī)比較麻煩,可以手動(dòng)到 http://stacklet.com/去下載已經(jīng)裝好的鏡像文件
#=============================== XEN虛擬機(jī)復(fù)制 ==============================
#關(guān)閉運(yùn)行中的虛擬機(jī)
xm shutdown web_001
#復(fù)制虛擬機(jī)的鏡像文件和配置文件
cp /data/vm/web_001.img /data/vm/web_002.img
cp /etc/xen/web_001 /etc/xen/web_002
#修改新復(fù)制虛擬機(jī)的配置文件
vi /etc/xen/web_002
#原內(nèi)容為:
name = "web_001"
uuid = "21e3bccf-4778-747e-c3b7-a87cadfa29fa"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/data/vm/web_001.img,xvda,w" ]
vif = [ "mac=00:16:36:64:98:f1,bridge=xenbr0,script=vif-bridge" ]
#修改后的內(nèi)容為:
name = "web_002"
uuid = "21e3bccf-4778-747e-c3b7-a87cadfa29fd"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/data/vm/web_002.img,xvda,w" ]
vif = [ "mac=00:16:36:64:98:f5,bridge=xenbr0,script=vif-bridge" ]
#保證name、uuid、mac的唯一性,還有就是disk路徑
#啟動(dòng)并進(jìn)入新復(fù)制的虛擬機(jī)
xm create -c web_002
#修改主機(jī)名
vi /etc/hosts
將web_001修改為web_002
vi /etc/sysconfig/network
將web_001修改為web_002
#修改IP
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Xen Virtual Ethernet
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.9.255
HWADDR=00:16:36:64:98:f5
IPADDR=192.168.9.222
NETMASK=255.255.255.0
NETWORK=192.168.9.0
ONBOOT=yes
#查看虛擬機(jī)列表及各虛擬機(jī)網(wǎng)絡(luò)測(cè)試
xm list