為 KVM 虛擬機複製使用 LVM 快照
所以,我現在執行了一個非常棒的 KVM 設置,主機和來賓域上的 CentOS5.5,libvirt 管理所有配置等。來賓域文件系統儲存在硬體 RAID5 卷頂部的 LVM 中,所以我具有備份和低級數據冗餘的靈活性。
我今天測試了 virt-clone,它執行得非常好,除了將 24G 數據從掛起域的 LVM 磁碟複製到新虛擬機的新 LVM 卷需要大約 30 分鐘。
我的問題是:我不能只使用 LVM 快照來創建新 VM 的根磁碟嗎?例如:
lvcreate -s guest1_root -n guest2_root -L 8G raid_vg
現在,我對 LVM 快照的理解是,快照儲存了對原始塊所做更改的反向增量,因此快照佔用的實際空間很小,即使在寫入原始卷之後也可以讀出原始塊。LVM2 添加了讀寫快照,這開啟了這種有趣的可能性。
事實上,LVM HOWTO甚至建議將此功能與 Xen 結合使用:
這開闢了許多使用 LVM1 的只讀快照無法實現的新可能性。(…) 它對於創建與 Xen 一起使用的捲也很有用。您可以創建磁碟映像,然後對其進行快照並修改特定 domU 實例的快照。然後,您可以創建原始卷的另一個快照,並針對不同的 domU 實例修改該快照。由於快照使用的唯一儲存是在源或快照上更改的塊,因此大部分卷由 domU 共享。
這似乎是一個非常強大的工具,我想知道是否有人在他們的生產虛擬化環境中嘗試過它,是否能想到任何採用這種方法的供應商(Citrix、VMWare),或者能想到這個想法的任何嚴重問題。我可以想到以下潛在問題:
- 如果“原始”來賓在快照時執行,則可能出現文件系統問題。
- 附加了“反向增量”和“寫入塊”日誌的主機域 LVM 性能。它可能很快,但我不知道,這似乎是一個奇怪的想法,所以它需要測試和基準測試。
- 一個籃子裡有更多雞蛋:如果“原始”LVM 卷損壞,那麼快照卷也會被沖洗掉。當然,RAID5 可以減輕磁碟損壞,但值得注意。
- 能拍個快照嗎?我假設是這樣。
作為可能比我擁有更多虛擬化經驗的人,有什麼東西讓我想從這樣的設置中尖叫嗎?
這樣做完全沒問題。您不希望同時使用快照的父級(原始,或源,或任何您想要呼叫的),因為它會導致 IO 倍增(Hubert 對此是正確的,很容易通過不一直使用源卷來防止)。
如果您在 LVM 上安裝了一個主作業系統,並且您快照了四次,那麼您不會有太多的 IO 損失,因為您只寫入單個快照卷。當然,它不是免費的,但其他文件系統或虛擬磁碟上的其他形式的快照也不是免費的。在某個地方總是有代價的。
Hubert 說對的另一件事是,您必須考慮快照的大小。您需要確保快照卷能夠繼續寫入。完整的快照卷會嚴重破壞內容。防止這種情況發生的故障安全方法是使快照卷的大小與源卷相同(或更大)。但是,您會失去以這種方式使用更少磁碟空間的好處。
你知道 qemu 鏡像也有快照功能嗎?