Linux陣列 RAID詳解

主要內容:(筆記總結--會不定時補充、修改,若有錯誤,歡迎指正探討) node

  1、 RAID詳解
  2、 mdadm工具介紹
  3、 建立一個RAID的基本過程
  4、 磁盤陣列的管理
  5、 RAID優化
linux

RAID詳解:數組


  描述:RAID:(Redundant Array of indenpensive Disk) 獨立磁盤冗餘陣列: 磁盤陣列是把多個磁盤組成一個陣列,看成單一磁盤使用,它將數據以分段(striping)的方式儲存在不一樣的磁盤中,存取數據時,陣列中的相關磁盤一塊兒動做,大幅減低數據的存取時間,同時有更佳的空間利用率。磁盤陣列利用的不一樣的技術,稱爲RAID level,不一樣的level針對不一樣的系統及應用,以解決數據安全的問題。簡單來講,RAID把多個硬盤組合成爲一個邏輯扇區,所以,操做系統只會把它看成一個硬盤。
   
  通常高性能的磁盤陣列都是以硬件的形式來達成,進一步的把磁盤存取控制及磁盤陣列結合在一個控制器(RAID controler)或控制卡上,針對不一樣的用戶解決人們對磁盤輸輸入輸出系統的四大要求:
  (1)增長存取速度,
  (2)容錯(fault tolerance),即安全性
  (3)有效的利用磁盤利用率;
  (4)儘可能的平衡CPU,內存及磁盤的性能差別,提升主機的總體工做性能。

可提供的功能
安全

   1.冗餘(容錯) 架構

   2.性能提高

RAID分類: 
  
 1. 硬件RAID:用RAId接口卡來實現;須要內核支持其驅動,而且該類設備設備顯示爲SCSI設備,代號爲/dev/sd*
 2. 軟件RAID:用內核中的MD(multiple devices)模塊實現,該類設備在/etc/下表示爲:md*;在如今的RH 5版本中使用mdadm工具管理軟RAID;(雖然來講能夠用軟件模擬實現raid,可是相對對磁盤控制的功能及性能不如硬件實現的好,生產環境中最好使用硬件raid

 
幾種常見RAID類型描述:併發

  圖示:app

 


 1. RAID-0 :striping(條帶模式),至少須要兩塊磁盤,作RAID分區的大小最好是相同的(能夠充分發揮並優點);而數據分散存儲於不一樣的磁盤上,在讀寫的時候能夠實現併發,因此相對其讀寫性能最好;可是沒有容錯功能,任何一個磁盤的損壞將損壞所有數據;
 2. RAID-1 :mirroring(鏡像卷),至少須要兩塊硬盤,raid大小等於兩個raid分區中最小的容量(最好將分區大小分爲同樣),可增長熱備盤提供必定的備份能力;數據有冗餘,在存儲時同時寫入兩塊硬盤,實現了數據備份;但相對下降了寫入性能,可是讀取數據時能夠併發,幾乎相似於raid-0的讀取效率;
 3. RAID-5 :須要三塊或以上硬盤,能夠提供熱備盤實現故障的恢復;採用奇偶效驗,可靠性強,且只有同時損壞兩塊硬盤時數據纔會徹底損壞,只損壞一塊硬盤時,系統會根據存儲的奇偶校驗位重建數據,臨時提供服務;此時若是有熱備盤,系統還會自動在熱備盤上重建故障磁盤上的數據;
    存儲方式:簡單來講就是,磁盤陣列的第一個磁盤分段是校驗值,第二個磁盤至後一個磁盤再折回第一個磁盤的分段是數據,而後第二個磁盤的分段是校驗值,從第三個磁盤再折回第二個磁盤的分段是數據,以此類推,直到放完數據爲止。這樣數據與校驗值的循環分離存儲就能夠達到必定的故障重建功能;可是raid-5的控制較爲複雜,且計算大量的校驗碼,可能給系統形成額外計算的負擔(軟raid來講,硬件有本身的數據處理能力)

 注:RAID中的容錯表示即便磁盤故障,數據仍能保持完整,可以讓系統存取到正確的數據,而SCSI的磁盤陣列更可在工做中抽換磁盤,並可自動重建故障磁盤的數據。
   熱備份(hot spare or hot standby driver):爲了增強容錯的功能以及使系統在磁盤故障的狀況下能迅速的重建數據,以維持系統的性能,通常的磁盤陣列系統均可使用熱備份(hot spare or hot standby driver)的功能,所謂熱備份是在創建(configure) 磁盤陣列系統的時候,將其中一磁盤指定爲後備磁盤,該磁盤在日常並不操做,但若陣列中某一磁盤發生故障時,磁盤陣列即之後備磁盤取代故障磁盤,並自動將故障磁盤的數據重建(rebuild)在後備磁盤之上,由於反應快速,加上快取內存減小了磁盤的存取, 因此數據重建很快便可完成,對系統的性能影響很小。
   在任什麼時候候都不要用同一個硬盤上的多個區來作RAID,那樣不只不能提升系統的性能,反而會大大下降總體系統的系能;
ide


   對上面幾種經常使用的RAID類型分析後,可知,RAID-0主要能夠提升磁盤性能,RAID-1主要能夠實現備份容錯(RAID-5因爲控制機制複雜在此暫不使用),因此能夠在實際生產環境下考慮結合RAID-0和RAID-1來實現磁盤存儲系統的高性能、高容錯。
    下面圖示的兩種raid結合方式解析:高併發

 


       
    對於一:底層分別用有兩塊硬盤的raid0實現高併發,再集合兩個raid0組實現冗餘;下層的任意一個raid0組中有任意一塊硬盤會使改組失效,可是兩外一個組仍能提供所有數據;
    對於二:底層用raid-1實現數冗餘,上層用raid-2實現高併發,該種結構中任意一個硬盤的故障,不對本組總體數據工做構成破壞性影響;因此感受該種方案更優異,在實際生產中有部分應用(具體配置過程再文章最後附);

  


mdadm工具介紹:
  描述:
    mdadm(multiple devices admin)是 linux下標準的的軟raid管理工具,是一個模式化工具(在不一樣的模式下);程序工做在內存用戶程序區,爲用戶提供RAID接口來操做內核的模塊,實現各類功能;
RedHat已經內置了該工具;官方最新的版本應該是3.2,須要最新版本能夠到官方網站下載或
http://www.kernel.org/pub/linux/utils/raid/mdadm/下載源碼包進行編譯安裝(官網一直打不開o(╯□╰)o).
 
工具

 實驗環境:RedHhat5.4 ;mdadm版本爲v2.6.9 ;

   可能不一樣的版本選項等略有變更,使用時請注意對照本身版本的man文檔;

基本語法:
  # mdadm [mode] <raid-device> [options] <component-devices>

目前支持的模式:
  LINEAR(線性模式)、RAID0(striping條帶模式)、RAID1(mirroring)、 RAID-四、RAID-五、 RAID-六、 RAID-十、 MULTIPATH和FAULTY
  LINEAR:線性模式,該模式不是raid的標準模式,其主要做用是能夠實現將幾塊小的硬盤組合爲一塊大硬盤來使用;數組存儲時一次存滿一個硬盤在使用下一個硬盤;對上層來講操做的是一個大硬盤

模式(7種):
   Assemble:裝配模式:加入一個之前定義的陣列;可使挺值得陣列或從其餘主機移出的陣列
   Build:  建立:建立一個沒有超級塊的陣列
   Create: 建立一個新的陣列,每一個設備具備超級塊
   Follow or Monitor: 監控RAID的狀態,通常只對RAID-1/4/5/6/10等有冗餘功能的模式來使用
   Grow:(Grow or shrink) 改變RAID的容量或陣列中的設備數目;收縮通常指的是數據收縮或重建;
   Manage: 管理陣列(如添加spare盤和刪除故障盤)
   Incremental Assembly:添加一個設備到一個適當的陣列。
   Misc:  容許單獨對陣列中的某個設備進行操做(如抹去superblocks 或中止陣列)
   Auto-detect: 此模式不做用於特定的設備或陣列,而是要求在Linux內核啓動任何自動檢測到的陣列。

OPTIONS:

 

選擇一個模式的選項:(Options for selecting a mode)
-A, --assemble: 加入並開啓一個之前定義的陣列
-B, --build:   建立一個沒有超級塊的陣列(Build a legacy array without superblocks.)
-C, --create:  建立一個新的陣列
-F, --follow, --monitor:選擇監控(Monitor)模式
-G, --grow:   改變激活陣列的大小或形態
-I, --incremental: 添加一個單獨的設備到合適的陣列,並可能啓動陣列
--auto-detect:   請求內核啓動任何自動檢測到的陣列


不特定於一個模式的選項:(Options that are not mode-specific)
-c, --config=: 指定配置文件,缺省爲 /etc/mdadm.conf
-s, --scan:  掃描配置文件或 /proc/mdstat以搜尋丟失的信息。默認配置文件:/etc/mdadm.conf
-h, --help:  幫助信息,用在以上選項後,則顯示該選項信息
-v, --verbose: 顯示細節,通常只能跟 --detile 或 --examine一塊兒使用,顯示中級的信息;
-b, --brief:  較少的細節。用於 --detail 和 --examine 選項
--help-options: 顯示更詳細的幫助
-V, --version: 版本信息
-q,--quit:   安靜模式;加上該選項能使mdadm不顯示純消息性的信息,除非那是一個重要的報告;

create build 或grow時使用的選項:
-n, --raid-devices=: 指定陣列中活動的device數目,不包括spare磁盤,這個數目只能由--grow修改
-x, --spare-devices=:指定初始陣列的冗餘device 數目即spare device數目;
-c, --chunk=:  Specify chunk size of kibibytes. 缺省爲 64. chunk-size是一個重要的參數,決定了一次向陣列中每一個磁盤寫入數據的量

  (Chunk :,能夠理解爲raid分儲數據時每一個數據段的大小(一般爲32/64/128等這類數字大小);合理的選擇chunk大小很是重要,若chunk過大可能一塊磁盤上的帶區空間就能夠知足大部分的I/O操做,使得數據的讀寫只侷限於一塊硬盤上,這便不能充分發揮RAID併發的優點;若是chunk設置太小,任何很小的I/O指令都 可能引起大量的讀寫操做,不能良好發揮併發性能,佔用過多的控制器總線帶寬,也影響了陣列的總體性能。因此,在建立帶區時,咱們應該根據實際應用的須要,合理的選擇帶區大小。)


-z, --size=:
組建RAID1/4/5/6後從每一個device獲取的空間總數;可是大小必須爲chunk的倍數,還須要在每一個設備最後給RAID的superblock留至少128KB的大小。
--rounding=: Specify rounding factor for linear array (==chunk size)
-l, --level=: 設定 raid level.raid的幾倍
--create:   可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build:   可用:linear, raid0, 0, stripe.
-p, --layout=:設定raid5 和raid10的奇偶校驗規則;而且控制故障的故障模式;其中RAID-5的奇偶校驗能夠在設置爲::eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省爲left-symmetric
--parity:   相似於--layout=
--assume-clean:目前僅用於 --build 選項
-R, --run:  陣列中的某一部分出如今其餘陣列或文件系統中時,mdadm會確認該陣列。此選項將不做確認。
-f, --force: 一般mdadm不容許只用一個device 建立陣列,並且此時建立raid5時會使用一個device做爲missing drive。此選項正相反
-N,--name=: 設定陣列的名稱


管理模式選項(For Manage mode):
-a, --add: 添加列出的設備到一個工做的陣列中;當陣列處於降級狀態(故障狀態),你添加一個設備,該設備將做爲備用設備而且在該備用設備上開始數據重建。
-r, --remove:從陣列中移除列出的設備,而且該設備不能處於活動狀態(是冗餘盤或故障盤);
-f,--fail:將列出的設備標記爲faulty狀態,標記後就能夠移除設備;(能夠做爲故障恢復的測試手段)
--set-faulty:同上


監控模式選項(For Monitor mode):

-m, --mail: 設置一個mail地址,在報警時給該mail發信;該地址可寫入conf文件,在啓動陣列是生效
-p, --program, --alert:當檢測到一個事件時運行一個指定的程序
-y, --syslog: 設置全部的事件記錄於syslog中
-t, --test:  給啓動時發現的每一個陣列生成test警告信息;該信息傳遞給mail或報警程序;(以此來測試報警信息是否能正確接收)
   
MISC模式選項:
  Usage: mdadm options ...  devices ...
-Q, --query: 查看一個device,判斷它爲一個 md device 或是 一個 md 陣列的一部分
-D, --detail: 打印一個或多個md device 的詳細信息
-E, --examine:打印 device 上的 md superblock 的內容


建立一個軟RAID的基本過程:

(以三個分區模擬建立一個raid5爲操做示例,對於level0/1的How-To再也不寫出,若是理解原理,配置真的很簡單;)
1.  生成raid組成:
  linux中陣列組成單元是分區,分區能夠是整個設備也能夠是設備多個分區中的一個;在fdisk分區後須要將分區標誌改成Linux raid auto類型;

  
  
  
  
  1. # 分區後以下:
  2. Device  Boot      Start         End      Blocks   Id  System 
  3. /dev/sdb1               1         609     4891761   fd  Linux raid autodetect 
  4. /dev/sdc1               1         609     4891761   fd  Linux raid autodetect 
  5. /dev/sdd1               1         609     4891761   fd  Linux raid autodetect 

2.  創建磁盤陣列

  
  
  
  
  1. # mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sd{b,c,d}1 
  2. mdadm: array /dev/md0 started. 
  3.  
  4. -C :建立一個陣列,後跟陣列名稱
  5. -l :指定陣列的級別;
  6. -n :指定陣列中活動devices的數目
  7.  

3.  查看陣列狀態

  
  
  
  
  1. [root@bogon ~]# cat /proc/mdstat  
  2. Personalities : [raid6] [raid5] [raid4]  
  3. md0 : active raid5 sdd1[2] sdc1[1] sdb1[0] 
  4.       9783296 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 
  5. unused devices: <none> 
  6.  

  經過cat /proc/mdstat信息查看全部運行的RAID陣列的狀態,在第一行中首先是MD的設備名md0,active和inactive選項表示陣列是否能讀/寫,接着是陣列的RAID級別raid5,後面是屬於陣列的塊設備,方括號[]裏的數字表示設備在陣列中的序號,(S)表示其是熱備盤,(F)表示這個磁盤是 faulty狀態。下一行中首先是陣列的大小,用塊數來表示;後面有chunk-size的大小,而後是layout類型,不一樣RAID級別的 layout類型不一樣,[3/3] [UUU]表示陣列有3個磁盤而且3個磁盤都是正常運行的,而[2/3]和[_UU] 表示陣列有3個磁盤中2個是正常運行的,下劃線對應的那個位置的磁盤是faulty狀態的。

  
  
  
  
  1. 查看陣列的詳細信息:
  2. [root@bogon ~]# mdadm --detail /dev/md0 
  3. /dev/md0: 
  4.         Version : 0.90 
  5.   Creation Time : Tue Mar 15 08:17:52 2011 
  6.      Raid Level : raid5 
  7.      Array Size : 9783296 (9.33 GiB 10.02 GB) 
  8.   Used Dev Size : 4891648 (4.67 GiB 5.01 GB) 
  9.    Raid Devices : 3 
  10.   Total Devices : 3 
  11. Preferred Minor : 0 
  12.     Persistence : Superblock is persistent 
  13.  
  14.     Update Time : Tue Mar 15 08:20:25 2011 
  15.           State : clean 
  16.  Active Devices : 3 
  17. Working Devices : 3 
  18.  Failed Devices : 0 
  19.   Spare Devices : 0 
  20.  
  21.          Layout : left-symmetric  校驗規則
  22.      Chunk Size : 64K 
  23.  
  24.            UUID : e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d 
  25.          Events : 0.2 
  26.  
  27.     Number   Major   Minor   RaidDevice State 
  28.        0       8       17        0      active sync   /dev/sdb1 
  29.        1       8       33        1      active sync   /dev/sdc1 
  30.        2       8       49        2      active sync   /dev/sdd1 
  31.  

4. mdadm.conf配置:
   mdadm.conf是該軟件的默認配置文件,主要做用是方便跟蹤軟RAID的配置,尤爲是能夠配置監視和事件上報選項。其中寫入每個陣列組成的詳細狀況,用於在下次開啓陣列後依據此文件從新裝配(assemble)開啓陣列,不然就須要在開啓時手動定義陣列中的成員;固然是推薦建立該文件,防止出現意外狀況,具體的詳細配置及示例能夠參看man文檔# man mdadm.conf
 

   
   
   
   
  1. [root@bogon ~]# echo "DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 " >> /etc/mdadm.conf  
  2. [root@bogon ~]# mdadm -Ds >> /etc/mdadm.conf   
  3. [root@bogon ~]# echo "MAILADDR mospiral@gmail.com" >> /etc/mdadm.conf   
  4.  MAILADDR指定出問題時監控系統發郵件的地址 
  5.  
  6. # 格式以下: 
  7. DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1  
  8. ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d 
  9. MAILADDR mospiral@gmail.com 
  10. #DEVICE行指明:依據該配置文件開啓陣列時,去查找那些設備的超級快信息;若沒有該行,
  11. 就去搜索mtab中全部設備分區的超級快信息;因此改行能夠不寫,可是隻要寫上,之後添加spare
  12. 設備時就須要同時修改改行信息;
  13. #ARRAY 行指明raid的名稱,級別uuid等基本信息
  14. #能夠添加諸如MAILADDR及PROGRAM等指定monitor狀態下的監控報警信息;

 

磁盤陣列的管理:
  能夠在manage模式下對磁盤進行各類管理工做;
 

給raid-5新增一個spare盤:

   
   
   
   
  1. [root@bogon ~]# mdadm -a /dev/md0 /dev/sda5  
  2. mdadm: added /dev/sda5 
  3.  
  4. 此時查看狀態: 
  5. [root@bogon ~]# cat /proc/mdstat  
  6. Personalities : [raid6] [raid5] [raid4]  
  7. md0 : active raid5 sda5[3](S) sdd1[2] sdc1[1] sdb1[0] 
  8.       9783296 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 
  9.        
  10. unused devices: <none> 
  11.  

模擬硬盤故障:

 
  
  
  
  
  1. [root@bogon ~]# mdadm -f /dev/md0  /dev/sdd1 
  2. mdadm: set /dev/sdd1 faulty in /dev/md0 
  3.  
  4. # 此時查看狀態,發現概念剛纔的熱備盤已經頂替了故障盤的位置,
  5. # 而且進度條顯示數據重建過程: 
  6. [root@bogon ~]# cat /proc/mdstat  
  7. Personalities : [raid6] [raid5] [raid4]  
  8. md0 : active raid5 sda5[3] sdd1[4](F) sdc1[1] sdb1[0] 
  9.       9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_] 
  10.       [>....................]  recovery =  1.3% (66912/4891648) finish=6.0min speed=13382K/sec 
  11.        
  12. unused devices: <none> 
  13.  

 

熱移除故障的硬盤:

  
  
  
  
  1. [root@bogon ~]# mdadm -r /dev/md0  /dev/sdd1 
  2. mdadm: hot removed /dev/sdd1 

  3. [root@bogon ~]# cat /proc/mdstat  
  4. Personalities : [raid6] [raid5] [raid4]  
  5. md0 : active raid5 sda5[3] sdc1[1] sdb1[0] 
  6.       9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_] 
  7.       [===>.................]  recovery = 16.1% (792136/4891648) finish=4.6min speed=14828K/sec 
  8.        
  9. unused devices: <none> 
  10.  

  對於有冗餘的raid形式,在單一磁盤故障時通常能在一段時間內重建數據;可是數據量很是大時,重建會很是緩慢,且重建過程系統壓力比較大,此時須要多關注系統負載,防止重建過程出現錯誤;在熱移除故障盤一戶,也須要儘快的換上新硬盤,而且添加spare盤;在故障修復,重建重建以後,須要從新生成配置文件,防止在下次開啓時,按照最初的定義模式開啓;
 

中止RAID:

  
  
  
  
  1. # 指定中止某個陣列 
  2. [root@bogon ~]# mdadm -S /dev/md0  
  3.          
  4. # 中止配置文件中定義的全部陣列 
  5. [root@bogon ~]# mdadm -Ss 
  6. mdadm: stopped /dev/md0 
  7. # -s –scan去查詢配置文件或沒有配置文件時查詢mdstat中的全部陣列
  8.  

 

開啓RAID:

  
  
  
  
  1. [root@bogon ~]# mdadm -As  
  2. mdadm: /dev/md0 has been started with 2 drives (out of 3). 
  3. # -s –scan:根據配置文件開啓全部的陣列,此時因爲故障恢復過,
  4. # 可是因爲未重建配置文件,陣列我不能加載上新添加的硬盤;(須要停掉,從新手動指定) 
  5.  
  6. [root@bogon ~]# cat /proc/mdstat  
  7. Personalities : [raid6] [raid5] [raid4]  
  8. md0 : active raid5 sdb1[0] sdc1[1] 
  9.       9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_] 
  10. unused devices: <none> 
  11.  
  12. 若此時沒有配置文件,就須要手動指定設備名稱: 
  13. [root@bogon ~]# mdadm -A  /dev/md0 /dev/sdb1 /dev/sdc1  /dev/sda5  
  14. mdadm: /dev/md0 has been started with 3 drives. 
  15. # 注:將一個raid設備添加入md陣列後,md的信息會寫入到該設備分區的superblock中;
  16. # 在手動裝配時;mdadm工具會自動驗證陣列配置是否合法,而且作出相應的動做;


  若新接手一個raid,沒有配置文件,或忘記設備的準確組成,就須要按分區逐個檢查是不是raid設備及其餘信息,而後根據信息裝配陣列:

  
  
  
  
  1. [root@bogon ~]# mdadm -E /dev/sdb1 
  2. /dev/sdb1: 
  3.           Magic : a92b4efc 
  4.         Version : 0.90.00 
  5.            UUID : e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d 
  6.   Creation Time : Tue Mar 15 08:17:52 2011 
  7.      Raid Level : raid5 
  8.   Used Dev Size : 4891648 (4.67 GiB 5.01 GB) 
  9.      Array Size : 9783296 (9.33 GiB 10.02 GB) 
  10.    Raid Devices : 3 
  11.   Total Devices : 3 
  12. Preferred Minor : 0 
  13.  
  14.     Update Time : Tue Mar 15 09:25:10 2011 
  15.           State : clean 
  16.  Active Devices : 3 
  17. Working Devices : 3 
  18.  Failed Devices : 0 
  19.   Spare Devices : 0 
  20.        Checksum : b0cd088f - correct 
  21.          Events : 8 
  22.  
  23.          Layout : left-symmetric 
  24.      Chunk Size : 64K 
  25.  
  26.       Number   Major   Minor   RaidDevice State 
  27. this     0       8       17        0      active sync   /dev/sdb1 
  28.  
  29.    0     0       8       17        0      active sync   /dev/sdb1 
  30.    1     1       8       33        1      active sync   /dev/sdc1 
  31.    2     2       8        5        2      active sync   /dev/sda5 

  32. # 該處顯示出的是該分區superblock中包含的md信息;沒有配置文件時,能夠依據該信息裝配md;

 

刪除陣列:

   若須要完全清除這個陣列:

  
  
  
  
  1. [root@bogon ~]# umount /dev/md0    
  2. mdadm -Ss /dev/md0    
  3. [root@bogon ~]# mdadm --zero-superblock /dev/sd{b,c,d}1    
  4. # --zero-superblock 加上該選項時,會判斷若是該陣列是否包 
  5. # 含一個有效的陣列超級快,如有則將該超級塊中陣列信息抹除。  
  6. [root@bogon ~]# rm /etc/mdadm.conf  

RAID優化:

 (1) 設置stride值

 

 The stride is the software RAID device's chunk-size in filesystem blocks.For example,with an ext3 filesystem that will have an 4KB block size on a RAID device with a chunk-size of 64KB, the stride should be set to 16:(翻譯的很糾結,就貼上教材原文了。)

  
  
  
  
  1. mk2fs -j -b 4096 -E stride=16 /dev/md0 
  2. # 設置時,須要用-E選項進行擴展
  3.  

 設定良好的stride值,能夠在後期使用時,減小寫入數據時對數據塊計算的負擔,從而提升RAID性能;

附:RAID 1-0雙層架構的方法:

 首先建立兩個底層RAID-1

  
  
  
  
  1. [root@bogon ~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd[bc]1  
  2. mdadm: array /dev/md0 started. 
  3. [root@bogon ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[bc]2 
  4.  
  5. mdadm: array /dev/md1 started. 

 用兩個RAID-1實現上層RAID-0:

  
  
  
  
  1. [root@bogon ~]# mdadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md[01]   
  2. mdadm: array /dev/md2 started. 
  3.  

 查看陣列狀態:

  
  
  
  
  1. [root@bogon ~]# cat /proc/mdstat  
  2. Personalities : [raid6] [raid5] [raid4] [raid0] [raid1]  
  3. md2 : active raid0 md0[0] md1[1] 
  4.       9783232 blocks 64k chunks 
  5.        
  6. md1 : active raid1 sdb2[0] sdc2[1] 
  7.       4891712 blocks [2/2] [UU] 
  8.        
  9. md0 : active raid1 sdb1[0] sdc1[1] 
  10.       4891648 blocks [2/2] [UU] 
  11.        
  12. unused devices: <none> 
  13.  

 建立配置文件:

  
  
  
  
  1. [root@bogon ~]# mdadm -Ds > /etc/mdadm.conf 

 中止與開啓陣列:

  
  
  
  
  1. [root@bogon ~]# mdadm -Ss 
  2. mdadm: stopped /dev/md2 
  3. mdadm: stopped /dev/md1 
  4. mdadm: stopped /dev/md0 
  5. [root@bogon ~]# mdadm -As 
  6. mdadm: /dev/md0 has been started with 2 drives. 
  7. mdadm: /dev/md1 has been started with 2 drives. 
  8. mdadm: /dev/md2 has been started with 2 drives. 
  9. ##上述關閉與開啓過程,系統能只能識別層級,關閉先關閉上層,
  10. ##後開啓上層;防止了衝突;
  11.  

 

參考:

  軟RAID0的技術概要及實現 : http://www.linuxsir.org/main/node/279

  維基百科--RAID :  http://zh.wikipedia.org/zh-cn/Raid 

    http://www.linuxidc.com/Linux/2009-12/23394p6.htm

相關文章
相關標籤/搜索