2007年9月29日

Linux & RAID

比較有玩電腦的都知道,RAID可以容許硬碟故障,家裏的file server和nat最早都是淘汰的電腦組的,file server在一開始組的時候,只是因為mp3都放自己電腦的磁碟,別人不方便聽,而且別人聽mp3,複製個mp3,電腦就會lag,因此當時把淘汰的電腦拿來組file server。
當時組file server時,就是盡全力把所有能動的硬碟都往上面塞,反正廢物利用~後來硬碟不夠大了,開始針對它買硬碟,當時也都沒有想到硬碟掛了怎麼辦,只在想,哪會這麼衰,而且這幾顆硬碟耐操的勒~溫度50,60都沒事,哪是說掛就掛的~
這次暑假,更新gigabit網路,添購了gigabit網路卡、HUB和網路線(更新幾條線變成CAT6,預期這幾條線未來到10G頻寬應該都ok),誰知道K7的機器似乎不大支援Intel PRO/1000 Server Adapter,100M時沒事,1G就不行了~
我因此改了改CMOS的設定,擔心是CMOS設定的問題,誰知道這一改,反而就出事了~~
因為那台K7,裝了很多硬碟,我另外加了IDE擴充卡和SATA1擴充卡,CMOS設定一改,動到了PCI write cache, pci 2x之類的設定,結果SATA卡剛好在設定的插槽上,開進Linux之後,就亂動亂跑,結果聽聽mp3, 讀讀資料就彈出資料錯誤的訊息,然後硬碟資料就毀了~
受害者有SATA 80G和SATA 250G,裡面卡通mp3,無失真音樂檔,資料.............唉~~~

也因此全面更新file server主機板和建RAID的想法,暑假就砸了不少錢建起來了,目前這台電腦的硬體在新電腦中很初階,P5KPL-VM + E2140 + DDR2 667 1G................

說了半天終於要開始說重點了~~~RAID~~
要建立RAID,我一開始很猶豫要買RAID卡還是用Linux的soft RAID,結果在看了這兩篇的討論之後:
http://moto.debian.org.tw/viewtopic.php?t=6915
http://moto.debian.org.tw/viewtopic.php?t=4104

我發現除非買到超過6000的RAID卡,否則要有硬體RAID的支援,都是天方夜譚,連一些高級RAID卡,在Linux下也是靠soft,那何必用它呢?因此,我決定用soft RAID來建置file server的磁碟陣列。

話說Linux的soft RAID非常的有彈性,Linux的soft RAID是以partition為單位的,因此不像硬體RAID卡,它不需要使用整顆硬碟作RAID,只要每個磁碟都切出相同大小的partition(大小差一點沒關係),就可以組建RAID了,此外,也因為是partition為單位,SCSI、IDE、SATA都沒差,只要不在意速度的差異,完全可以混組RAID,這點~硬體RAID卡是作不到的,此外,硬體卡有個麻煩,如果是主機板內建,主機板掛了,資料就讀不出來了,除非找到同樣晶片的主機板來開機,如果是硬體RAID卡,要擔心卡片壞掉,壞掉一樣資料就讀不出來了,soft RAID則不,只要有Linux LiveCD,隨時可以把RAID掛載使用,不受硬體的影響。
而以我這邊來說,因為家裏的硬碟是陸陸續續買的,因此size有差,大部分都是80G的(本來有1顆60G,但RAID安裝上去後,就經常出現DMA error,之後RAID就顯示fail,因此換新了),1顆是160G的,其餘的主要就是這次新添購的3顆SATA 320G組成的RAID,分別是
80G x 3 + 160G => 240G RAID5 (160切剩下80G當Linux系統碟,按一般方式安裝Linux使用)
320G x 3 => 640G RAID5

至於前面提過的250G,目前閒置中,準備東征西討去跟別人copy卡通mp3,接著考慮網拍賣了改買320G,把320G RAID再提昇~

至於RAID的組建其實不難,剛開始不瞭解時會有些緊張,但是習慣之後就還好,我個人覺得安裝的部份,寫的不錯的是:
http://williewu.pbwiki.com/SoftRaid

至於損毀之後的加入動作也很容易,首先要知道的是,Linux的soft RAID會自己判斷硬碟是否損毀,判定損毀會自動把該磁碟自動設成fail和removed,之後只要將新的硬碟裝上去,進入系統,用cfdisk將RAID partition切割好(要確定有正確寫入唷~cfdisk最下面會顯示訊息,提示正確寫入,或需要重新開機),就可以用mdadm --add來把它加入了,加入之後,它就會自己rebuilding(過程和前面網頁教的,RAID1硬碟損毀時排除方法相同)~

中間要注意的是,rebuild的時候,不論是一開始建立還是換上新硬碟,過程中都不能關機或重新開機,必需要一直待在OS中,直到rebuild完成才可重新開機。

如果想體驗一下過程,我們也可以下指令,手動的讓RAID的特定磁碟發生fail、removed的狀態,當然,這情況下磁碟是好的,只是我們以下指令的方式,達到和真實的情況相同。

最後,RAID5的技術很有趣,不知道有沒有人想過,為何它的容錯技術,不論幾顆磁碟,都只需要花費1顆磁碟?
它其實滿神奇的,使用邏輯閘XOR,以1個bit來說,不論有多少顆硬碟,每顆的1個bit,假設是1,0,0,1,0,1,0,0,經過XOR計算之後,就只會產生1個bit的數值1,這是很巧妙的事,而當壞掉1顆磁碟時,同樣的,用包括XOR得出的那1個bit作XOR,又會反過來得出其中任何1個數值,達成容錯的效果。

沒有留言: