2013年12月3日 星期二

Libvirt 開發前須知資料整理

source:wiki


開發前須知


Linux 最恐怖的就是軟體和Library 的版本相依性,以及要了解哪些事穩定的版本,哪些是實驗版本 。而Libvirt 就是魔王等級的,又複雜文件又不清楚,要注意的除了OS版本,libvirt 版本,以及相對應的hybervisor 版本....最後很多東西都得再程式和mail list 裡面挖出來

Libvirt Stable version


0.9.6.x—>0.9.11.x—>0.9.12.x—>0.10.2.x—>1.0.5.x—>1.1.3.x

CentOS 6.4 使用 0.10.2.x 的版本
Mac OSX 使用Brew 安裝的版本是 1.1.4

如果要使用Java Binding 來開發Libvirt 這邊也有版本需要注意(git repository)
Java Binding —> Libvirt version

0.4.7.x —> 0.8.2
0.4.8.x —> 0.9.12
0.4.9.x —> 0.10.2.x
0.5.x —> 1.1.x

相關開發文件


Host 設定


1. 設定遠端管理機制:Remote support (Connection)

2. 測試連線機制 (Connection URIs)

So to connect to the daemon, one of two different URIs is used:

   * qemu:///system connects to a system mode daemon.
   * qemu:///session connects to a session mode daemon.
   * qemu:///session                      (local access to per-user instance)
   * qemu+unix:///session                 (local access to per-user instance)
   * qemu:///system                       (local access to system instance)
   * qemu+unix:///system                  (local access to system instance)
   * qemu://example.com/system            (remote access, TLS/x509)
   * qemu+tcp://example.com/system        (remote access, SASl/Kerberos)
   * qemu+ssh://root@example.com/system   (remote access, SSH tunnelled)

[Update] 2013.12.05

如果使用Mac OSX 安裝Libvirt 去連KVM 會出現以下錯誤訊息:

Connecting to the server will result in an error : "hangup / error event on socket".

It turns out that the macosx client assumes the socket resides in /usr/local/lib whereas the ubuntu server has the socket in /var/run/libvirt/libvirt-sock .

請改用下面的方式連線:

> virsh -c qemu+ssh://root@libvirthost/system?socket=/var/run/libvirt/libvirt-sock

[參考連結]


PS1. 如果利用Libvrit  無法透過API 把 qemu+ssh 所需要的 password 帶過去[Referecne-link]

As I said before, the auth callback you can pass to virConnectOpenAuth
is not used for the libvirt SSH remote transport authentication. The
same it true for the TCP transport, it uses SASL for authentication by
default.

PS2. Java Binding 其實有很多功能都沒有implement

Known api calls to be missing
 * LIBVIRT_0.1.0
 * virDefaultErrorFunc
 * virConnCopyLastError
 * virFreeError
 *
 * LIBVIRT_0.4.2
 * virDomainBlockPeek
 * virDomainMemoryPeek
 *
 * LIBVIRT_0_5.0
 * virEventRegisterImpl
 * virConnectDomainEventRegister
 * virConnectDomainEventDeregister
 *
 * LIBVIRT_0.6.0
 * virConnectRef
 * virDomainRef
 * virNetworkRef
 * virStoragePoolRef
 * virStorageVolRef
 * virNodeDeviceRef
 *
 * LIBVIRT_0.6.1
 * virFreeError
 * virSaveLastError
 * virDomainGetSecurityLabel;
 * virNodeGetSecurityModel;
 *
 * LIBVIRT_0.6.4
 * virInterfaceRef
 *
 * LIBVIRT_0.7.1
 * virSecretRef
 *
 * LIBVIRT_0.7.2
 * virStreamRef
 *
 * LIBVIRT_0.8.0
 * virNWFilterRef



張貼留言