2016-11-12 48 views
0

我想使用libvirt一次運行基於同一圖像的多個域(VM)。圖像本身不應該被修改。應該將圖像視爲一個起點或模板。根據單個圖像創建多個虛擬機

一個明顯的可能性是爲每個域創建(臨時)副本。由於圖像可能需要多個GB,因此我不想每次都創建一個完整的副本。它只想存儲差異。據我瞭解的文件,外部快照正在使用這種技術。但似乎快照綁定到一個域,我不能用它們作爲模板。

根據documentation of qemu,我可以直接使用qemu,同時通過選項-snapshot。據我沒有手動提交更改,它應該工作。

qemu-system-x86_64 -snapshot -hda <image> 

有沒有辦法實現libvirt的類似的東西?

回答

1

所有你需要的是使用qcow2支持文件。在接下來的步驟中,我會假設你已經有了你的基礎鏡像作爲qcow2。

通過創建基本映像備份磁盤映像:

qemu-img create -f qcow2 \ 
       -o backing_file=/path/to/base/image.qcow2 \ 
       /path/to/guest/image.qcow2 
在你的客人

然後,使用/path/to/guest/image.qcow2磁盤。該文件只會與基礎圖像有所不同。

查看qemu-img的手冊頁瞭解更多詳情。 qemu-img也有命令將覆蓋文件更改提交到基本映像,在另一個基礎上重新綁定等。

+0

謝謝!我會看看。 :) – JojOatXGME

+0

它這樣工作。我想避免直接調用'qemu-img',但是用* libvirt *創建這些圖像,我必須定義* storage-pools *。我會直接使用'qemu-img',因爲在這種情況下使用libvirt似乎有很多開銷。 – JojOatXGME