歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

通用線程--新Linux2.4內核中的軟件RAID,第二部分

  作者:Daniel Robbins    在生產環境中安裝 RAID-1    新的 2.4 內核終於發布了,現在應該找一台空閒 PC,裝上 Linux,看看它能做些什麼。在這篇兩篇系列文章中,Daniel Robbins 介紹了 Linux 2.4 軟件 RAID ― 一種通過將數據分布於多個磁盤,從而增強磁盤性能和可靠性的技術。在本文中,Daniel 將說明軟件 RAID-1、4 和 5 能做什麼,不能做什麼,以及應該如何在生產環境中實現這些 RAID 方案。在本文的第二部分,Daniel 將帶領您體驗更換 RAID-1 故障驅動器的模擬過程。        現實中的 RAID  在我的前一篇文章中,我介紹了 Linux 2.4 的軟件 RAID 功能,並且說明了如何創建線性卷、RAID-0 卷和 RAID-1 卷。本文考察,為了在生產環境中利用 RAID-1 提高可用性,您需要了解哪些知識。與只是在測試服務器上或者在家中安裝 RAID-1 相比,這要求您對 RAID 有更深入的理解,並掌握更多的知識 ― 尤其是,您需要准確知道 RAID-1 可以提供哪些保護,並要了解萬一出現磁盤故障,如何使 RAID 卷保持在啟動運行狀態。本文將探討這些內容,首先將概述 RAID-1、4 和 5 能做什麼,不能做什麼,最後模擬一個更換 RAID-1 故障驅動器的完整測試過程 ― 您應該盡可能實際體驗一下這個過程(以本文為指南)。在完成此模擬過程之後,您將擁有在現實環境中處理 RAID-1 故障所需的全部經驗。    RAID 不能做什麼  RAID 的容錯功能設計用於避免由偶發的驅動器故障所產生的負面影響。這種設計非常好。但是,對於各種各樣的可靠性問題,RAID 並非總是理想的解決方案。在生產環境中,在實現具有容錯功能的 RAID (1、4、5) 之前,准確了解 RAID 能做什麼及不能做什麼至關重要。當處於依賴 RAID 的境況中時,我們不希望對它的作用抱有錯誤的認識。我們首先要澄清對 RAID 1、4 和 5 的一些常見錯誤認識。    許多人認為,如果將所有重要數據保存在 RAID 1/4/5 卷上,就沒有必要再對這些數據執行定期的備份。這是完全錯誤的 ― 理由如下。RAID 1/4/5 有助於避免由偶然的驅動器故障引起的意外停機。但是,它並不能防止意外或惡意的 數據損壞。如果讀者在 RAID 卷上以 root 身份鍵入 "cd /; rm -rf *",那麼頃刻之間您將丟失大量重要的數據,對於這種情況,就算擁有一個包含 10 個驅動器的 RAID-5 配置也無濟於事。同樣,如果您的服務器物理上失竊,或者建築物失火,那麼 RAID 也幫不上忙。毫無疑問,如果您沒有實施備份策略,就不會擁有歷史數據的檔案文件 ― 如果某位同事刪除了一批重要文件,您也無法將它們恢復。僅此一點就應該足以讓您相信,在大多數情況下,即使是在考慮采用 RAID-1、4 和 5 之前,都應該規劃並實施一種備份策略。    在由劣質硬件組成的系統上實施軟件 RAID 是另一種錯誤認識。如果您正在裝配一台要承擔重要任務的服務器,那麼在預算許可的范圍之內購買質量最好的硬件是合理的。如果您的系統不穩定或者散熱不良,那麼將陷入一種 RAID 無能為力的困境。與此類似,如果停電,RAID 顯然也不能提供更長的正常運行時間。如果服務器計劃擔負任何比較重要的任務,請確保已為它配備了不間斷電源 (UPS)。    接下來,本文轉向討論文件系統問題。文件系統存在於軟件 RAID 卷之上。這意味著,使用軟件 RAID 並不能避開文件系統問題,例如,如果您恰好在使用一種非日志文件系統或者定期整理碎片的文件系統,則可能存在耗時且易出問題的文件系統檢查。因此,軟件 RAID 不會提高 ext2 文件系統的可靠性;這就是為什麼在 Linux 陣營中仍然強調保留 ReiserFS、JFS 和 XFS 的原因。軟件 RAID 和可靠的日志文件系統是一種理想的組合。    RAID ― 智能化實現  但願上節已經澄清了您關於 RAID 的任何錯誤認識。在實現 RAID-1、4 和 5 時,將其視作一種延長正常運行時間的技術是非常重要的。一旦讀者實現了其中的一種 RAID,您就可以避免一種非常特殊的情況 ― 意外的全面(單個或多個)驅動器故障。如果您遇到這種情況,軟件 RAID 將允許系統繼續運行,同時您可安排用一個新的驅動器更換故障驅動器。換言之,如果您實現 RAID 1、4 或 5,就會降低由於全面驅動器故障而導致長時間意外停機的風險。相反,您只須短時的有計劃停機 ― 只需留出更換壞驅動器的時間即可。顯然,這意味著,如果擁有一個高可用性系統並非您的首選,就不應該實現軟件 RAID,除非您計劃將它主要用作一種提高文件 I/O 性能的方法。    精明的系統管理員會將 RAID 用於一種特定的目的 ― 即提高已經相當可靠的服務器的可靠性。如果您是一位精明的系統管理員,則您已經知道這些基本內容了。您已經通過實施定期備份計劃使您的組織免遭災難。您已經將服務器連接在 UPS 上,並且 UPS 監視軟件已在運行,這樣,在長時間停電的情況下,您的服務器將安全關閉。也許您正在使用一種日志文件系統,如 ReiserFS,以便縮短文件系統檢查時間,並增強文件系統的可靠性與性能。但願您的服務器散熱良好,並由高質量的硬件組成,而且您已經對安全問題給予了密切的關注。此時,也只有在此時,讀者才應該考慮實現軟件 RAID-1、4 或 5 ― 這樣做以後,您就可以預防服務器出現全面驅動器故障,從而潛在地將服務器的正常運行時間延長了幾個百分點。軟件 RAID 是一層附加的保護,它使已經很穩定的服務器變得更強健。    RAID-1 預排  既然您已經了解了 RAID 能做什麼和不能做什麼,我希望您對它抱有合理的預期和正確的態度。在這一節,我將帶您體驗模擬磁盤故障的整個過程,隨後使您的 RAID 卷退出降級模式。讀者最好能夠在一台測試機器上安裝一個 RAID-1 卷,並且隨我一起進行模擬,我強烈建議您這樣做。這種模擬可以很有趣。請稍許放松一下,這樣可以確保當驅動器真正出現故障時,您能夠沉著冷靜,知道具體如何處置。    好了,首先安裝一個 RAID 卷;如果需要回顧一下如何實現這一點,請參閱我的前一篇文章。為了執行這個測試,您必須安裝自己的 RAID-1 卷,以便在在斷開一個硬盤驅動器(因為這將是我們模擬驅動器故障的方式)的情況下,仍然可以引導 Linux 系統。    在安裝好自己的卷之後,如果您執行 cat /proc/mdstat 命令,您看到的輸出將類似於這個代碼示例。    請注意,這使用的是 devfs,這就是讀者看到上面所列的極長設備名的原因。我實際上是將 /dev/hda5 和 /dev/hde1 用作 RAID-1 磁盤。此時,內核軟件 RAID 代碼正在同步這兩個驅動器,以便它們彼此精確地成為對方的鏡像。如果 RAID-1 卷一切正常,則可以繼續向下進行,在該卷中創建一個文件系統,然後將它掛載在某個位置上。向這個卷中復制一些文件,然後設置 /etc/fstab,以便在系統引導時自動掛載這個卷 (/dev/md0)。下面是我在我 fstab 中添加的一行;您要添加的行可能稍有不同:    /dev/md0 /mnt/raid1 reiserfs defaults 0 0             好了;至此我們已差不多作好了模擬驅動器故障的准備,但並非萬事俱備。首先,再次執行 cat /proc/mdstat,並等待卷中的所有磁盤完成同步。完成同步之後, /proc/mdstat 將類似於這個代碼示例。    開始模擬  好了,既然重新同步已經完成,我們已作好模擬准備。向下繼續,關閉機器並且切斷電源。然後,打開機箱,並斷開組成 RAID-1 陣列的一個硬盤。當然,您肯定不希望斷開包含 Linux 根分區的硬盤 ― 我們將需用它來再次啟動 Linux!好,硬盤已經斷開,請重新啟動機器。當您登錄之後,應該發現 /dev/md0 已掛載,並且您仍然可以使用這個卷。當執行 cat /proc/mdstat 時,您將看到主要變化:    # cat /proc/mdstat  Personalities : [linear] [raid0] [raid1] [raid5]  read_ahead 1024 sectors  md0 : active raid1 ide/host0/bus0/target0/lun0/part5[0]   4610496 blocks [2/1] [U_]     unused devices:              您可以看出 /dev/md0 卷正在以降級模式運行。我斷開的是驅動器 /dev/hde,因此,當內核引導並且試圖自動啟動該陣列時,系統將找不到 /dev/hde1。幸運的是,內核找到了 /dev/hda5,而且 /dev/md0 能以降級模式啟動。正如您所見,/dev/hde1 分區未在 /proc/mdstat 中列出,而且其中一個 RAID 磁盤被標記為“不可用”(是 "[U_]" 而不是 "[UU]")。但是,由於 /dev/md0 仍在運行,軟件 RAID-1 正在執行預期的任務 ― 保持數據是可用的。    恢復  我們正在經歷一種模擬的驅動器故障。如果當前未加電的驅動器在系統運行時真正出現故障,那將正好是我們所處的這種情形。我們的 RAID-1 卷將以降級模式運行,即該卷仍然可用,但是不再有任何冗余。在方便的時侯,我們將希望關閉系統,更換故障驅動器,並且重新啟動系統。此時我們的 RAID-1 卷仍將以降級模式運行。    一旦在機器上裝好新的驅動器,我們將希望在其上創建一個大小適當的 RAID 自動檢測 ("FD") 分區。為了讓 Linux 能夠重新讀入該磁盤的分區表,可能需要再一次重啟系統。一旦系統看到這個新分區,我們就可以開始恢復降級的 RAID-1 陣列 ― 此後,我們又擁有了某種冗余。    當然,我們只是在執行一個模擬過程。為了練習向 RAID 陣列中添加一個分區,我們可以作兩種處理,這取決於您要模擬哪種場景。既可以關閉機器,接上驅動器,啟動機器,並將原來的分區添加到陣列中,也可以關閉機器,接上驅動器,啟動機器,刪除該驅動器,然後創建一個 新的 RAID 自動檢測分區 ("FD") ― 當然,分區的大小要適當,即至少不小於它所替代的分區 ― 然後將這個嶄新的分區添加到陣列中。盡管第一種方案也模擬了一些事件,如磁盤控制




Copyright © Linux教程網 All Rights Reserved