遷移:
? ? ? ?系統(tǒng)的遷移是指把源主機(jī)上的操作系統(tǒng)和應(yīng)用程序移動(dòng)到目的主機(jī),并且能夠在目的主機(jī)上正常運(yùn)行。在沒有虛擬機(jī)的時(shí)代,物理機(jī)之間的遷移依靠的是系統(tǒng)備份和恢復(fù)技術(shù)。在源主機(jī)上實(shí)時(shí)備份操作系統(tǒng)和應(yīng)用程序的狀態(tài),然后把存儲(chǔ)介質(zhì)連接到目標(biāo)主機(jī)上,最后在目標(biāo)主機(jī)上恢復(fù)系統(tǒng)。隨著虛擬機(jī)技術(shù)的發(fā)展,系統(tǒng)的遷移更加靈活和多樣化。
?
最終我們遷移的目的就是:
? ? ? ?簡化系統(tǒng)維護(hù)管理;
??? ?高系統(tǒng)負(fù)載均衡;
??? ?增強(qiáng)系統(tǒng)錯(cuò)誤容忍度;
??? 優(yōu)化系統(tǒng)電源管理。
KVM 虛擬機(jī)的熱遷移Live Migration:
? ? 服務(wù)器虛擬化技術(shù)是當(dāng)前的熱點(diǎn),而虛擬機(jī)的“熱遷移( Live Migration )”技術(shù)則是虛擬化技術(shù)當(dāng)中的熱點(diǎn)。
熱遷移(又叫動(dòng)態(tài)遷移、實(shí)時(shí)遷移),即虛擬機(jī)保存( save ) / 恢復(fù) (restore) :將整個(gè)虛擬機(jī)的運(yùn)行狀態(tài)完整保存下來,同時(shí)可以快速的恢復(fù)到原有硬件平臺(tái)甚至是不同硬件平臺(tái)上?;謴?fù)以后,虛擬機(jī)仍舊平滑運(yùn)行,用戶不會(huì)察覺到任何差異。
?
遷移的種類:
P2P :物理機(jī)之間的遷移;
V2P :虛擬機(jī)遷到物理機(jī);
P2V :物理機(jī)遷到虛擬機(jī);
V2V :虛擬機(jī)遷到虛擬機(jī)。
1> 虛擬機(jī)的熱遷移技術(shù)最初是被用于雙機(jī)容錯(cuò)或者負(fù)載均衡:當(dāng)宿主機(jī)出現(xiàn)軟硬件故障導(dǎo)致服務(wù)異常時(shí),虛擬機(jī)可漂移到另外主機(jī)上,或者在集群中依據(jù)工作負(fù)載量的大小,選擇更換宿主機(jī)與否來保證自身良好的服務(wù)提供性。
2> 系統(tǒng)硬件維護(hù):當(dāng)前很多操作系統(tǒng)都能夠穩(wěn)定支持 7×24 運(yùn)行,但是硬件卻需要定期的進(jìn)行維護(hù)。如果使用虛擬機(jī)的動(dòng)態(tài)遷移技術(shù),將虛擬機(jī)從需要維護(hù)的物理機(jī)器遷移到另外一主器,等維護(hù)完成后,在將其遷回到原來的物理機(jī)器。所有的系統(tǒng)服務(wù)和應(yīng)用程序在遷移 & 恢復(fù)后仍舊正常運(yùn)行,用戶不會(huì)察覺到由于硬件維護(hù)造成的中斷。最終實(shí)現(xiàn)了我們服務(wù)不受硬件維護(hù)干擾的 7*24 小時(shí)的工作愿望。
3> 數(shù)據(jù)庫備份:對(duì)于一些大型、關(guān)鍵的數(shù)據(jù)庫應(yīng)用,備份是一項(xiàng)重要但復(fù)雜的工作。虛擬機(jī)的保存/ 恢復(fù)可以將數(shù)據(jù)庫運(yùn)行在虛擬機(jī)中,如需備份就保存虛擬機(jī),這樣數(shù)據(jù)庫中的所有數(shù)據(jù)、狀態(tài)都做了備份。如果數(shù)據(jù)庫崩潰了,就可以通過恢復(fù)虛擬機(jī)來恢復(fù)整個(gè)數(shù)據(jù)庫。
4> 環(huán)境重現(xiàn):進(jìn)行性能測試或程序調(diào)試時(shí),都需要重現(xiàn)當(dāng)時(shí)復(fù)雜龐大并且與實(shí)時(shí)完全一致的網(wǎng)絡(luò)環(huán)境 , 不僅僅是重啟、配置軟件,而且常常需要一定的運(yùn)行時(shí)間。我們可以將各服務(wù)安裝到獨(dú)立的各個(gè)虛擬機(jī),然后利用各個(gè)獨(dú)立虛擬機(jī)部署我們所需的工作環(huán)境,可以大大縮短環(huán)境重現(xiàn)時(shí)間。
5> 計(jì)算機(jī)共享: 在一些公共場合用戶需要共享計(jì)算機(jī),但是由于不同的系統(tǒng)配置和軟件需要花費(fèi)大量的時(shí)間來配置和恢復(fù)。這時(shí)使用虛擬機(jī)的保存 /恢復(fù)可以很好地解決這個(gè)問題。或者也可以,在物理機(jī)上運(yùn)行多個(gè)邏輯虛擬機(jī)幫助我們分配給每一個(gè)需要者一個(gè)獨(dú)立,安全,穩(wěn)定的環(huán)境。當(dāng)因?yàn)樗拗鳈C(jī)出現(xiàn)問題影響虛擬機(jī)使用時(shí),我們可以讓該虛擬機(jī)漂移到其他宿主機(jī)以此來保持正常工作。
1> 首先是可伸縮性比較強(qiáng), IT 管理者可以在合理時(shí)間段讓運(yùn)行某些關(guān)鍵業(yè)務(wù)的服務(wù)器適當(dāng)減少工作量,以便進(jìn)行更新操作系統(tǒng),給應(yīng)用程序打補(bǔ)丁等。而到了服務(wù)高峰期,又可以彈性地進(jìn)行大負(fù)載量的運(yùn)算。虛擬機(jī)遷移過程完全透明,幾乎不影響使用。
2> 其次,現(xiàn)在的數(shù)據(jù)中心都追求環(huán)保節(jié)能, 工作量負(fù)載大的應(yīng)用程序必然會(huì)令服務(wù)器能耗增加,有了虛擬機(jī)熱遷移技術(shù),當(dāng)一臺(tái)物理服務(wù)器負(fù)載過大時(shí),系統(tǒng)管理員可以將其上面的虛擬機(jī)遷移到其他服務(wù)器,可有效減低數(shù)據(jù)中心服務(wù)器的總體能耗,再通過冷卻系統(tǒng)將數(shù)據(jù)中心的溫度保持在正常水平。
進(jìn)行虛擬機(jī)的熱遷移也有不少的限制。例如,
??? ?VMotion 在進(jìn)行遷移之前,管理軟件會(huì)檢測目標(biāo)服務(wù)器的 X86 架構(gòu)是否與原服務(wù)器兼容。包括存儲(chǔ)設(shè)備以及處理器,虛擬機(jī)必須放到共享的存儲(chǔ)里, CPU 的類型也要一樣,不僅不能一個(gè)是英特爾,一個(gè)是 AMD ,甚至相同廠商不同產(chǎn)品線的CPU 也不行,比如英特爾至強(qiáng)和奔騰。
1> 整體遷移時(shí)間:從源主機(jī)中遷移操作開始到目的主機(jī)上客戶機(jī)服務(wù)處于不可用狀態(tài)的時(shí)間,此時(shí)源主機(jī)上客戶機(jī)已經(jīng)暫停服務(wù),目的主機(jī)上的客戶機(jī)還未恢復(fù)服務(wù)。
2> 服務(wù)器停機(jī)時(shí)間:在遷移過程中,源主機(jī)和目的主機(jī)上的客戶機(jī)都處于不可用狀態(tài)的時(shí)間,此時(shí)源主機(jī)上客戶機(jī)已暫停,目的目的主機(jī)上客戶還未恢
復(fù)服務(wù)。
3> 對(duì)服務(wù)的性能影響:不僅包括遷移后的客戶機(jī)中應(yīng)用程序的性能與遷移前相對(duì)比是否有所降低,還包括遷移后對(duì)目的主機(jī)上的其他服務(wù)的性能影響。
1> 源宿主機(jī)和目的宿主機(jī)直接盡量用網(wǎng)絡(luò)共享的存儲(chǔ)系統(tǒng)來保存客戶機(jī)磁盤鏡像。例如 NFS , ISCSI , Glusterfs 等。
2> 為了提高動(dòng)態(tài)遷移的成功率,盡量在同類型 cpu的主機(jī)上面進(jìn)行動(dòng)態(tài)遷移,盡管 kvm 動(dòng)態(tài)遷移也支持從 Intel 平臺(tái)遷移到 amd 平臺(tái)。? 但,從安全性,穩(wěn)定度考慮不建議這樣去操作。
3> 64 位的客戶機(jī)只能運(yùn)行在 64 宿主機(jī)之間的遷移,而 32 位客戶機(jī)可以在 32 宿主機(jī)和 64 位宿主機(jī)之間遷移。
4> 在進(jìn)行動(dòng)態(tài)遷移時(shí),被遷移客戶機(jī)的名稱是唯一的,在目的宿主機(jī)上不能有與源宿主機(jī)被遷移客戶機(jī)同名的客戶機(jī)存在。
5> 目的宿主機(jī)和源宿主機(jī)的軟件盡可能的相同。也就是同為 Vmware , KVM , Xen 等。
遷移所用主機(jī):192.168.16.3、192.168.16.13,從.13遷移虛擬機(jī)vm1至.3。
1> 修改主機(jī)名。主機(jī)名相同無法進(jìn)行遷移
?
192.168.16.3[root@localhost ~]# hostnamectl set-hostname ajyone[root@localhost ~]# hostnameajyone192.168.16.13[root@localhost ~]# hostnamectl set-hostname ajytwo[root@localhost ~]# hostnameajytwo
?
2> 搭建nfs共享存儲(chǔ)
#192.168.16.13:[root@localhost ~]# mount /dev/cdrom /mntmount: /dev/sr0 寫保護(hù),將以只讀方式掛載[root@localhost ~]# yum install nfs-utils rpcbind -y[root@localhost ~]# mkdir /nfsdata[root@localhost ~]# vim /etc/exports/nfsdata *(rw,sync)[root@localhost ~]# chown -R nfsnobody: /nfsdata[root@localhost ~]# systemctl restart rpcbind nfs[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0[root@localhost ~]# showmount -eExport list for localhost.localdomain:/nfsdata *#192.168.16.3:[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0[root@localhost ~]# yum install nfs-utils -y[root@localhost ~]# showmount -e 192.168.16.13Export list for 192.168.16.13:/nfsdata *[root@localhost ~]# mkdir /nfsdata[root@localhost ~]# mount -t nfs 192.168.16.13:/nfsdata /nfsdata[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0[root@localhost ~]# df -h192.168.16.13:/nfsdata 27G 12G 16G 44% /nfsdata
?
3> 先進(jìn)行冷遷移,將.8的vm3遷移至/nfsdata目錄下
[root@localhost ~]# virsh list --all Id 名稱 狀態(tài)---------------------------------------------------- - centos7.0 關(guān)閉 - vm1 關(guān)閉 - vm2 關(guān)閉 - vm3 關(guān)閉[root@localhost ~]# cd /etc/libvirt/qemu/[root@localhost qemu]# lscentos7.0.xml networks vm1.xml vm2.xml vm3.xml[root@localhost qemu]# cp vm3.xml vm3.xml.bak[root@localhost qemu]# mv vm3.xml /root[root@localhost qemu]# virsh undefine vm3域 vm3 已經(jīng)被取消定義[root@localhost qemu]# cd /var/lib/libvirt/images/[root@localhost images]# lscentos7.0.qcow2 CentOS-7-x86_64-DVD-1611.iso vm1.qcow2 vm3.qcow2[root@localhost images]# mv vm3.qcow2 /nfsdata[root@localhost images]# cd /root[root@localhost ~]# lsvm3.xml[root@localhost ~]# vim vm3.xml<disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/CentOS-7-x86_64-DVD-1611.iso'/>[root@localhost ~]# cd /nfsdata/[root@localhost nfsdata]# lsvm3.qcow2[root@localhost ~]# virsh define vm3.xml定義域 vm3(從 vm3.xml)[root@localhost ~]# virsh start vm3域 vm3 已開始[root@localhost ~]# virsh list --all Id 名稱 狀態(tài)---------------------------------------------------- 1 vm3 running - centos7.0 關(guān)閉 - vm1 關(guān)閉 - vm2 關(guān)閉
?
4>編輯域名解析
#每臺(tái)主機(jī)都寫[root@localhost ~]# vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.16.3 ajyone192.168.16.13 ajytwo
?
5> 兩臺(tái)宿主機(jī)互連,準(zhǔn)備熱遷移
6> 進(jìn)行遷移?
?
?
7> 遷移完成后,在.3打開遷移過去的終端vm3,查看終端業(yè)務(wù)是否停止
?
?此時(shí)開機(jī)會(huì)提示對(duì)/nfsdata/vm3.qcow2無權(quán)限,無法打開,給權(quán)限即可
[root@localhost /]# cd /nfsdata/[root@localhost nfsdata]# lsvm3.qcow2[root@localhost nfsdata]# chmod 777 vm3.qcow2[root@localhost nfsdata]# ll總用量 1420100-rwxrwxrwx. 1 root root 1454243840 6月 24 19:23 vm3.qcow2[root@localhost nfsdata]#
然后再將該虛擬機(jī)遷移至192.168.16.13,查看界面是否改變,若沒有改變則表示熱遷移成功,即在不影響使用的情況下進(jìn)行了遷移
切換至192.168.16.13終端查看窗口界面相同,遷移成功。
來源:https://www.icode9.com/content-4-266351.html聯(lián)系客服