Lvm

通過網路將邏輯卷直接從一台伺服器移動到另一台伺服器?

  • March 9, 2020

我有一台 KVM 主機,上面有幾個 VM。每個 VM 在主機上使用一個邏輯卷。我需要將 LV 複製到另一台主機。

通常,我會使用類似的東西:

dd if=/the/logical-volume of=/some/path/machine.dd

將 LV 轉換為圖像文件並使用 SCP 移動它。然後使用 DD 將文件複製回新主機上的新 LV。

這種方法的問題是您需要的磁碟空間是 VM 在兩台機器上佔用的磁碟空間的兩倍。IE。5GB LV 為 LV 使用 5GB 空間,dd 副本還為圖像使用額外的 5GB 空間。這對於小型 LV 來說很好,但是如果(就我而言)您有一個 500GB 的 LV 用於大型 VM 怎麼辦?新主機有一個 1TB 的硬碟驅動器,因此它不能保存 500GB 的 dd 映像文件*,並且有一個 500GB 的邏輯卷可供複製,為主機作業系統和*其他較小的客戶機提供空間。

我想做的是:

dd if=/dev/mygroup-mylv of=192.168.1.103/dev/newvgroup-newlv

換句話說,通過網路將數據直接從一個邏輯卷複製到另一個並跳過中間映像文件。

這可能嗎?

當然,當然有可能。

dd if=/dev/mygroup-mylv | ssh 192.168.1.103 dd of=/dev/newvgroup-newlv

繁榮。

不過,請幫自己一個忙,並使用比預設塊大小更大的東西。也許添加 bs=4M (以 4 MB 的塊讀取/寫入)。您可以在評論中看到一些關於塊大小的吹毛求疵;如果這是您發現自己經常做的事情,請花點時間以不同的塊大小嘗試幾次,並親眼看看什麼能讓您獲得最佳傳輸率。

回答評論中的一個問題:

您可以通過pv管道傳輸以獲取有關傳輸的統計資訊。它比你從發送信號到dd.

我還要說,雖然當然使用 netcat —— 或任何其他不會強加加密成本的東西—— 會更有效,但我通常發現額外的速度會帶來一些便利性的損失。除非我要移動非常大的數據集,否則我通常會堅持使用 ssh,儘管成本很大,因為在大多數情況下,一切都已經設置為 Just Work。

引用自:https://serverfault.com/questions/358228