Xen

Xen:以最少的停機時間將圖像轉換為 lvm

  • May 1, 2011

我的目標:

  • 將我所有的 DomU 從基於圖像轉換為基於 lvm
  • 最少的停機時間
  • 對其他 DomU/Dom0 的性能影響最小

我的計劃/設置:

我所有的圖像都在一個大的 lvm 卷中,新設置的所有 lvs 都是使用文件系統(ext3/ext4)創建的。所以我的方法是,為每台機器執行此操作:

  1. 拍大圖-lv
  2. 掛載此快照(例如 on /tmp/img_snap/
  3. 環回掛載圖像本身(例如 on /tmp/convert_src/
  4. 掛載新的 lv(例如 on /tmp/convert_dest
  5. rsync 從/tmp/convert_src/tmp/convert_dest
  6. 解除安裝一切
  7. 刪除 lv 快照
  8. 關閉 DomU
  9. 再次執行步驟 1-7
  10. 更改 DomU 配置中的磁碟設置
  11. 再次啟動 domU

步驟 1-7 已經編寫好了腳本,所以在步驟 9 中我可以再次啟動這個腳本。這意味著一些成本,因為 lv-snapshot 不是必需的,但我可以接受並意識到這一點。

由於原始機器可以執行到第 8 步(並且第 9 步應該只複製增量),因此停機時間應該是最短的。我也reniceionicersync 程序,所以對所有其他系統的影響應該是最小的。或者我是這麼想的……

  • Debian 倫尼
  • 來自 debian 的 Xen 3.2
  • HP ML350 G5 及其 SmartArray 控制器(iirc:e220?)
  • 通過 SATA 連接的驅動器

問題/問題:

  • 這種方法還可以,並且用小圖像進行了測試,但是我有一些 400GB+ 的大圖像。這需要很長時間。有沒有更好的方法?
  • 有時 - 我不完全知道為什麼 - Dom0 的負載會上升很多,機器會“卡住”,我會收到諸如INFO: task loop27:23352 blocked for more than 120 seconds, INFO: task pdflush:7329 blocked for more than 120 seconds., … 之類的消息以及它們的呼叫跟踪和其他內容。為什麼/何時?我想不出一個模式?是不是 IO 太多,CPU 也太多了?最重要的是:為什麼不阻止我的 rsync 程序 - 我對它們進行了 reniced ( renice 20 -p $(pidof rsync)) 和 ioniced ( ionice -c2 -n7 -p$pid) 它們 - 這些程序不應該是第一個被阻止的程序嗎?
  • 一般有任何提示和改進想法嗎?

rsync 是一個非常好的工具。如果您使用它,請選擇“-aSH –delete”選項,這樣您將獲得一個完全相同的目標(軟連結的 ctime-stamps 將具有目前時間)。

從您的文章中,我了解到 rsync 所需的時間似乎是您的主要問題,而 DomU 的關閉/啟動速度非常快(我假設包括它們的應用程序)。

我在您的大型 LV 中保存所有正在執行的 DomU 的快照中看到了另一個問題。如果您有許多寫入請求,您的快照將很快填滿 - 並且快照會在寫入期間減慢 DomU。

在這種情況下,我會選擇一種不同的方法:使用軟體 raid 1 將您的圖像鏡像到您的新 LV。

如果您願意,可以將其與快照/rsync 結合使用,以減少需要移動的數據量。但是恕我直言,將其整理出來並編寫腳本所需的時間是不值得的。

所以這是計劃 - 在這兩種情況下,您都需要塊設備(環回掛載您的圖像):

A) 使用 md(通過 mdadm 設置)編寫腳本:

  1. 關閉 DomU
  2. 環回掛載 DomUs 映像
  3. 使用該映像創建降級的 md-raid-1-device
  4. 使用“phy:mdN”作為新磁碟設備啟動 DomU
  5. 將 raid1 成員的數量從 1 增加到 2
  6. 添加你的目標LV
  7. 更改 DomU 的設置,以便將來使用 phy:vgX/lvY
  8. 如果鏡像完成,請使用新設置重新啟動 DomU

在計劃 A 中,您有兩次停機時間,持續一次重新啟動 DomU。鏡像將盡可能快地在後台進行。

缺點:所有數據將通過同步(RAW鏡像,不基於文件系統)

您可以通過使用 (–assume clean) 創建 md-raid1 而不會降級來解決這個問題。但這會很棘手(您需要 rsync 將數據傳輸到 LV,然後使用 md-bitmap 鏡像增量)。

B) 使用 drbd(通過 /etc/drbd.conf 設置) 如果您計劃在將來切換到 drbd,您應該這樣做。我沒有對此進行測試,但看不出 drbd 不應在 127.0.0.1 和 127.0.0.2 之間鏡像的原因 ;-)

我沒有對此進行測試,但它應該可以工作 - 並且比計劃 A 更複雜。

缺點:複雜,未經測試。

但是:如果你想切換到 drbd,你可以通過這種方式準備你的 DomU。在斷開連接模式下執行,直到您的集群準備就緒,然後連接、通過 IP 同步並開始實時遷移…

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