虛拟化
概念:
主控端器(真實機器)
客戶機器(虛拟機,guest os)
優勢:
節約資源:空間,電力。
友善測試環境的搭建。
友善服務線上遷移。
虛拟化技術:
半虛拟化:
客戶機器作業系統必須是修改過的,才能使用半虛拟化。
不需要cpu支援硬體虛拟化技術。
典型代表: Xen
全虛拟化:
必須cpu支援硬體虛拟化。
客戶機器不需要修改核心,原則上可以安裝任何的作業系統。
Intel # cat /proc/cpuinfo | grep vmx
AMD : svm
典型代表: kvm , VMware ESXi
==========================================
使用Xen
# yum install xen kernel-xen -y
# yum install libvirt libvirt-python python-virtinst virt-manager virt-viewer -y
重新開機,選擇進入kernel-xen核心
還需要啟動:xend ,libvirtd 服務
客戶機的名字(domain),與客戶機上跑的作業系統裡的主機名是兩回事。domain名字是用于管理與差別客戶機器用的。
肯定會存在第一個客戶機,它是保留的,其實它代表主控端器,不能對他進行任何管理操作,習慣稱為Dom0.
其他手工建立的客戶機,稱為DomU
例子1:使用圖形界面安裝客戶機
# virt-manager
安裝源
nfs:10.1.1.22:/soft/rhel5_source
File: 磁盤鏡像的存放路徑
預設:/var/lib/xen/p_w_picpaths/node1.img
可以自己修改一個路徑:
/vmware/xen/p_w_picpaths/node1.img
例子2:基于指令行安裝客戶機器
# virt-install -n node2 -r 512 --vcpus=1 -p -l nfs:10.1.1.22:/soft/rhel5_source -x "ks=nfs:10.1.1.22:/soft/rhel5_source/xen-ks.cfg" -f /vmware/xen/p_w_picpaths/node2.img -s 15 -b xenbr0
安裝過程中,可以把客戶機視窗關閉,之後可以通過:
# virt-viewer node2 《--再次檢視
xen的相關配置檔案
xen主配置目錄:/etc/xen/
主配置檔案
# vim /etc/xen/xend-config.sxp
(network-script 'network-bridge netdev=eth0') 《--xenbr0是橋接到實體網卡eth0
注意''号
修改了之後:
# service libvirtd restart
# service network restart
如果還不行:
/etc/xen/scripts/network-bridge stop
/etc/xen/scripts/network-bridge netdev=eth0 start
檢視橋接網絡資訊:
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.000000000000 yes
xenbr0 8000.feffffffffff no peth0 <--peth0說明橋接到eth0
vif0.0
備注: virtbr0 相當于vmware的host only ,該網絡隻允許客戶機之間通訊,客戶機與主控端通信
xenbr0 相當于vmware的橋接,允許客戶機和主控端器以外的機器通訊。
删除橋接網絡
# ifconfig virbr0 down
# brctl delbr virbr0
# brctl help
xen網卡裝置的說明:
假設原有的實體網卡是eth0,當啟用了xend和libvirtd之後:
原有實體網卡eth0被改名為peth0
建立立一個虛拟網卡裝置叫eth0
virbr0 ,預設的虛拟網絡,相當于host only,由libvirtd服務生成
配置檔案/etc/libvirt/qemu/networks/default.xml
xenbr0 ,由xend和libvirtd功能生成的真正意義的橋接網絡,預設是橋接實體網卡eth0
vif0.0,vif0.1 分别對應運作時候客戶機的ID号,是客戶機裡的網卡在宿主主機器上的抽象。 例如vif4.0 代表運作ID為4的客戶機
ID為4的客戶機 綁定的IP 10.1.1.28
指令行管理客戶機:
# xm --help
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 1500 2 r----- 3843.0
node1 4 511 1 -b---- 23.5
^客戶機domain
# xm list -l
直接關客戶機
# xm destroy "domain name"
shutdown
reboot
啟動客戶機:
# xm create node1
或者
# xm create node1 -c 把客戶機的畫面輸出到終端
如果把終端輸出結束
logout
ctrl + ]
把已經啟動的客戶機的畫面輸出到終端,前提:客戶機必須是3級别模式啟動
# xm console node1
每個客戶機都有對應配置檔案,存放在/etc/xen/
如: /etc/xen/node1
name = "node1"
uuid = "dda031a3-9bb6-7af9-dff1-bd49ca0a9e2d"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/vmware/xen/p_w_picpaths/node1.img,xvda,w" ]
vif = [ "mac=00:16:36:71:fc:f4,bridge=xenbr0,script=vif-bridge" ]
思考:如何手工克隆客戶機
關閉被克隆的客戶機
1、拷貝并且重命名配置檔案
2、修改name和uuid
3、拷貝鏡像檔案并且重命名,修改配置檔案指定正确的路徑
4、修改網卡的MAC位址
建議:一般修改了配置檔案或者新增了配置,建議重新開機xend,或者關閉vm管理器圖形界面
=================================================
ACTION=="add", SUBSYSTEM=="net",SYSFS{address}=="00:d0:b7:d3:10:a2",KERNEL=="eth*",NAME="eth0"
==================================================================
客戶機遷移:
遷移:就是把客戶機器移動到另外一個主控端器上運作。
必須滿足以下條件:
1、原主控端器和新主控端器要有相同的體系結構:cpu
2、必須是同一個子網
3、所橋接的網絡必須一樣。例如:被遷移客戶機是使用xenbr0,那麼新的主控端器必須也有相同類型xenbr0裝置,名字必須一樣。
4、足夠的磁盤空間 ,并且磁盤鏡像檔案的路徑必須保持一緻。
/vmware/xen/p_w_picpaths/
靜态遷移:
客戶機在關閉的情況下進行的。導緻服務出現短期的暫停。也能夠在遷移之後保持遷移之前的運作狀态。暫停所需要的時間依賴于磁盤鏡像遠端拷貝的時間。原理是什麼?存儲還原法。
1、儲存目前處于運作狀态客戶機的記憶體資料到檔案
# xm save node4 /vmware/xen/p_w_picpaths/node4_mem.save
2、關閉客戶機器 <---在儲存記憶體資料的時候被自動關閉
3、移動相關配置檔案和鏡像檔案到新的主控端器上。
# rsync -alvR /etc/xen/node4 10.1.1.100:/
# rsync -alvR /vmware/xen/p_w_picpaths/node4.img 10.1.1.100:/
# rsync -alvR /vmware/xen/p_w_picpaths/node4_mem.save 10.1.1.100:/
4、進行還原記憶體資料
在新的主控端器上進行還原:
# xm restore /vmware/xen/p_w_picpaths/node4_mem.save
動态遷移(線上遷移)
客戶機在保持運作的狀态下進行,不會導緻或者隻會導緻非常短期的暫時,察覺不到。
除了上面的基本條件之外,還必須保證被遷移客戶機的磁盤鏡像必須是存放在共享存儲。
Dom0 Dom0
|
DomU ---線上遷移----> DomU
| |
--------------------------
共享存儲:磁盤鏡像檔案 《---獨立儲存設備
理由:不需要在遷移過程中,拷貝鏡像檔案。
共享存儲: iscsi,gnbd,nfs,nas,san
測試環境:使用nfs作為共享存儲。
由于實驗環境中的所有客戶機當初并沒有考慮到線上遷移,都是安裝本地存儲。是以為了做線上遷移實驗,隻能模拟共享存儲環境。
把原本的鏡像檔案通過nfs導出。
/vmware/xen/p_w_picpaths *(rw,sync,no_root_squash)
記憶體資料是如何同步?
1、需要修改原主控端器和新主控端器的配置檔案,讓起支援線上遷移
(xend-unix-server yes)
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
#(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
重新開機xend
# service xend restart
2、需要手工把配置檔案遷移過去
# rsync -alvR /etc/xen/node2 10.1.1.100:/
3、線上遷移記憶體資料。
# xm migrate -l node2 10.1.1.100
把本機的node2客戶機進行線上遷移到10.1.1.100