如何在 CentOS 5 上設置一個軟件硬盤陣列

這篇文章探討一個方法,可於安裝時在沒有真實硬盤陣列控制器的系統上建立一個軟件(mdraid)RAID1。此方法沒有 CentOS 計劃的支援,也不是一個適合普通用戶的做法(請參閱下文的「計設考慮因素」備註)。此篇文章的作用是記錄一個實驗性質的做法,它的脆弱成果在內核更新後便無法更新。我們並不推薦它。多年的經驗告訴我們,你很可能忘記更新開機程式,因此損失數據的機會比硬碟失效的可能性更高。

「不獲支援」的意思就是:當你在 #centos IRC 頻道上查詢有關此篇文章時,頻道上的常客將會告訴你它不獲支援,及不要這樣做

/!\ 設計考慮因素:在 /boot 分割區採用 RAID 是否明智?位於掛載點:/boot/ 的內容普遍是於置於在一個原生(非 RAID)的分割區內。它的大小相對較細,傳統是 250 MB 之下。因此在安裝或更新,你可以簡易地利用這樣一個小腳本把內容複製到由 RAID 提供冗餘的位置:

# [ ! -d /root/boot_backup ] && mkdir -p /root/boot_backup 
# rsync -a -v /boot/. /root/boot_backup/. 

這樣你便能透過 RAID 保護該分割區的副本。當然 RAID 並非備份的方案。採用此方法可避免下文介紹的雜牌及脆弱做法。

<!> 這篇文章所描述的行動可以損毀現有的檔案系統。請先在一個測試裝置上進行實驗,並建立最新及可靠的備份,然後才正式執行。請勿盲目地剪貼指令,尤其是以 root 身份來執行,除非你清楚瞭解它們的效用。

這個做法意味著控制器會將原始塊裝置直接暴露給操作系統。它亦假設所涉及的裝置是頭兩個 SATA 或 SCSI 硬盤,/dev/sda 及 /dev/sdb。若果是頭兩個平衡 ATA 硬盤,請將 /dev/sda 及 /dev/sdb 改為 /dev/hda 及 /dev/hdb(或者 /dev/sdc,如果是第二個主硬盤)。假如是其它裝置,請適切地調整硬盤稱謂。請按你的處境小心修改指令,切勿盲目地遵從下面的步驟。

要正確開機,/boot 必須位於非硬盤陣列或 RAID1 分割區。RAID0、RAID5 及其它 RAID 類型不適用於 /boot,而 RAID0(沒有冗餘的條紋)則不建議給重要的分割區使用。只要滿足了 /boot 的限制,主目錄及其它分割區便可以採用 RAID5 或其它類型;然而,這個範例不會涵蓋那些選擇。

dd 這個指令及下面所描述的步驟將會毀滅硬盤上的所有資料。如果硬盤上藏有需用的資料,請將它們備份。

第一部份

  1. 停用主機板或 RAID 控制器 BIOS 上的任何模擬的硬盤陣列,令它成為一個正常的控制器 —— 多數是 ATA 或 SATA,也有可能是 SCSI。假如之前採用的是模擬硬盤陣列,你或許須要蓋過分割區列表。切勿載入 RAID 驅動程式。以下指令可以於圖像安裝分割硬盤前在第二個虛擬控制台(Ctrl-Alt-F2)內執行;或者在安裝媒體的修復模式中執行;又或者透過 LiveCD 來執行。裝置內的分區表將會被清除,而硬盤上的所有資料將會被遺失!
    • dd if=/dev/zero of=/dev/sda bs=512 count=64 
      dd if=/dev/zero of=/dev/sdb bs=512 count=64
  2. 開始以圖像介面安裝 CentOS。你可能需要用 "boot: linux nodmraid" 或在首個安裝選單按 [Tab] 來加入 nodmraid 這個開機指令。
  3. 自訂分割區並移除所有分割區,包括 LVM,來作個新開始
  4. 在 sda 及 sdb 上為 /boot 建立一個 ~100MB 的軟件硬盤陣列分割區
  5. 在 sda 及 sdb 上為 swap 建立一個軟件硬盤陣列分割區。這個分割區的大小視乎記憶體數量及個人喜好。這個範件採用 1GB。這將會是個硬盤陣列式的 swap***
  6. 在 sda 及 sdb 上為 / 建立一個軟件硬盤陣列分割區並用盡所有空間
  7. 點擊 RAID 鍵來建立一個硬盤陣列裝置
  8. 選取那兩個 100MB 的分割區,設定掛載點為 /boot,檔案系統類型為 ext3,硬盤陣列類型為 RAID1(預設裝置名稱是 md0),點擊 OK
  9. 點擊 RAID 鍵來建立一個硬盤陣列裝置
  10. 選取那兩個 1GB 的分割區,設定檔案系統類型為 swap,硬盤陣列類型為 RAID1(預設裝置名稱是 md1),點擊 OK
  11. 點擊 RAID 鍵來建立一個硬盤陣列裝置
  12. 選取那兩個大的分割區,設定掛載點為 /,設定檔案系統類型為 ext3,硬盤陣列類型為 RAID1(預設裝置名稱是 md2),點擊 OK
  13. 你的分割區已經建立好。你的畫面應該看似以下樣子:
    • RAID 裝置

      /dev/md0 ext3 [選取了] 100
      /dev/md1 swap [選取了] 1024
      /dev/md2 ext3 [選取了] [很多 GB]

      硬磁

      /dev/sda
         /dev/sda1 /dev/md0 software RAID [未被選取] 100
         /dev/sda2 /dev/md1 software RAID [未被選取] 1024
         /dev/sda3 /dev/md2 software RAID [未被選取] [很多 GB]
      /dev/sdb
         /dev/sdb1 /dev/md0 software RAID [未被選取] 100
         /dev/sdb2 /dev/md1 software RAID [未被選取] 1024
         /dev/sdb3 /dev/md2 software RAID [未被選取] [很多 GB]
  14. 點擊 Next 進到 GRUB 啟動程式畫面
  15. 預設 GRUB 會安裝到 /dev/sda,點擊 Next
  16. 繼續安裝 CentOS,選取所需的套件
  17. 當 CentOS 已完成安裝並重新啟動,請進到第二部份。切勿更新 CentOS;切勿做其它事情!

第二部份

這部份會確保 RAID1 /boot 的兩個成員都可以用來開機。請在硬盤失效/更替後重複這個部份。

方法一 —— 開機時用 GRUB

在 GRUB 選單輸入 "c" 選項進到 GRUB 的提示行,接著:

按 ESC 鍵返回 GRUB 選單,然後正常開機。進行方法二裡面的 1 及 5-8 步。

方法二 —— 在運作中的系統用 GRUB

  1. 確定你是 root

  2. 輸入 "/sbin/grub" 這個指令,按 Enter
  3. 在 GRUB 的指令殼輸入以下指令:
    • grub> device (hd0) /dev/sdb
      grub> device (hd1) /dev/sda
      grub> root (hd0,0)
      grub> setup (hd0)
      grub> root (hd1,0)
      grub> setup (hd1)
      grub> quit
  4. 祝你好運。輸入 "reboot",按 Enter。
  5. 當開機完成後,進行系統更新。
  6. 如果內核或 glibc 更新了,請重新開機。
  7. 如果有新的內核,輸入 "uname -a" 後按 Enter 來檢查你的確在運用最新的內核。
  8. 完成了!



這頁的英文版由 PhilSchaffner 建立及維護。歡迎其他擁有編輯權限的 Wiki 貢獻者作出更正或添加。其他有意見的讀者可以在我的 Wiki 頁內找到聯絡資料。

Translation of revision 37

zh-tw/HowTos/SoftwareRAIDonCentOS5 (last edited 2013-02-04 04:38:46 by TimothyLee)