OpenNebula 虛擬機器移轉源碼分析

來源:互聯網
上載者:User

  OpenNebula支援虛擬機器的冷遷移(migrate)和熱遷移(live_migrate,也可稱為線上遷移),下面從代碼的角度來分析下虛擬機器移轉的代碼執行路徑。

1. OpenNebula中定義的Action的生命週期

    OpenNebula通過定義多種action來表示不同的操作,同時,OpenNebula通過一個統一的架構來處理所有的action,整個處理過程我稱為action的生命週期,也可以這樣理解,每個對虛擬機器的操作都是由一個或多個action組成,所以,action的生命週期也可以理解為虛擬機器的生命週期。

    Actions的生命週期如所示。

    

   對於OpenNebula的使用者來說,每個對虛擬機器的操作都是通過RPC請求發起的(rpc的原理和機制不熟悉的同學,可以參見前面的文章《opennebula源碼分析 -- XML-RPC 原理分析 》),RPC
server(OpenNebula節點)接收到RPC請求後,會進行如下的處理和操作:

    (1)將RPC請求轉化為DM(DispatchManager)類的action, DM類負責ation的派發工作

    (2)DM類將action又轉化為LCM(LifeCycleManager)類的action,LCM類負責虛擬機器的生命狀態的設定,如使用者看到的Pending,Prolog,Boot,Running,Failed等狀態

    (3)LCM類將action又轉化為VMM類的(VirtualMachineManager)action,VMM類負責虛擬機器相關的實際操作,如建立,刪除等,這裡的實際操作指的是通過virsh命令執行的操作

    (4)VMM類將通過ssh,登入到物理機上執行virsh命令,來完成action代表的使用者的請求

    以Migrate為例,看一下在整個migrate action的生命週期中,虛擬機器的狀態的變化。

           RUNNING  -->  SAVE_MIGRATE --> PENDING --> PROLOG --> BOOT --> RUNNING

    首先,只有處於RUNNING狀態的虛擬機器才能進行遷移操作;其次,遷移之前首先要SAVE當前的虛擬機器;再次,將SAVE好的虛擬機器拷貝到要遷移到的主機;最後,就是一個虛擬機器部署操作的生命週期了!

2. Migrate action相關的代碼執行流程

3. libvirt層的遷移命令

(1)冷遷移:

    virsh  migrate vm0 qemu+ssh://192.168.35..16/system

將名稱為vm0的虛擬機器通過ssh協議遷移到主機192.168.35.17上

(2)線上遷移:

    virsh  migrate --live vm0 qemu+ssh://192.168.35.16/system

這裡都採用了ssh來進行資料轉送,其實還可以利用tcp,如:

    virsh  migrate vm0
qemu+tcp://192.168.35..16/system

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.