Linux

如何使用 3 或 4(或更多)磁碟軟體 raid10 創建可引導的冗餘 Debian 系統?

  • March 5, 2015

如何創建一個可啟動、具有軟體 raid10 並且在我取出一個或多個(可啟動)磁碟時仍能啟動的 Debian 系統?我想使用盡可能少的磁碟,最好是 3 或 4 個。並且每個屬於 raid 的磁碟都應該是可引導的。

我之所以選擇raid10,是因為它是最快的冗餘raid 級別,並且仍然給了我很大的空間。raid5 或 6 太慢(並且可能有理論上的限制http://www.zdnet.com/blog/storage/why-raid-5-stops-working-in-2009/162)而 raid1 沒有給我足夠的空間,不太靈活。raid0 根本不是多餘的。

我將在這裡描述一個奇怪的,即由 3 個磁碟建構的軟體 raid10(眾所周知,有知識的人不相信 3 個磁碟的 raid10)。假設您有一台帶有 4 個驅動器托架的 1U 伺服器,並且您希望有一個空閒的托架用於儲存磁碟或作為熱備件。這些磁碟的大小都是相同的,但不是必須的,只要您根據最小大小的磁碟創建分區即可。

您插入 Debian CD 或 USB 記憶棒並開始安裝系統。當您到達開始對磁碟進行分區的部分時,請執行以下操作…

屬於 raid 的每個磁碟都應該有一個不屬於 raid 的大約 1 GB 的可引導分區。像往常一樣創建這些分區,它們的大小必須完全相同。將它們標記為可引導,其中一個磁碟上的掛載點應為 /boot,您可以將其他磁碟保留為未掛載。

/dev/sda1 - /boot
/dev/sdb1 - not mounted
/dev/sdc1 - not mounted

如果您喜歡(我願意)為通常的位置創建單獨的分區,您可以這樣做:

/dev/sd[abc]2 - swap  (Yes we have redundant swap, why not, it ought to be faster than swap outside the raid10)
/dev/sd[abc]3 - /
/dev/sd[abc]4 - /usr
/dev/sd[abc]5 - /tmp
/dev/sd[abc]6 - /var
/dev/sd[abc]7 - /opt
/dev/sd[abc]8 - /home

否則只需在每個磁碟上創建一個交換分區和一個大分區。請注意,您不能對 softraid (mdadm) 進行分區,這就是您首先創建分區的原因。(編輯:從核心 2.6.28 開始,可以像任何其他塊設備一樣對 RAID 進行分區,儘管我更喜歡上述方法。)

從除第一個分區之外的每個分區創建突襲。例如:

mdadm --create /dev/md0 --level=10 --raid-devices=3 /dev/sd[abc]2

等等。

在 Debian 安裝中,您將使用適當的菜單選項而不是 mdadm 命令,這只是為了說明。如果您在系統中有第 4 個磁碟,請將其添加為熱備用、RAID 的第 4 個成員或作為儲存,除非您這樣做,否則請確保它與其他磁碟共享相同的分區表和可引導屬性。我會把它留給你。

順便說一句,安裝菜單在創建分區和突襲方面可能會有些混亂,如果您迷路或菜單系統開始詛咒您,請從頭開始。:-)

像往常一樣安裝 Debian。一旦你到達 grub 安裝階段,你必須比平時做更多的事情。

我們假設 /dev/sda1 安裝在 /boot。確保 MBR 保存到 /dev/sda、/dev/sdb 和 /dev/sdc。所以我們告訴 grub 所有 3 個磁碟都是引導磁碟。

一旦安裝了整個系統,您應該能夠啟動系統,並且您將在 3 磁碟 raid10 上擁有一個工作的可啟動 Debian 系統。但是,萬一磁碟發生故障,它還不是完全冗餘的,這意味著它不會神奇地從另一個磁碟啟動。為了做到這一點,您必須將 /dev/sda1 上的引導分區精確複製到其他磁碟。

為此使用 dd (bs=500M 將大大加快 dd 的速度,將 500M 調整為系統記憶體的 2/3 左右):

dd bs=500M if=/dev/sda1 of=/dev/sdb1
dd bs=500M if=/dev/sda1 of=/dev/sdc1

現在確保您的 BIOS 配置為嘗試從所有 3 個磁碟啟動,順序無關緊要。只要 bios 會嘗試從任何磁碟啟動,那麼萬一其中一個磁碟發生故障,系統就會自動從另一個磁碟啟動,因為 UUID 完全相同。

有一個小問題,如果 /boot 發生了變化,不要忘記有時重複 dd 命令,比如核心升級。如果您願意,可以將其作為每週一次的 cron 工作。

這總是很有趣,通過更改 bios 啟動優先級來測試您的冗餘系統。如果你覺得幸運的話,可以在它執行時拉出一個磁碟來測試它。:-) 實際上,我認為您必須這樣做以絕對確保它是完全多餘的,否則為什麼會遇到麻煩。不過,無論如何,這都是一個有趣的練習。如果您正確地完成了所有操作(並且我正確地寫下了它),那麼當 raid 降級時,您的系統仍將啟動。就像您將使用硬體突襲一樣。我在具有 2、3、4 和更多磁碟的各種 1U 和 2U 伺服器上對其進行了測試。

這也適用於raid1。

順便說一句,您必須使用不屬於 raid 的引導分區,否則您的系統將無法引導。必須有一種啟動raid的方法,並且由於它是softraid,因此必須首先載入核心才能辨識raid。

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