如何在 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}}}
- 開始以圖像介面安裝 CentOS。你可能需要用 "boot: linux nodmraid" 或在首個安裝選單按 [Tab] 來加入 nodmraid 這個開機指令。
- 自訂分割區並移除所有分割區,包括 LVM,來作個新開始
- 在 sda 及 sdb 上為 /boot 建立一個 ~100MB 的軟件硬盤陣列分割區
- 在 sda 及 sdb 上為 swap 建立一個軟件硬盤陣列分割區。這個分割區的大小視乎記憶體數量及個人喜好。這個範件採用 1GB。這將會是個硬盤陣列式的 swap***
- 在 sda 及 sdb 上為 / 建立一個軟件硬盤陣列分割區並用盡所有空間
- 點擊 RAID 鍵來建立一個硬盤陣列裝置
- 選取那兩個 100MB 的分割區,設定掛載點為 /boot,檔案系統類型為 ext3,硬盤陣列類型為 RAID1(預設裝置名稱是 md0),點擊 OK
- 點擊 RAID 鍵來建立一個硬盤陣列裝置
- 選取那兩個 1GB 的分割區,設定檔案系統類型為 swap,硬盤陣列類型為 RAID1(預設裝置名稱是 md1),點擊 OK
- 點擊 RAID 鍵來建立一個硬盤陣列裝置
- 選取那兩個大的分割區,設定掛載點為 /,設定檔案系統類型為 ext3,硬盤陣列類型為 RAID1(預設裝置名稱是 md2),點擊 OK
- 你的分割區已經建立好。你的畫面應該看似以下樣子:
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]
- 點擊 Next 進到 GRUB 啟動程式畫面
- 預設 GRUB 會安裝到 /dev/sda,點擊 Next
- 繼續安裝 CentOS,選取所需的套件
- 當 CentOS 已完成安裝並重新啟動,請進到第二部份。切勿更新 CentOS;切勿做其它事情!
2. 第二部份
這部份會確保 RAID1 /boot 的兩個成員都可以用來開機。請在硬盤失效/更替後重複這個部份。
2.1. 方法一 —— 開機時用 GRUB
在 GRUB 選單輸入 "c" 選項進到 GRUB 的提示行,接著:
grub> root (hd1,0) grub> setup (hd1) grub> root (hd0,0) grub> setup (hd0)
按 ESC 鍵返回 GRUB 選單,然後正常開機。進行方法二裡面的 1 及 5-8 步。
2.2. 方法二 —— 在運作中的系統用 GRUB
確定你是 root。
- 輸入 "/sbin/grub" 這個指令,按 Enter
- 在 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
- 祝你好運。輸入 "reboot",按 Enter。
- 當開機完成後,進行系統更新。
- 如果內核或 glibc 更新了,請重新開機。
- 如果有新的內核,輸入 "uname -a" 後按 Enter 來檢查你的確在運用最新的內核。
- 完成了!
這份指引是根據 CentOS 論壇議題引述 TimVerhoeven 在 irc.freenode.net 上的 #centos 頻道所提供的資料,吸納了論壇用戶及 centos-docs 上的回饋作出多番修飾而寫成的。
- 以上程序假設一個圖像化的安裝。在文字模式下建立 RAID-1 裝置是可行的,但頗為冗長及苛刻。你首先要在硬盤上建立每個 RAID 成員分割區,並且指定採用單一個硬盤。如果你不為分割區個指定單一的硬盤(例如 sda 或 sdb),Disk Druid 似乎會在建立 RAID 裝置時修改你的配置。在建立 RAID 裝置的過程中,請確定你在每個硬盤上單單選取所需的 RAID 分割區。
同一個方法應該可以應用在位於 RAID1 上的 /,而不須 /boot。這個 Fedora 指南的連結就採用了這個方法,它應該頗合用。這篇 Fedora 文章亦為了如何用 mdadm 進行修復提供了很好的指引。
本 Wiki 內其它有關 RAID 的文章包括 如何利用修復光碟將一個 CentOS 5 系統轉換成 RAID1 及 如何在一個可分割的軟件 RAID1 上安裝 CentOS 5。
- 一般有關軟件硬盤陣列的文章:
一篇不錯的 Linux Journal 文章關於 修復 RAID 及 LVM2 磁區。
* 有些控制器聲稱是硬件硬盤陣列,但仿似 winmodem 般須要用驅動程式來運作。這些控制器就是所謂的「模擬 RAID」或「冒牌貨」,它們在 CentOS 上停用 RAID 功能會更佳。這篇外置文章頗詳細地探討這些議題。
** 欲得到有關硬盤列件的解釋,請閱讀 Wikipedia 文章,或在 google 上搜尋其它精彩描述。要得更多針對企業級 Linux 5 的資訊,請參閱部署指南的「冗餘硬盤陣列(RAID)」部份或 CentOS 5 常見問題集內的「我如何在 CentOS 5 上安裝一個軟件硬盤陣列?」。
- *** 另一個捨棄冗餘來換取更佳效能和雙倍調換空間,但沿用相同分割區大小的做法,就是採用兩個非硬盤陣列的分割區。這樣做的效能與 RAID0 相若,但就算一個硬盤壞了仍能捱得住,雖然只會剩下一半的調換空間。
- 選擇二:把剩餘的空間放在另一個 RAID1,然後在 /dev/md1 上建立一個 LVM 磁區,把 /、swap、甚至 /home 或其它檔案系統以邏輯磁區的型式建立在 LVM 內。請跳過第 1 分段餘下的指引。
這頁的英文版由 PhilSchaffner 建立及維護。歡迎其他擁有編輯權限的 Wiki 貢獻者作出更正或添加。其他有意見的讀者可以在我的 Wiki 頁內找到聯絡資料。
Translation of revision 37