自建簡單的raid及對計算速度影響的測試
瀏覽量: 次 發(fā)布日期:2023-09-11 09:17:53
自建簡單的raid及對計算速度影響的測試
Jan 19, 2019 增加關閉raid命令,更新測試例子
Dec 30, 2017 初版
筆者有一次需要做一個很大的計算,需要大概7T的硬盤空間,手頭的計算資源沒有一個能滿足這個要求。恰好實驗室有兩塊6T的盤不怎么用,于是想到可以把這兩個盤組個raid,就可以用起來了。
?什么是raid?
RAID (Redundant Arrays of Independent Disks),在《鳥哥的私房菜》一書中譯為容錯廉價磁盤陣列。簡單而言,就是一個可以將多個磁盤組成一個大的磁盤的技術。比如上面我遇到的問題,我可以將兩塊6T的硬盤組成一個12T的空間來使用。
?raid的等級分類
(1)raid 0
仍然以上面兩個6T的硬盤組成12T的空間為例,在這種模式下,向硬盤寫入的數據會被切割成兩份,分別存入兩個6T的盤中,相當于是并行地寫入數據,因此,如果使用兩在大小、性能一樣的硬盤組成raid0的話,理論的寫入速度會變成一塊盤的兩倍,是不是很爽?當然,由于數據被切割寫入兩塊盤,只要其中一個盤損壞,整個數據就都被損壞了。
(2) raid 1
同樣用兩塊相同的盤組成。此時同一份數據會同時寫入兩塊硬盤,所以raid 1被稱為映像模式,可用于數據備份。
(3)raid 0+1或raid 1+0
顧名思義,就是以上兩種模式的組合,既可以提高速度,又可以備份數據,適合土豪使用,因為這種模式需要的盤比較多。
宿遷數據恢復
(4)raid 5
這種模式至少需要三塊硬盤。其中兩塊盤組成raid 0,另外一塊盤用于當前兩塊盤中的一個出現(xiàn)損壞時進行替換,這樣可以保證raid 0數據的安全。當一塊硬盤損壞時,要及時更換新的,如果等兩塊都壞了,就沒辦法了。
?實現(xiàn)方式
raid分為軟件raid和硬件raid。硬件raid使用專門的raid卡來管理raid陣列,具有穩(wěn)定和速度快的優(yōu)點,當然,一塊好的raid卡的價格還是比較高的,不過咱可以到某寶上去淘二手的。而軟raid則是用Linux系統(tǒng)自帶的mdadm軟件來實現(xiàn)和管理陣列,在穩(wěn)定性和性能上是不如硬raid的。下面咱們就動手自己建一個軟raid。
?實戰(zhàn)
此處展示兩塊硬盤組raid 0的操作,同樣以上面的兩個6T的盤組成12T的盤為例。首先將兩個盤插上,用fdisk -l命令會看到兩塊盤的信息,假設我們看到的盤的名字為/dev/sdb和/dev/sdc。下面可以對這兩個盤分別進行分區(qū),也可以不分區(qū),在我們這個實例中,因為我們想用滿兩個6T盤的所有空間,所以可以不需要在這一步對兩個盤進行分區(qū)和格式化。然后就是創(chuàng)建raid:
mdadm --create --auto=yes /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
這行命令中的選項的含義應該十分明確,就不細述了,具體也可查看mdadm的說明,其中/dev/md0就是12T空間的設備名,此時用fdisk -l就可以看到這個空間。然后就可以把這個空間當作是一塊硬盤來操作:
格式化:mkfs.ext4 /dev/md0
掛載:mount /dev/md0 /mnt
過程很簡單,只是12T的空間的格式化可能要等幾分鐘。
其實到這一步所有的工作已經完成,但是如果重啟機器會發(fā)現(xiàn)raid還在,只是設備名字變成了/dev/md127,且不會自動掛載,因此要將設備寫進系統(tǒng)分區(qū)表。首先需要寫一個raid配置文件,位于/etc/mdadm.conf,里面寫一行信息就可以了:
ARRAY /dev/md0 UUID=XX
UUID可以用mdadm --detail /dev/md0來查看。
然后將/dev/md0寫入/etc/fstab文件:
/dev/md0 /mnt /ext4 defaults 0 0
最近筆者遇到一個情況,原先在某服務器上使用三塊SSD組了一個raid 0,但是用了一段時間后,其中一塊盤出現(xiàn)了問題,于是整個raid盤就掛掉了,所幸的是在筆者的服務器上SSD都是用來讀寫計算過程中的臨時文件的,因此不用擔心數據的丟失。于是拔掉了其中一塊盤,想將剩下的兩塊盤重新組成raid 0,此時按上面的操作,出現(xiàn)了報錯:
mdadm: /dev/md0 is already in use.
其原因是這兩塊盤原來已經組過raid,在磁盤上會存有raid的相關數據,因此系統(tǒng)檢測到已經有一個/dev/md0了,雖然此處已經比原來少了一塊硬盤。解決辦法是要先將原來的raid關閉掉,命令為
mdadm --stop /dev/md0
這樣就可以按上述步驟重新組建raid了。
?對計算速度的影響
理論來說raid 0的速度會是單個硬盤的兩倍,而實際會打個折扣。筆者使用Pulay開發(fā)的PQS軟件做了一個簡單的MP2計算測試,體系含有1002個基函數,兩次計算將臨時文件目錄進行更改,一次位于單硬盤上,一次位于raid 0分區(qū)。在PQS中,MP2模塊會在計算過程中將積分寫入硬盤,計算的I/O比較大。計算時間的測試結果如下:
單核:單硬盤:106 min
raid 0: 99 min
12核:單硬盤:66 min
raid 0: 15 min
從上面的數據可以看出,12核并行時間和串行時間相比,加速比不高,正是因為該計算硬盤讀寫大,限制了計算速度。在串行情況下,raid 0對計算速度略有提升,而在12核并行的情況下,raid 0的速度提升就非常明顯了,甚至只用了單硬盤的不到四分之一的時間。
需要說明的是,上面用于測試的單硬盤的轉速是7200 rpm,而用于組raid的兩塊盤的轉速是5400 rpm,性能略差一些。
?小結