使用python-libvirt API 遷移

來源:互聯網
上載者:User

 目前在研究學習使用pythob-libvirt api 操作vm,幾經周折才完成了遷移功能:

代碼如下:

import libvirt# virsh  migrate --live kk qemu+tcp://192.168.4.87/system tcp://192.168.4.87#conn=libvirt.open('qemu:///system')#dest_conn=libvirt.open('qemu+tcp://192.168.4.87/system')vm_domain=conn.lookupByName('kk')print vm_domain.migrate(dest_conn,1,'k2k',None,0) # 參數說明:第一個是 目的端的 conn,遷移方式(live),目的端 vm的名字, 目的端 uri 可為空白,頻寬 可寫 0

這樣運行代碼是 肯定還是不成功,libvirt.libvirtError: Unable to resolve address 'xx' service '49170': No address associated with hostname

需要配置source源主機的 /etc/hosts檔案:加入"192.168.4.87   xx",即 把目的端的 ip 和 主機名稱 做一個映射。

在遷移的過程中,運行在目的主機中的libvirtd進程要根據address和port建立一個URI,URI是目的主機用來接收資料和發回資料到源主機的libvirtd進程的。上面協助libvirtd法解析主機名稱到IP地址的工作。

使用 virsh 命令遷移 道理是一樣的,但為省去配置 /etc/hosts檔案 的麻煩,可以使用:

migrate --live kk qemu+tcp://192.168.4.87/system tcp://192.168.4.87

經測試 使用api時 如果 uri 填寫 成:

dest_conn=libvirt.open('qemu+tcp://192.168.4.87/system tcp://192.168.4.87‘)

出錯,不能達到類似 virsh命令的效果 即不用配置 /etc/hosts檔案,如何能避免配置 /etc/hosts檔案。

如果總更改/etc/hosts檔案,資料同步性比較差,而且比較麻煩,如何不用配置hosts檔案呢??

不用配置 /etc/hosts檔案 的方法經研究測試,獲得成功,類似 virsh的方法,具體代碼如下:

print vm_domain.migrate(dest_conn,1,'k2k','tcp://192.168.4.87',0)

參數對比 第一段代碼的 相應函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.