
2015-06-30  ♠≤;| 發布者:梁國(guó)芳&n<₽δ♥bsp; | &n§★♠bsp; 查看(kàn):3320次→'÷
IT新聞小(xiǎo)米目前內(nèi)部建設的(de)是(shì)☆↓高(gāo)可(kě)用(yòng)的(←γde)私有(yǒu)雲平台,為(wèi)全公司提供統一(yī)± £的(de)雲服務平台。提供彈性的(de)資源分(fēn)配↓←和(hé)部署方式,同時(shí)提高(gāo)資源的(de)分(fēβ'α™n)配和(hé)管理(lǐ)效率。減少(shǎo)服務資源的§☆♣(de)交付周期。為(wèi)此小(xiǎo)米定了(l¥×φ↔e)四大(dà)目标:
小(xiǎo)米基于這(zhè)四點做(♦λ©zuò)了(le)私有(yǒu)雲平台,有(yǒu)著(zhe)"∑×✘數(shù)千台VM的(de)OpenStack集群,α≤σ穩定服務公司線上(shàng)線下(xià)業(yè)務≤β一(yī)年(nián)多(duō)時(shí)間(≤×σjiān),數(shù)據說(shuō)明(míng© )如(rú)下(xià):
現(xiàn)在整個(gè)平台上(shàng)運行(xíng)在四個(€₩gè)機(jī)房(fáng),有(yǒu)2000+VM,4500+物(w±✘ù)理(lǐ)機(jī)內(nèi)核(E5-2640);機(jī)器(qì♣γ∏₩)的(de)配置主要(yào)為(wèi&∑£):50T內(nèi)存、1200T虛拟磁盤、480T塊存儲、12™♦←0T對(duì)象存儲。

上(shàng)圖是(shì)小(xiǎo)米根據自(zì)己的(d✘ δe)情況定制(zhì)的(de)DashbΩ≠♠→oard的(de),分(fēn)為(wèi)動态信息和≤₹≠(hé)靜(jìng)态信息兩個(gè)部分(fēn),靜(j∏®Ωìng)态信息顯示的(de)是(shì)資源的(de)分(fēn)配情況 ∞β÷,動态信息顯示的(de)是(shì)目前資源的(de)使用(yòng)情↕§γ況。

上(shàng)圖是(shì)OpenStack物(&↕&Ωwù)理(lǐ)主機(jī)的(de)使用(yòng)情況,機(jī)器(☆'γ→qì)是(shì)負載明(míng)顯看(k$☆∞≤àn)出是(shì)分(fēn)層的(d£✘≥e),因為(wèi)是(shì)一(yī)批一(yī)批上(shà<→<ng)的(de)機(jī)器(qì),後面機(jī)π✔βε器(qì)由于虛拟機(jī)的(de)使用(y≠✔÷òng)還(hái)沒有(yǒu)分(fēn)配滿,所以CPU LO™✘AD會(huì)低(dī)一(yī)些(xiē)。

上(shàng)圖是(shì)虛拟機(jī)的(de)負載情況,可(kě)以←≤←看(kàn)出,有(yǒu)些(xiē)虛拟β>€機(jī)的(de)負載程周期性變化(huà),可(kě)$>♥能(néng)是(shì)跑的(de)和(hé)₩®Ω流量相(xiàng)關的(de)一(yī)些(xiē)線上(shàng)業(α☆yè)務;而有(yǒu)些(xiē)虛拟機(jī)的(d>₩ e)CPU卻一(yī)直持續在500%左 β₽<右,可(kě)能(néng)是(shì)虛拟機(jī)裡(l↕¶¶↕ǐ)面跑了(le)高(gāo)負載的(de)離(lí)線♠•φ≠計(jì)算(suàn)業(yè)務。
在進行(xíng)機(jī)器(qì)選擇時(shí),可(k★ě)選的(de)類型并不(bù)多(duō),一(yī)般是(±∏shì)在公司內(nèi)部已有(yǒu)的(de)套餐©×γ類型中選擇,然後稍加定制(zhì),主要(∑ yào)的(de)要(yào)求實現(xiàn)服務器±®α (qì)性能(néng)的(de)均衡,而且性能(néng)比較好(hǎo♦Ω∞)的(de)主機(jī)類型。機(jī)器(qì)配置詳細參數(shù)≤ 為(wèi):
計(jì)算(suàn)節點: DELL _R720
控制(zhì)節點: DELL_R620
其實Dell R720是(shì)Dell官方↓∑<推薦的(de)虛拟機(jī)雲計(jì)算(suàn)主機γε✘β(jī),作(zuò)為(wèi)OpenSta↔↓ck的(de)計(jì)算(suàn)節點還(hái)是(s₽δhì)比較合适的(de)。
OpenStack最早默認支持的(de)操作(zuò)系統∞☆版本是(shì)Ubuntu,後來(lái)♠→φ 才加入了(le)Redhat系列操作(zuò)系統的(de)支持,但(d ₩&∏àn)公司一(yī)般使用(yòng)Cenσ↓βtOS的(de)系統,裝機(jī)方便,系統穩定,為(wèi)了(l™×≥♦e)穩定性和(hé)兼容性,我們也(yě)是(shì)采用(yòng)λ↕§÷CentOS做(zuò)為(wèi)OpenStack的₩÷(de)操作(zuò)系統。采用(yòng)RDO的(de)σσ✔方式進行(xíng)安裝,但(dàn)是☆₽§(shì)在裝的(de)過程中也(yě)遇到(↓↕σ>dào)一(yī)些(xiē)問(wèn)題。±≠←比如(rú)在三個(gè)月(yuè)之前采用(yòng)RDO部署了(leφ")一(yī)套系統,在三個(gè)月(yuè)以後我們再需Rσ DO部署的(de)時(shí)候,RDO源上(shàng)的(d∞←e)版本就(jiù)更新了(le),有(×Ω✘→yǒu)可(kě)能(néng)導緻老(lǎo)版本和(héΩ←)新版本不(bù)兼容,由于OpenStack版本之間(jiān)的(de)♦€測試不(bù)是(shì)特别完備,盡管是(shì)大(×™dà)版本相(xiàng)同但(dàn)™☆是(shì)小(xiǎo)版本有(yǒu)差異,都(dōu)有(σ≈φyǒu)可(kě)能(néng)導緻不(bù)兼容,但(dàn)也♠∞β(yě)有(yǒu)解決的(de)方法:把π yum源down下(xià)來(lái),即解決了(le)版本問(w₩π♣≠èn)題,同時(shí)也(yě)能(né★☆≤ng)加快(kuài)軟件(jiàn)安裝下(xià∑δ≠")載的(de)速度。
采用(yòng)RDO安裝還(hái)有(yǒu)另外(w•<ài)一(yī)個(gè)問(wèn)題λ✔≥,就(jiù)是(shì)在安裝完成以後,不(bù)能(néng)手動更改系 >統配置的(de)路(lù)徑,如(rú)數(shù)據庫路(lù)徑或者鏡像 ≤∑存儲路(lù)徑,如(rú)果一(yī)定要(yào)改,須連pac™↓kstack中的(de)Puppet配置路(lù)徑一(yī)起改。否則在≤★下(xià)次啓動RDO安裝時(shí),他(tā)會(huì)再次将路(lùπ<•)徑再改成默認配置,這(zhè)個(gè)←→γ将導緻不(bù)可(kě)預知(zhī)Ω&<©的(de)錯(cuò)誤。如(rú)果此時(shí)已經跑了(le)服務,那(≥↕nà)很(hěn)有(yǒu)可(kě)能(néng)會(huì)影(yǐπ↓"ng)響的(de)服務。
總的(de)來(lái)說(shuō),RDO的(de)優點是(sh£φ ®ì)簡單快(kuài)速部署,支持多(duō)種網絡結構,₹缺點也(yě)明(míng)顯,添加計(jγ♣∏ì)算(suàn)節點是(shì)個(gè)坑,存在各種λ¶兼容性問(wèn)題(packstack版本、qpid版本、libvirβ <↕t版本),而解決的(de)辦法就(jiù)是(shì)建立自(zì)φ<₹己的(de)源,手動添加計(jì)算(suàn)節點。
網絡
組件(jiàn)可(kě)選擇有(yǒu)Neutron 和(hé) Nova¥σ λ-network。
我們選擇的(de)是(shì)Neutron,也(yě)是(shì)跟著(zγ→he)大(dà)趨勢走。網絡模型可(kě)選擇FLAT、GRE和(h×₽é)VLAN。我們選擇了(le)VLAN,因為(wèi)公司現×$(xiàn)有(yǒu)網絡模型也(yě≠&)是(shì)采用(yòng)VLAN模型,和(hé)Open§≠∑Stack原生(shēng)的(de)網絡模型相(xiàng)比,&∏我們的(de)主要(yào)改進點是(shì)停用(yòng)了(le)L3γ→δ Agent,無單獨的(de)網絡節點,讓虛拟 ∏機(jī)網絡通(tōng)過Trunk直接和(hé)物(wù)理(lǐ)路(≠&lù)由器(qì)相(xiàng)連,因此虛拟機(♥γjī)網絡比較高(gāo)效和(hé)穩定。與此同時(shí)↔↓,OpenStack工(gōng)程師(shī)大(dà)部分(fē€ ★n)是(shì)做(zuò)開(kāi)發和(hé)運維的(de£∞),網絡管理(lǐ)不(bù)是(shì)他(tā)們所擅長(c•®★háng)的(de),所以把網絡節點去(qù)掉由交換機(jī)進¥πδ行(xíng)管理(lǐ),全部交由網絡工(gōn≤★®€g)程師(shī)去(qù)做(zuò),他(tā)們更專業(yè)。同時∏☆(shí),若采用(yòng)一(yī)個(gè)物(wù)★σ 理(lǐ)的(de)主機(jī)作(zuò)為(w✔ èi)一(yī)個(gè)網絡節點,無論是(shì)性能(néng)上(s€≠hàng)還(hái)是(shì)可(kě)操作(z¥↓<₹uò)性上(shàng),都(dōu)不(bù)如(☆₹rú)成熟的(de)交換機(jī)。Ne±™∑δutron的(de)穩定性确實不(bù)高(gāo),經常斷掉,導緻Ope↑®↕nVswtich無法配置網絡策略。
塊存儲
塊存儲的(de)組件(jiàn)選擇有(yǒu)兩個(gφ♥☆è),一(yī)個(gè)是(shì)Ceph,另外(wài↑ ±)一(yī)個(gè)是(shì)GlusterFS。我們對(duì)C≥≈∑eph和(hé)GlusterFS做(zuò)了(le)測試↓♦,在四台機(jī)器(qì)上(shàng)都(dōu)部署了(le)Ce Ω₹βph和(hé)GlusterFS,Ceph和®₩ (hé)GlusterFS在每台機(jī)器(qì)上(shàng)各>占一(yī)塊磁盤,2副本策略,機(jī)器(q≥€¥ì)是(shì)單網卡,測試結果請(qǐng)看(kà₩λ&€n)下(xià)圖。

從(cóng)上(shàng)圖IOSP測試對(duì©✔)比中,可(kě)以看(kàn)出在塊比♣較小(xiǎo)的(de)時(shí)候,Ce× σ ph的(de)IOPS性能(néng)非常高(gā♥↑o),在塊大(dà)小(xiǎo)為(wèi)4KB的(de)時(sh í)候,甚至高(gāo)出Gluster$←★₹FS 40%左右,但(dàn)是(shì)塊大(dà)小("←✘♣xiǎo)大(dà)于1MB的(de)時(shí)候,Ceph的(de)性能€ε(néng)就(jiù)不(bù)如(rú)GlusterFS了(le♦<),我們推動是(shì)Ceph和(hé)GlusterFS不'≤(bù)同的(de)副本同步策略造成的(de)¶π₹∑。GlusterFS采用(yòng)Client直接寫入的(de)策©&©♥略,即每次寫入以後,節點之間(jiān)不(bù)需要(yào)再同>★β♠步;而Ceph采用(yòng)的(de)鏈式寫入,即C☆ ₹lient先寫入到(dào)一(yī)個(gè)節點上(shàng),然後節Ω♦$點之間(jiān)再同步,因此會(huì)消耗一(↑☆yī)定的(de)帶寬,當沒有(yǒu)專門(mén)的(de)同步網絡₩ ↓的(de)時(shí)候,同步所使用(yòng)的(de)★♠✔網絡帶寬可(kě)能(néng)會(huì)影(yǐng)響到(dào)C£"eph的(de)寫入性能(néng)。因此',寫入方式的(de)差異剛好(hǎo)能(néng)夠解釋Glu±←♥€sterFS在大(dà)塊寫入的(de)時(sh≤∏í)候會(huì)比Ceph性能(néng)好(hǎoσ₹•¶)。

上(shàng)圖是(shì)對(duì)Ceph↕'÷★和(hé)GlusterFS進行(xíng)4KB大(dà)小(xi£≠βǎo)塊的(de)連續測試,我們會(huì)發現(xiàn)Ceph的 ♥&(de)整體(tǐ)性能(néng)會(huì) ±✘比GlusterFS高(gāo),但(dàn)是(shì)他(tā)呈現(xi♥★≈àn)出性能(néng)波動現(xiàn)象,而G≤>lusterFS卻一(yī)直比較穩定,這(zhπ è)也(yě)從(cóng)一(yī)個(gè)層面上¶λ(shàng)說(shuō)明(míng)了(le)Ceph這(z←φ≈hè)種鏈式寫入的(de)機(jī)制(zhì)對(duì)連續測試可(k↔™÷Ωě)能(néng)會(huì)産生(shēng)波動性δαΩ♣的(de)結果。總的(de)來(lái)說(shuō),兩者各有(≠♦ yǒu)千秋,存儲沒有(yǒu)完美(měi)的(de)方案,Cep♥↔h逐漸成熟,在小(xiǎo)塊寫入的(de®"σ)時(shí)候Ceph性能(néng)比較好(hǎo),但(dàn±α∏σ)是(shì)大(dà)塊寫入卻不(bù← )如(rú)不(bù)如(rú)GlusterFS,同•§®×時(shí)Ceph的(de)性能(néng)具有(yǒ↕↑↔u)波動性。但(dàn)是(shì),GlusterFS在實際使用(y✘✔òng)中可(kě)以導緻虛拟機(jī)的(de)文(wén)件(jià'∑"↑n)系統被置為(wèi)Readonly(據≤"®說(shuō)此Bug已經被修複),需要 ♥ δ(yào)慎重考慮和(hé)測試。不(bù)管是(shì)Ceph,還(h§φ∑↓ái)是(shì)GlusterFS作(zuò)π§為(wèi)虛拟機(jī)的(de)共享存儲↑,都(dōu)能(néng)夠提供毫秒(miǎo)級别的(de)實時•↓σ(shí)遷移,對(duì)虛拟機(jī)的($§'→de)負載均衡、主機(jī)維護非常有(yǒu)用(yòng)€☆¥;同時(shí)多(duō)副本的(de)技(jì)術(s±>∏hù)保證用(yòng)戶數(shù)據的(de)安全性,将數(shù)據丢失>的(de)風(fēng)險降低(dī)最低(₩≈♦dī)。
對(duì)象存儲

所用(yòng)組件(jiàn)是(shì)Swift,架∞¶>"構請(qǐng)參見(jiàn)上(shàng)圖,Swif' ♥t可(kě)以說(shuō)是(shì)OpenStack最古老(lǎo)×↔最成熟的(de)一(yī)個(gè)組件(jiàn),良好∏↔δ₩(hǎo)的(de)設計(jì)思想,完全對↔€(duì)稱的(de)部署結構,無單點的'β(de)系統架構。縱容有(yǒu)很(hěn)多(duō)好(×←☆≠hǎo)處,但(dàn)是(shì)在用(yòng)S>¶'σwift的(de)時(shí)候,有(yǒu)一(♥•πσyī)個(gè)慘痛的(de)教訓,Swift作(zuò)為™↓(wèi)存儲服務器(qì)沒有(yǒu)¶≠β丢失過數(shù)據,但(dàn)是(shì)swift扛壓能(nén§♦♠g)力非常小(xiǎo),曾使用(yòng)Sw♥λΩift做(zuò)為(wèi)CDN的(de)源服務器(qì),流量¥←↑∏稍一(yī)上(shàng)來(lái),Swift©λ的(de)服務器(qì)就(jiù)被打死了(le) σ,當時(shí)觀測流量大(dà)約10Mb左右,觀察Swf×÷£it資源消耗情況,在完全沒有(yǒu)壓力的(de)情況下(xià),Swif♦↔ ∞t自(zì)動的(de)組件(jiàn)✘>性能(néng)消耗會(huì)占一(yī)個(₩♣gè)核。

上(shàng)圖所描述的(de)是(shì)小(xiǎo)米的("δde)OpenStack架構的(de)使用₹↔$(yòng),目前隻有(yǒu)兩種節點,一(yī)種是(π shì)計(jì)算(suàn)節點,另一(yī)種是(shì)控制Ω♥♥(zhì)節點,但(dàn)沒有(yǒu)網絡節點,所以網絡不(b'∑ ù)會(huì)存在單點,任何一(yī)個(gè)計(j∑€ì)算(suàn)節點宕機(jī),隻會(huì)影(yǐng)響其γ♦上(shàng)面承載的(de)虛拟機(jī),不(bù♥ →α)會(huì)影(yǐng)響其他(tā)節點,如(rú)果是(s≥hì)一(yī)個(gè)可(kě)以預知(zhī→↑ <)的(de)宕機(jī),你(nǐ)甚至可(kě)以©®∑∞先将其上(shàng)的(de)虛拟機(jī)遷移≈≈Ω到(dào)其他(tā)機(jī)器(q>♣ì),這(zhè)樣就(jiù)可(kě)以将對(duì)服務的(de)影(y÷π<ǐng)響降到(dào)最低(dī)。另外(wàλ¶i),控制(zhì)節點是(shì)主備模式,并且采用(yòng)✔πΩ冷(lěng)備的(de)方式,但(dàn)是(shì)數(shλ≥>γù)據庫保持實時(shí)同步。因為(wèi)±✘≠這(zhè)種私有(yǒu)雲的(de)架構對(duì)控制(®Ω↓¶zhì)節點的(de)依賴非常小(xiǎo),控制™¶(zhì)節點宕機(jī),在不(bù)重啓計(jì)算(suàn)節點πλ的(de)OpenVswitch-Aagentσ✔¶₽的(de)情況下(xià),幾乎不(bù)會(huì)影(yǐn✔" g)響虛拟機(jī)的(de)正常運行(xíng)。在網絡的(d λe)架構上(shàng),我們有(yǒu)三種網絡:虛拟機(jī)網絡、存儲網★∞絡和(hé)管理(lǐ)網絡。虛拟機(jī)網絡通(tōng)過網↔→≥橋,采用(yòng)Trunk模式,直接連接≈γ到(dào)交換機(jī),具有(yǒu)較好(hǎo)的∑γ ≥(de)性能(néng)和(hé)極高(gāo)的∞γ'♠(de)穩定性。管理(lǐ)網絡是(shìπ₽)OpenStack各個(gè)組件(jiàn)通(tōng)¥≤信的(de)網絡,包括鏡像分(fēn)發,虛拟☆↔機(jī)遷移等都(dōu)是(shì)走這≤↑ ¥(zhè)個(gè)網絡。存儲網絡是(s®★hì)虛拟機(jī)訪問(wèn)共享存儲Ceph的(d↔✔e)網絡。

上(shàng)圖是(shì)小(xiǎo)米私有(yǒu)≠•雲的(de)網絡詳細架構圖,基于L3-Agent的(de)δ×≈ 穩定性和(hé)性能(néng),我們停用(yòng)了(le)L3-Agen♠♥∑€t,虛拟機(jī)首先連接到(dào)b←<→r-int,,br-int連接到(dào)br-em3上(shβ♠àng),通(tōng)過Trunk就(jiù)可(kě)以達到(dàoπβ)外(wài)部網絡,這(zhè)樣的(de)架構解決了(le)兩個≈↔♦&(gè)問(wèn)題:第一(yī),能(néng)夠保證網絡的( ₽ 'de)性能(néng)和(hé)穩定性,第二£® ™,能(néng)實現(xiàn)和(hé)內(nèi>ε)網其他(tā)機(jī)器(qì)無縫互通(tō↓☆∑ng),
在使用(yòng)虛拟機(jī)時(shí)候,很(hěn)←↑λ÷多(duō)人(rén)抱著(zhe)一(yī)個(♦∑gè)懷疑的(de)态度,他(tā)們會(huì)擔心虛拟機(jīα•)的(de)性能(néng)是(shì)否÷→φ←夠用(yòng),我們對(duì)虛拟機(jī)的(de)性能(nénσβ↔♥g)做(zuò)了(le)如(rú)下(xià)測試:<'
測試1:整體(tǐ)性能(néng)測試

UnixBench是(shì)一(yī)個(gè)測≥←×£試系統整體(tǐ)系能(néng)的(de)軟件(jiàn)β☆,測試中我們分(fēn)别對(duì)比了(±δ"©le)AWS, MiStack,3U8j機(jī)器(q×♣±φì),從(cóng)測試結構看(kàn),同樣是(shì)虛拟機(jīλ☆),MiStack的(de)機(jī)器(q★£ ì)會(huì)比AWS相(xiàng)同的(de)機(jī)型性能(nén♦g)好(hǎo)很(hěn)多(duō)÷≤®,主要(yào)原因是(shì)AWS為(✘φ∑"wèi)了(le)保障每個(gè)虛拟機(jī)的☆→$(de)服務質量,對(duì)虛拟機(jī)的(de)資源占用(♠÷★yòng)情況做(zuò)了(le)嚴格的(de)限制≤ >¶(zhì),因此可(kě)比性并不(bù)大(dà), ↑§ε但(dàn)是(shì)MiStack和♠ ¥(hé)3U8相(xiàng)比,其實相(xiàng)比相(xiàng)差♣♠←γ不(bù)大(dà),3U8作(zuò)為(wèi)一(yī)種∞←物(wù)理(lǐ)機(jī)器(qì),在性能(néng)上(sh↓¥≤àng)隻比MiStack主機(jī)好(h↓♦ǎo)1/6左右,因此,我們可(kě)以說(shuō)虛拟機(jī)的(d→≥e)性能(néng)可(kě)以相(xiàn₽™¶g)當于相(xiàng)同配置的(de)物(wù)理(lǐ)機(jī)行(x↕™→íng)的(de)80%以上(shàng)。
測試二:磁盤性能(néng)測試

測試二是(shì)詞用(yòng)IOzone對(duì)虛拟機(jī✘")的(de)磁盤性能(néng)進行(xíng)了(le)←ε☆測試,對(duì)比的(de)是(shì)MiStack和(hé)3U8機(j ✔ ī)器(qì),從(cóng)圖上(shàng)π"±可(kě)以看(kàn)出,在讀(dú)取方面,虛拟機(jī)相(xi$≈àng)當于物(wù)理(lǐ)機(jīε'λ)的(de)5/6左右,在寫方面,虛拟機'&(jī)相(xiàng)當于物(wù)理(lǐ∑©λ)機(jī)的(de)9/10左右。
測試三:網絡性能(néng)測試

網絡測試分(fēn)為(wèi)了(le)兩組測試,一±€☆(yī)個(gè)測試是(shì)用(yò₹☆πng)HelloWorld做(zuò)的(de),另一(yī)個(gè)©•是(shì)PhoInfo做(zuò)的(de)。采用(y₹>φλòng)PhoInfo測試時(shí),虛拟機(jī)和(h☆♣γ é)物(wù)理(lǐ)機(jī)的(de)差别并不(bù)大(dγ®↕ à),但(dàn)是(shì)在采用(yòng)HelloWorld測試時(s₽Ω✔hí),差别非常明(míng)顯,虛拟機(jī∏®)僅相(xiàng)當于物(wù)理(lǐ)機(jī)的(de)1 Ω☆/4。我們對(duì)原因進行(xíngλα)了(le)分(fēn)析,由于HelloWorld頁面非常小(xi₹₩≠ǎo),測試過程相(xiàng)當于産生(shēng)了(↔£♥le)很(hěn)多(duō)小(xiǎo)數(shù)據包,而P®← ∏hpInfo相(xiàng)對(duì)頁面很(hěn)大(dà),從✘ ♠(cóng)而産生(shēng)的(de)數(shΩ™βεù)據包也(yě)比較大(dà)。當在小(xiǎo)包測試下(xià),網↔↓絡的(de)瓶頸在PPS上(shàng),我們反複測試過,虛拟機(jī)軟網♠≠γ橋的(de)性能(néng)隻能(néng)£₩到(dào)達5wPPS左右,此時(shí)OpenVswit §>ch已經到(dào)了(le)極限,而普∏↑通(tōng)的(de)物(wù)理(lǐ)網卡确定₹★達到(dào)200wPPS。在打包測試時(shí),網絡÷∏≥的(de)瓶頸在網絡帶寬上(shàng),因此,虛拟機(jī)和(héβ¥↕$)物(wù)理(lǐ)機(jī)帶寬相(xiàng)差不(bù)大(¶®≠dà),因此測試的(de)結果也(yě)相(xiàng)差≈↑≤不(bù)大(dà)。
為(wèi)實現(xiàn)物(wù)理(• ♦lǐ)機(jī)故障維護和(hé)虛拟機(jī)的(de>★)負載均衡,虛拟機(jī)通(tōng)常需§∑要(yào)遷移,主要(yào)分(fēn)為(wèi)兩種維護方案:↕Ω'實時(shí)遷移和(hé)帶磁盤的(de)遷移。

因為(wèi)企業(yè)很(hěn)難接受頻(pín)繁的(d÷§Ω≤e)更換,如(rú)果一(yī)兩個(gè)Ω±月(yuè)換一(yī)次,那(nà)麽一•§≤÷(yī)個(gè)月(yuè)要(yào)維護一(yī>↕)兩次,若這(zhè)時(shí)全部都(dōu)通(tōn©¥g)知(zhī)用(yòng)戶把機(jī)器(qì)和(hé)業(yè)務↕πλ±停了(le),會(huì)很(hěn)痛苦。虛拟機(jī)遷≈≠↕α移可(kě)以很(hěn)好(hǎo)地(d✘•ì)實現(xiàn)“無痛遷移”。虛拟機Ω∏(jī)遷移方案中的(de)實時(shí)∑×¶₩遷移是(shì)用(yòng)一(yī)個(gè)precopy算(λ↑suàn)法去(qù)叠代拷貝,在每次拷貝₹λ♠∞的(de)過程中用(yòng)內(nèi)部記錄的(de'Ω☆)方式記錄內(nèi)存“髒&rdquo↕×;頁,當“髒”張頁數(shù)據集小(xiǎo) £Ω于一(yī)定程度時(shí),比如(rú•≤)4K的(de)時(shí)候,停止虛拟 ↑₹機(jī),把內(nèi)容和(hé)寄存器(qì)遷移,由于需要(☆Ωyào)停機(jī)拷貝的(de)內(nèi)容非常少(€$ ¥shǎo),因此停機(jī)的(de)時(shí)間(jiān)非常短♥♦(duǎn),不(bù)過實時(shí)遷移一(yī)般是(shì↑✔♦¥)相(xiàng)同體(tǐ)系的(de)✘☆∏CPU才能(néng)相(xiàng)互遷移。上(shàng)Ω≥✘™圖是(shì)實時(shí)遷移,它的(de)↕™↔₽停機(jī)時(shí)間(jiān)會(huì)很(↔≠hěn)短(duǎn)。

帶磁盤的(de)遷移是(shì)将磁盤和(h≈•é)內(nèi)存一(yī)起拷貝到(dào)目前機(jī)器(qì),₽≥ 由于磁盤數(shù)量很(hěn)大(dà),所以 ¥一(yī)般是(shì)先做(zuò)快σ"(kuài)照(zhào),然後将形成的(de)數(shù$ ∑")據寫到(dào)增量中去(qù),然後我們開(k♦€←āi)始拷貝快(kuài)照(zhào),當所有(y<≤✔πǒu)的(de)快(kuài)照(zhào)都(dōu)已經拷∞&貝完成以後,再開(kāi)始拷貝增量文(←♠↕wén)件(jiàn),一(yī)般在拷貝的(de)過€₽'÷程中,産生(shēng)的(de)增量文(wén)件(jiàn) α是(shì)非常小(xiǎo)的(de),因此停機(jī)時(shí)♣ $間(jiān)還(hái)是(shì)可(kě)以接受的(de)。但(dà§☆n)是(shì)OpenStack沒有(yǒu)這(zhè)麽做(zuò),α÷他(tā)隻做(zuò)了(le)一(yī)個γ≈÷γ(gè)快(kuài)照(zhào),那(nà)就(jiù)是(shì)→₹☆鏡像文(wén)件(jiàn),其他(tā)的(de)數(shù)據都(dō★ §u)是(shì)增量,這(zhè)樣會(huì)導緻OpenStacεσ'k虛拟機(jī)的(de)增量文(wén)件(jiàn)非常大( ¶Ω¥dà),停機(jī)拷貝的(de)時(shí)間(jiān)非常長"(cháng),如(rú)上(shàng)圖。
總的(de)來(lái)說(shuō),實時(shí)遷移是(shì)采用£γ(yòng)precopy算(suàn)法循≈✔•環拷貝內(nèi)存到(dào)目的(de)機(jī)器(qì),停機(jī₹ )時(shí)間(jiān)極短(duǎn),但(λ ∞≥dàn)需要(yào)共享存儲;而帶磁盤遷移:将磁盤做(zuò)快(kuà☆©✔i)照(zhào)後拷貝磁盤到(dào)目的(de✘≠)機(jī)器(qì),後面過程跟實時(shí)遷移一(yī)樣,整個(gè®✔α)過程時(shí)間(jiān)取決于磁盤大(dà)小(xiǎo),停σ₽←$機(jī)時(shí)間(jiān)稍長(chán✘€>∑g)。
