欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

OpenStack的Resize和冷遷移代碼解析及改進

系統 1907 0

原文: http://www.hengtianyun.com/download-show-id-79.html

OpenStack的Resize(升級)功能,我們可以改變虛擬機的CPU核數、內存及磁盤大小,當然虛擬機只能向上升級,不允許向下降級。通過分析源代碼,我們發現Resize的過程其實就是冷遷移的過程,Resize多傳進去了一個flavor參數。下面將分析OpenStack升級虛擬機和冷遷移的功能。

一、 前端入口

(一) ? Resize

/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/instances/workflows/resize_instance.py

OpenStack的Resize和冷遷移代碼解析及改進

從上面的代碼可知,傳了兩個相關參數進去,第一個為虛擬機id(instance_id),第二個為升級的flavor。繼續深入api.nova.server_resize?

/usr/share/openstack-dashboard/openstack_dashboard/api/nova.py

從代碼可知,利用novaclient客戶端,向后端發出升級請求?

(二) ? 冷遷移

/usr/share/openstack-dashboard/openstack_dashboard/dashboards/admin/instances/tables.py

前段通過api.nova.server_migrate發起遷移請求,其中參數obj_id就是虛擬機的id,深入api.nova.server_migrate

/usr/share/openstack-dashboard/openstack_dashboard/api/nova.py

從代碼可知,利用novaclient客戶端,向后端發出遷移請求

二、 后端響應

當novaclient發出請求時,一般由nova-api組件作出響應。我們將分別分析nova-api如何對resize和冷遷移進行響應。

(一) ? Resize

對Resize請求進行響應的函數位于文件

/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/servers.py

OpenStack的Resize和冷遷移代碼解析及改進

繼續深入self._resize()函數

OpenStack的Resize和冷遷移代碼解析及改進

從上述代碼可知,最后通過compute_api.resize進行調用,它傳了instance和flavor_id兩個參數進去?

(二) ? 冷遷移

/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/admin_actions.py

OpenStack的Resize和冷遷移代碼解析及改進

從代碼可知,冷遷移也調用了compute_api.resize(),相比Resize功能,它只傳了instance一個參數進去

(三) ? Resize 和冷遷移的共同過程

下面將從compute_api.resize()開始分析,這段代碼位于文件

/usr/lib/python2.7/dist-packages/nova/compute/api.py

OpenStack的Resize和冷遷移代碼解析及改進 OpenStack的Resize和冷遷移代碼解析及改進

/usr/lib/python2.7/dist-packages/nova/conductor/api.py

OpenStack的Resize和冷遷移代碼解析及改進

Nova-conductor組件響應請求

/usr/lib/python2.7/dist-packages/nova/conductor/manager.py

OpenStack的Resize和冷遷移代碼解析及改進

函數 _cold_migrate()

OpenStack的Resize和冷遷移代碼解析及改進

通過上述代碼我們發現,首先是通過rpc調用nova-scheduler組件調度最優節點。調度算法分為兩個階段,即filter和weight。首先是過濾(filter),從所有的主機中找到符合實例運行條件的主機,然后從過濾出來的主機中,找到最合適的一個主機。

OpenStack的Resize和冷遷移代碼解析及改進

過濾階段系統默認調用的filter主要包括RetryFilter、AvailabilityZoneFilter、RamFilter、ComputeFilter、ComputeCapabilitiesFilter、ImagePropertiesFilter,其中比較重要的filter包括AvailabilityZoneFilter和RamFilter,AvailabilityZoneFiter保證了調度發生在同一個zone,RamFilter確保了內存是否足夠,默認情況下,ram的擴大系數為1.5,也就是假如物理內存為100G,內存被虛擬為150G,通過nova.conf配置文件,我們可以改變擴大系數。此外,通過配置文件,我們還可以改變調用的過濾器,除了上述過濾器外,我們還可以使用CoreFilter、DiskFilter、IoOpsFilter等。這些都是系統自帶的過濾器,我們也可以根據需求,自己構造過濾器。

Weight階段,從它做的工作來看,就是從符合條件的主機中選擇“最合適”的主機,這個選擇的過程是通過“評分”來實現的。現階段的weight很簡單,主要通過RAMWeigher進行權衡,剩余內存越大,權值越大。

當上述工作完成后,若未挑選出合適的節點,Resize過程結束,系統報錯,若挑選出了合適節點,開始Resize流程,首先,rpc調用目的節點的nova-compute,即self.compute_rpcapi.prep_resize。

目的節點nova-compute開始響應

/usr/lib/python2.7/dist-packages/nova/compute/manager.py(2885)_prep_resize()

OpenStack的Resize和冷遷移代碼解析及改進 OpenStack的Resize和冷遷移代碼解析及改進

在prep_resize階段,主要保存了虛擬機Resize前后的狀態,最后通過rpc調用源節點的nova-compute,即self.compute_rpcapi.resize_instance

/usr/lib/python2.7/dist-packages/nova/compute/manager.py(3020)resize_instance()

OpenStack的Resize和冷遷移代碼解析及改進 OpenStack的Resize和冷遷移代碼解析及改進

?

上述代碼,一個比較重要的過程就是遷移磁盤文件,該功能通過self.driver.migrate_disk_and_power_off這個函數實現,我們可以具體看一下這個函數

/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py(4487)migrate_disk_and_power_off()

OpenStack的Resize和冷遷移代碼解析及改進 OpenStack的Resize和冷遷移代碼解析及改進

通過上述步驟,成功把虛擬機的磁盤文件復制到了目的節點上,開始遷移的最后一步,創建虛擬機這一步通過rpc調用目的節點的nova-compute實現,即self.compute_rpcapi.finish_resize,其具體代碼如下。

/usr/share/pyshared/nova/compute/manager.py:3153

OpenStack的Resize和冷遷移代碼解析及改進

/usr/lib/python2.7/dist-packages/nova/compute/manager.py(3073)_finish_resize()

OpenStack的Resize和冷遷移代碼解析及改進

/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py

OpenStack的Resize和冷遷移代碼解析及改進 OpenStack的Resize和冷遷移代碼解析及改進

通過self._create_domain_and_network就成功創建了虛擬機。

一、? 不足與改進

通過對Resize的分析,我們發現有以下幾個缺陷

1)??????? ? AvailabilityZoneFilter

遷移過程中,會出現跨域的resize,availabilityZoneFilter好像并沒有起到過濾錯誤,這是由于我們創建虛擬機時,虛擬機的域選擇為ramdom,因此AvailabilityZoneFilter過濾器會對所有域的主機都放行,導致虛擬機升級到別的域域上去。

2)??????? ? 鏡像復制過程

遷移過程中,先會在源節點將增量鏡像和base鏡像進行合并,然后在復制到目的節點上,合并的過程比較耗時,我們可以直接將增量鏡像復制到目的節點,然后下載base鏡像,最后做一次rebase即可。

?

OpenStack的Resize和冷遷移代碼解析及改進


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 偷拍自拍视频在线观看 | 91成人 | 欧美特黄aaaaaaaa大片 | 亚洲自拍偷拍在线 | 国产精品爱啪在线线免费观看 | 奇米影视四色7777 | 成人国产激情福利久久精品 | 国产精品片aa在线观看 | 久久视频在线视频 | 在线视频二区 | 一区二区三区四区在线 | 深爱婷婷 | A片扒开双腿猛进入免费 | a级淫片| 日韩一区二区三区在线播放 | 另类视频在线观看 | 久久福利青草精品免费 | 91精品国产欧美一区二区 | 欧美视频成人 | 粉嫩粉嫩芽的虎白女18在线视频 | 看一级毛片国产一级毛片 | www.日本在线播放 | 久久九九久精品国产 | 黄色视频a级毛片 | 欧美精品久久久 | 91精品国产综合久久久久久 | 男人午夜免费视频 | 手机在线看片国产日韩生活片 | 极品美女aⅴ高清在线观看 一级片片 | 欧美亚洲视频 | 国产精品婷婷 | 久久久久国产一区二区三区 | 天天做天天添天天谢 | 君岛美绪一区二区三区在线视频 | 在线观看亚洲一区二区三区 | 五月久久婷婷综合片丁香花 | 热99re久久精品2久久久 | 久久久久国产成人精品亚洲午夜 | 欧美日韩精品一区二区 | 国产精品久久久久久无遮挡 | 国产亚洲精品久久精品6 |