CentOS5.6下安裝配置XEN虛擬機(1)

Xen通過一種叫做半虛擬化的技術獲得高效能的表現(較少的效能損失,典型的情況下大約損失 2%,在最糟的情況下會有 8% 的效能耗損;與其它使用完全的虛擬化卻造成最高到 20% 損耗的其他解決方案形成一個明顯的對比),甚至在某些與傳統虛擬技術極度不友好的架構上(x86),Xen也有極佳的表現。

AD:2013雲計算架構師峯會精彩課程曝光


使用背景:
最近做項目測試,每項業務需要運行獨立的環境中,手頭又無多餘的服務器,決定在現有一臺HP DL380G6的服務器上創建幾個虛擬機以滿足項目測試的需求

Xen的半虛擬化:
Xen通過一種叫做半虛擬化的技術獲得高效能的表現(較少的效能損失,典型的情況下大約損失 2%,在最糟的情況下會有 8% 的效能耗損;與其它使用完全的虛擬化卻造成最高到 20% 損耗的其他解決方案形成一個明顯的對比),甚至在某些與傳統虛擬技術極度不友好的架構上(x86),Xen也有極佳的表現。與那些傳統透過軟件模擬實現硬 件的虛擬機不同,在3.0版本及在Intel VT-X支援前的Xen需要讓客座作業系統(guest operating systems)與Xen API進行連接。到目前爲止,這樣連結已經可以運用在NetBSD,GNU/Linux,FreeBSD和貝爾實驗室的Plan 9系統上。在Brainshare 2005會議上,Novell展示了NetWare與 Xen的連通。與Windows XP連通的技術曾在Xen開發初期進行,但微軟的協議未能允許它發佈。Sun微系統公司也正積極研究Solaris與Xen的連結,使其能在Xen平臺上 運作。

Xen的完全虛擬化:
Intel對Xen貢獻修改以支持其VT-X 架構擴展,而AMD則修改以支持其AMD-V架構擴展。如系統處理器支持虛擬硬件擴展(Intel和AMD對本地支持虛擬化的擴展),這項技術將允許未修 改的客操作系統運行在Xen虛擬機中。事實上,那意味着性能的提升,並且你可以在沒有進行任何協議不允許的修改的情況下對Windows進行虛擬。

虛擬機的遷移:
Xen虛擬機可以在不停止的情況下在多個物理主機之間即時遷移(live migration)。在操作過程中,虛擬機在沒有停止工作的情況下內存被反覆的複製到目標機器。虛擬機在最終目的地開始執行之前,會有一次60-300 毫秒的非常短暫的暫停以執行最終的同步化,給人無縫遷移的感覺。類似的技術被用來暫停一臺正在運行的虛擬機到磁盤,並切換到另外一臺,第一臺虛擬機在以後 可以恢復。

系統平臺支持:
Xen目前可以運行在x86及x86-64系統上,並正在向IA64、PPC移植。移植到其他平臺從技術上是可行的,未來有可能會實現
#服務器信息
HP DL380 G6

#系統環境
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就支持半虛擬化,如果輸出中同時有pae和vmx/svm(注:vmx爲intel,svm爲amd),那麼cpu支持全虛擬化
cat /proc/cpuinfo |egrep '(flags|vmx)'

2234300.jpg

#安裝支持Xen的Linux內核和 Xen
yum -y install xen kernel-xen xen-lib virt-manager python-virtinst

kernel-xen:修改的 Linux 核心,使可以跑 Xen 的環境
xen:主要的 xen 套件,包括配置文件、啓動腳本和一些函數庫
xen-libs:Xen 所需要的函數庫
python-virtinst:提供終端安裝的軟件
virt-manager:用於圖形界面管理xen

#修改默認以支持xen的內核啓動
vi /boot/grud/grub.conf
default=0

#重啓系統
reboot

#檢查內核
uname -r
2.6.18-238.9.1.el5xen

#查看xen是否啓動

2234301.jpg

#============================= 安裝xen虛擬機 ==========================

#製作安裝源
#掛載系統光盤
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

#安裝httpd
yum -y install httpd

#修改httpd默認目錄
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

#製作客戶機主要磁盤
mkdir -p /data/vm
dd if=/dev/zero of=/data/vm/web_001.img bs=2k seek=4096k count=1

#製作客戶機交換磁盤
#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 -lhttp://192.168.9.220 -x "ip=192.168.9.221 netmask=255.255.255.0 gateway=192.168.9.1"

# -n :後面接虛擬機名稱,配置 /etc/xen 底下
# -r :後面接分配的內存大小,至少需要 256MB 纔能夠執行
# --vcpus : 分配多少個cpu
# -f :後面接新建的磁盤文件!
# --nographics :不使用圖形化安裝;
# -p : 半虛擬化
# -s : 虛擬機的硬盤空間
# -l :後面接安裝源。寫法爲:
# NFS : nfs:主機IP:目錄
# WWW : http://主機IP/目錄
# FTP : ftp://主機IP/目錄

#然後根據系統提示安裝系統,使用文本模式安裝,安裝過程跟真實機一樣,虛擬機的配置文件存放在 /etc/xen 下面

2234302.png
#安裝完成後,查看真實機上的虛擬機列表
xm list

2234303.png

#附相關操作命令:
ls /etc/xen #xen配置文件目錄

xm list #查看各個域狀態
xm shutdown web_001 #關閉web_001這個虛擬機
xm console web_001 連接web_001控制檯,連接到虛擬機上面可以用組合鍵 ctrl + ] 鍵切換到物理機
#如果配置了IP,可以用ssh -l username IP 來連接


xm create web_001 啓動web_001

#真實機開機如何自動啓動虛擬機
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 爲虛擬機的配置文件,位於/etc/xen/vm/vm1
xm create -c vm1 #如果需要啓動控制檯,則可以運行命令
xm list #可以列出所有的虛擬機
xm console <domid> #可以顯示某虛擬機的控制檯
xm reboot|shutdown <domid> #可以重起和關閉id 爲domid 的虛擬機
xm destroy <domid> #可以銷燬id 爲domid 的虛擬機
xm console fc5 #從終端或控制檯登錄正在運行的虛擬操作系統
xm save <DomId> <File> # 存儲正在運行的虛擬操作系統的狀態
xm restore <File> # 喚醒虛擬操作系統
xm pause <DomId> #停止正在運行的虛擬操作系統
xm unpause <DomId> #激活停止的虛擬操作系統
xm mem-set <DomId> <Mem> #調整虛擬平臺/虛擬操作系統的佔用內存
xm shutdown 虛擬操作系統的Name或DomID #關閉被虛擬的系統
xm destroy <DomId> #立即停止虛擬的系統 (重要);
xm vcpu-set <DomId> <VCPUs> #調整虛擬平臺及虛擬操作系統的虛擬CPU個數
xm top 或 xentop # 查看虛擬系統運行的狀態
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

#如果覺得手動安裝虛擬機比較麻煩,可以手動到 http://stacklet.com/去下載已經裝好的鏡像文件

#=============================== XEN虛擬機複製 ==============================
#關閉運行中的虛擬機
xm shutdown web_001

#複製虛擬機的鏡像文件和配置文件
cp /data/vm/web_001.img /data/vm/web_002.img
cp /etc/xen/web_001 /etc/xen/web_002

#修改新複製虛擬機的配置文件
vi /etc/xen/web_002
#原內容爲:
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" ]

#修改後的內容爲:
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路徑
#啓動並進入新複製的虛擬機
xm create -c web_002

#修改主機名
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

#查看虛擬機列表及各虛擬機網絡測試
xm list

2234304.png


【責任編輯:枯木 TEL:(010)68476606】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章