Qemu
如何合併qemu qcow2磁碟的公共部分
我有一個 qemu 圖像
B.qcow2
,它是A.qcow2
.B.qcow2
我通過使用創建了一個副本,然後cp B.qcow2 C.qcow2
獨立地工作。因此,and最終是不同的,但它們有一個共同的部分(因為 C.qcow2 是從 B.qcow2 複製而來的)。B.qcow2``C.qcow2``B.qcow2``C.qcow2
為了節省磁碟空間,我想知道是否有可能(通過使用 qemu-img 或以程式方式)創建另一個
common.qcow2
包含 and 的所有公共部分的B.qcow2
圖像,然後從andC.qcow2
中刪除這個公共部分並重新設置這些圖像的基礎一種基於和基於的方式?B.qcow2``C.qcow2``B.qcow2``C.qcow2``common.qcow2``common.qcow2``A.qcow2
訣竅是擁有一個基本圖像,以及兩個包含差異的圖像。這可以通過以下方式實現:
- 為避免混淆:
mv B.qcow2 common.qcow2
- 在 A 上常見的變基:
qemu-img rebase -b common.qcow2 A.qcow2
- 重新創建 B,基於 common:`git create -b common B.qcow2
- 在 common 上變基 C:
qemu-img rebase -b common.qcow2 C.qcow2;
當然,現在 B.qcow2 是一個“空殼”,相對於 common 沒有任何變化,而 C 包含了 A 和 B 之間的所有變化,但是沒有辦法節省更多空間,假設哪個都沒有關係這兩個文件包含更改,這與任何其他解決方案一樣好。