OpenStack的Resize和冷遷移代碼解析及改進(jìn)_第1頁
OpenStack的Resize和冷遷移代碼解析及改進(jìn)_第2頁
OpenStack的Resize和冷遷移代碼解析及改進(jìn)_第3頁
OpenStack的Resize和冷遷移代碼解析及改進(jìn)_第4頁
OpenStack的Resize和冷遷移代碼解析及改進(jìn)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、OpenStack的Resize和冷遷移代碼解析及改進(jìn)OpenStack 的Resize(升級(jí))功能,我們可以改變虛擬機(jī)的CPU核數(shù)、內(nèi)存及磁盤大小,當(dāng)然虛擬機(jī)只能向上升級(jí),不允許向下降級(jí)。通過分析源代碼,我們發(fā)現(xiàn) Resize的過程其實(shí)就是冷遷移的過程,Resize多傳進(jìn)去了一個(gè)flavor參數(shù)。下面將分析OpenStack升級(jí)虛擬機(jī)和冷遷移的功能。一、前端入口(一) Resize/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/instances/workflows/resize_insta

2、nce.py/usr/share/openstack-dashboard/openstack_dashboard/api/nova.py從代碼可知,利用novaclient客戶端,向后端發(fā)出升級(jí)請(qǐng)求 (二) 冷遷移/usr/share/openstack-dashboard/openstack_dashboard/dashboards/admin/instances/tables.py/usr/share/openstack-dashboard/openstack_dashboard/api/nova.py從代碼可知,利用novaclient客戶端,向后端發(fā)出遷移請(qǐng)求二、后

3、端響應(yīng)當(dāng)novaclient發(fā)出請(qǐng)求時(shí),一般由nova-api組件作出響應(yīng)。我們將分別分析nova-api如何對(duì)resize和冷遷移進(jìn)行響應(yīng)。(一) Resize對(duì)Resize請(qǐng)求進(jìn)行響應(yīng)的函數(shù)位于文件/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/servers.py繼續(xù)深入self._resize()函數(shù)從上述代碼可知,最后通過compute_api.resize進(jìn)行調(diào)用,它傳了instance和flavor_id兩個(gè)參數(shù)進(jìn)去 (二) 冷遷移/usr/lib/python2.7/dist-

4、packages/nova/api/openstack/compute/contrib/admin_actions.py從代碼可知,冷遷移也調(diào)用了compute_api.resize(),相比Resize功能,它只傳了instance一個(gè)參數(shù)進(jìn)去(三) Resize和冷遷移的共同過程下面將從compute_api.resize()開始分析,這段代碼位于文件/usr/lib/python2.7/dist-packages/nova/compute/api.py/usr/lib/python2.7/dist-packages/nova/conductor/api.pyNova-condu

5、ctor組件響應(yīng)請(qǐng)求/usr/lib/python2.7/dist-packages/nova/conductor/manager.py函數(shù)_cold_migrate()通過上述代碼我們發(fā)現(xiàn),首先是通過rpc調(diào)用nova-scheduler組件調(diào)度最優(yōu)節(jié)點(diǎn)。調(diào)度算法分為兩個(gè)階段,即filter和weight。首先是過濾(filter),從所有的主機(jī)中找到符合實(shí)例運(yùn)行條件的主機(jī),然后從過濾出來的主機(jī)中,找到最合適的一個(gè)主機(jī)。過 濾階段系統(tǒng)默認(rèn)調(diào)用的filter主要包括RetryFilter、AvailabilityZoneFilter、RamFilter、 ComputeFilter、Compu

6、teCapabilitiesFilter、ImagePropertiesFilter,其中比較重要的 filter包括AvailabilityZoneFilter和RamFilter,AvailabilityZoneFiter保證了調(diào)度發(fā)生在同一 個(gè)zone,RamFilter確保了內(nèi)存是否足夠,默認(rèn)情況下,ram的擴(kuò)大系數(shù)為1.5,也就是假如物理內(nèi)存為100G,內(nèi)存被虛擬為150G,通過 nova.conf配置文件,我們可以改變擴(kuò)大系數(shù)。此外,通過配置文件,我們還可以改變調(diào)用的過濾器,除了上述過濾器外,我們還可以使用 CoreFilter、DiskFilter、IoOpsFilter等。這些

7、都是系統(tǒng)自帶的過濾器,我們也可以根據(jù)需求,自己構(gòu)造過濾器。Weight階段,從它做的工作來看,就是從符合條件的主機(jī)中選擇“最合適”的主機(jī),這個(gè)選擇的過程是通過“評(píng)分”來實(shí)現(xiàn)的?,F(xiàn)階段的weight很簡單,主要通過RAMWeigher進(jìn)行權(quán)衡,剩余內(nèi)存越大,權(quán)值越大。目的節(jié)點(diǎn)nova-compute開始響應(yīng)/usr/lib/python2.7/dist-packages/nova/compute/manager.py(2885)_prep_resize()/usr/lib/python2.7/dist-packages/nova/compute/manager.py(3020)resize_in

8、stance() /usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py(4487)migrate_disk_and_power_off()/usr/share/pyshared/nova/compute/manager.py:3153/usr/lib/python2.7/dist-packages/nova/compute/manager.py(3073)_finish_resize()/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py通過self._create_domain_and_network就成功創(chuàng)建了虛擬機(jī)。一、 不足與改進(jìn)通過對(duì)Resize的分析,我們發(fā)現(xiàn)有以下幾個(gè)缺陷1)AvailabilityZoneFilter遷 移過程中,會(huì)出現(xiàn)跨域的resize,availabilityZoneFilter好像并沒有起到過濾錯(cuò)誤,這是由于我們創(chuàng)建虛擬機(jī)時(shí),虛擬機(jī)的域選擇 為ramdom,因此AvailabilityZoneFilter過濾器會(huì)對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論