擴展硬體 RAID-1 陣列
我想請任何可能已經具備我即將獲得的經驗的人提供一些建議。
我們即將用一些更大的磁碟升級 POP 伺服器中的 RAID-1 陣列。系統本身大約有 6 年的歷史(我是最初建構它的人),執行 FreeBSD 4.9,RAID 控制器是 Adaptec 2400A。作業系統位於單獨的驅動器上。由於成本、新硬體的不確定性以及舊 PCI 控制器的不可用,我們已經考慮並拒絕了完全更換控制器和驅動器的想法。
我搜尋了有關此過程的文件,但沒有找到任何文件。死樹格式也沒有提及它。
可以這麼說,我的計劃到目前為止是這樣的:
- 通知使用者。
- 對數據進行完整備份。
- 關閉伺服器,更換陣列中的驅動器 2。
- 啟動伺服器,讓陣列重建。
- 再次關閉伺服器(可能在第二天),並更換驅動器 1 和陣列中的熱備件。
- 希望這會使陣列的大小自動變大,或者使用它附帶的磁碟上的儲存管理軟體來擺弄它。
我不喜歡以“希望”結尾的計劃。這就是我問Serverfault的原因。“在測試平台上測試它”也不是一個真正的選擇(這就是原來的“更換控制器”選項死亡的原因)。
當然,最後一個可能的選擇是“核對驅動器並建構一個新驅動器,然後恢復備份”,但是在這種情況下很可能會失去郵件,以及額外的停機時間。我寧願我的計劃按我應該的方式進行。
注意:僅當您可以在系統中物理安裝更多驅動器而無需先卸下舊驅動器時,才可能進行以下操作。
我已成功用於此類任務的一種方法是在現有文件系統仍在使用時使用 rsync 創建和填充新文件系統,然後在方便的時間安排切換到新 fs。這最大限度地減少了停機時間並最大限度地減少了下班後的工作,因為大部分複制可以在系統仍在正常執行時完成。
總停機時間只是進行最終 rsync 和重新配置所需的時間(下面的步驟 8-12)。
在 linux 上,您甚至可以使用 ionice 為 rsync 作業提供低 IO 優先級,以最大程度地減少性能影響,因為 rsync 需要多長時間並不重要。我希望freebsd 也有類似的能力。
一般程序是這樣的:
- 警告使用者會有短暫的中斷(足夠長的時間讓您關閉機器並安裝新磁碟)。如果您的伺服器具有熱插拔托架,則無需執行此步驟。
- 在預定的時間,安裝新磁碟並使用它們創建新的 RAID 陣列和文件系統。
- 將其掛載為 /mnt
- rsync 你的舊文件系統到它
- 根據需要重複第 4 步。您可以無限期地延遲接下來的步驟,直到您有合適的時間視窗來完成工作。
- 安排一些停機時間並警告使用者。
- 在中斷之前立即再次執行 rsync。
- 關閉所有正在寫入相關文件系統的程序(例如 MTA 和 pop/imap 守護程序等)。如果這是根 fs 或者如果有許多守護程序使用 fs,那麼這意味著重新啟動到單使用者模式。
- 現在舊的 fs 是靜態的(沒有更新),做一個最後的 rsync。這不會花很長時間,因為新的 fs 幾乎已經是最新的了。在此之後,新 fs 現在將是舊 fs 的完整最新快照。
- 重新配置任何必要的東西,以便使用新的 fs 而不是舊的 fs。如果是root fs,則意味著將MBR寫入新磁碟,編輯fstab等。如果它只是一個數據分區,則解除安裝新 fs,然後解除安裝舊 fs,並將新 fs 安裝在它的位置。編輯 fstab 以反映新設置。
- 仔細檢查你沒有忘記任何東西:)。修復並重複直到完成。
- 現在重新啟動您關閉(或只是重新啟動)的程序。
您可以在閒暇時退役並移除舊驅動器。
我已經使用這種方法的變體將服務從一台機器移動到另一台機器,例如用新的文件伺服器替換老化的文件伺服器時。基本思想是通過在後台進行大部分複制來盡可能減少使用者可見的停機時間。