2011/05/21

libvirt指令同步、非同步問題

簡介:libvirt是一個對各品牌hypervisor(如Xen、VMWare、KVM等)抽象化的wrapper,比如xen可以透過xm指令來操作hypervisor,但是一旦底層hypervisor從xen改變成其他品牌(如:KVM),那xm指令就不再適用,所以使用libvirt就可以達到抽象畫的目的。

rhel5-virt

libvirt提供一套介面操作各種hypervisor ()

如果我們透過直接使用virsh(libvirt的shell)分成2個視窗執行create/destroy和list的結果,認為virsh command是使用同步執行的方式,也就是動作執行完畢才會返回。

我們先執行create後,馬上執行list,發現create domain-U的結束時間,還比list晚1秒鐘,因使可以推論create時會建立好vm後,就可以讓list去取得列表,但create domain-U後可能還會做一些其他事情,所以回來的時間稍微比list晚一點。因此,可以判斷virsh command應該是同步執行完後才返回。

[root@hyperimagestoreageweb tmp]# virsh create centos1.xml && date

Domain centos1 created from centos1.xml

Fri May 20 16:35:30 UTC 2011

[root@hyperimagestoreageweb ~]# virsh list && date

Id Name State

----------------------------------------------------

0 Domain-0 running

59 centos1 paused

Fri May 20 16:35:29 UTC 2011

但是如果我們使用Python-libvirt這個binding,就會發現有些指令如delete,在指令下去後,馬上就會返回,但是Python-libvirt卻沒有馬上做delete的動作,這是因為我們馬上做list的動作,還是可以看到預計被delete的domain-U一樣存在,所以可以判斷Python-libvirt有些動作是非同步執行,所以要獲得最新的domain-U資料,就必須使用polling反覆詢問。

沒有留言:

台灣好行:後慈湖、大溪老街半日遊

要搭台灣好行 慈湖線 (票價100)的朋友,可以在【中壢火車前站】出口,往左邊直走5分鐘到【桃園客運總站】搭乘。搭車到最後一站【慈湖】後可以看到導覽服務站。後慈湖算是管制區,需要先 上網申請 才可以進入,如果是搭台灣好行的話,可以直接在服務站登記候補。假日通常都是人滿為患,建議如...