一、磁盤冗余陣列 RAID(Redundant Array of Independent Disk)
RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。根據磁盤陳列的不同組合方式,可以將RAID分為不同的級別。 其中提高傳輸速率和提供容錯功能是最大的優點。其特色是N臺硬盤同時讀取速度加快及提供容錯性Fault Tolerant,所以RAID主要是解決訪問數據的存儲速度問題(Storage)不是備份問題(Backup Solution)。在不須停機情況下可處理以下動作:
1. RAID 磁盤陣列支持自動檢測故障硬盤
2. RAID 磁盤陣列支持重建硬盤壞軌的資料;
3. RAID 磁盤陣列支持不須停機的硬盤備援 Hot Spare;
4. RAID 磁盤陣列支援支持不須停機的硬盤替換 Hot Swap;
5. RAID 磁盤陣列支持擴充硬盤容量等。
功能:
1、擴大了存儲能力 可由多個硬盤組成容量巨大的存儲空間。
2、降低了單位容量的成本 市場上最大容量的硬盤每兆容量的價格要大大高于普及型硬盤,因此采用多個普及型硬盤組成的陣列其單位價格要低得多。
3、提高了存儲速度 單個硬盤速度的提高均受到各個時期的技術條件限制,要更進一步往往是很困難的,而使用RAID,則可以讓多個硬盤同時分攤數據的讀或寫操作,因此整體速度有成倍地提高。
4、可靠性 RAID系統可以使用兩組硬盤同步完成鏡像存儲,這種安全措施對于網絡服務器來說是最重要不過的了。
5、容錯性 RAID控制器的一個關鍵功能就是容錯處理。容錯陣列中如有單塊硬盤出錯,不會影響到整體的繼續使用,高級RAID控制器還具有拯救數據功能。
6、對于IDE RAID來說,目前還有一個功能就是支持ATA/66/100。RAID也分為SCSI RAID和IDE RAID兩類,當然IDE RAID要廉價得多。如果主機主板不支持ATA/66/100硬盤,通過RAID卡,則能夠使用上新硬盤的ATA/66/100
功能。
二、相關術語解釋
硬盤鏡像(Disk Mirroring):硬盤鏡像最簡單的形式是,一個主機控制器帶二個互為鏡像的硬盤。數據同時寫入二個硬盤,二個硬盤上的數據完全相同,因此一個硬盤故障時,另一個硬盤可提供數據。
硬盤數據跨盤(Disk Spanning):利用這種技術,幾個硬盤看上去像是一個大硬盤;這個虛擬盤可以把數據跨盤存儲在不同的物理盤上,用戶不需關心哪個盤上存有他需要的數據。
硬盤數據分段(Disk Striping):數據分散存儲在幾個盤上。數據的第一段放在盤0,第2段放在盤1,……直至達到硬盤鏈中的最后一個盤,然后下一個邏輯段將放在硬盤0,再下一個邏輯段放在盤1,如此循環直至完成寫操作。
雙控(Duplexing):這里指的是用二個控制器來驅動一個硬盤子系統。一個控制器發生故障,另一個控制器馬上控制硬盤操作。此外,如果編寫恰當的控制器軟件,可實現不同的硬盤驅動器同時工作。
容錯(Fault Tolerant):具有容錯功能的機器有抗故障的能力。例如RAID 1鏡像系統是容錯的,鏡像盤中的一個出故障,硬盤子系統仍能正常工作。
主機控制器(Host Adapter):這里指的是使主機和外設進行數據交換的控制部件(如SCSI控制器)。
熱修復(Hot Fix):指用一個硬盤熱備份來替換發生故障的硬盤。要注意故障盤并不是真正地被物理替換了。用作熱備份的盤被加載上故障盤原來的數據,然后系統恢復工作。
平均數據丟失時間(MTBDL-Mean Time Between Data Loss MTBDL,平均時間之間的數據丟失):發生數據丟失的事件間的平均時間。
平均無故障工作時間(MTBF-Mean Time Between Failure或MTIF MTBF – 平均無故障時間或MTIF):設備平均無故障運行時間。
系統重建(Reconstruction or Rebuild 改造或重建):一個硬盤發生故障后,從其它正確的硬盤數據和奇偶信息恢復故障盤數據的過程。
恢復時間(Reconstruction Time 重建時間):為故障盤重建數據所需要的時間。
虛擬盤(Virtual Disk 虛擬磁盤):與虛擬存儲器類似,虛擬盤是一個概念盤,用戶不必關心他的數據寫在哪個物理盤上。虛擬盤一般跨越幾個物理盤,但用戶看到的只是一個盤。
三、 RAID 0~RAID 7詳細說明:
1. RAID 0:無差錯控制的帶區組
要實現RAID0必須要有兩個以上硬盤驅動器,RAID0實現了帶區組,數據并不是保存在一個硬盤上,而是分成數據塊保存在不同驅動器上。因為將數據分布在不同驅動器上,所以數據吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的數據在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有數據差錯控制,如果一個驅動器中的數據發生錯誤,即使其它盤上的數據正確也無濟于事了。不應該將它用于對數據穩定性要求高的場合。如果用戶進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID可以提高數據傳輸速率,比如所需讀取的文件分布在兩個硬盤上,這兩個硬盤可以同時讀取。那么原來讀取同樣文件的時間被縮短為1/2。在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗余功能的,如果一個磁盤(物理)損壞,則所有的數據都無法使用。
2. RAID 1:鏡象結構
對于使用這種RAID1結構的設備來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。您也可以看到必須有兩個驅動器。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。當主硬盤損壞時,鏡像硬盤就可以代替主硬盤工作。鏡像硬盤相當于一個備份盤,可想而知,這種硬盤模式的安全性是非常高的,RAID 1的數據安全性在所有的RAID級別上來說是最好的。但是其磁盤的利用率卻只有50%,是所有RAID級別中最低的。
3. RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3類似, 兩者都是將數據條塊化分布于不同的硬盤上, 條塊單位為位或字節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。由于海明碼的特點,它可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。
4. RAID3:帶奇偶校驗碼的并行傳送
這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度,它像RAID 0一樣以并行的方式來存放數據,但速度沒有RAID 0快。校驗碼在寫入數據時產生并保存在另一個磁盤上。需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟件實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用于圖形(包括動畫)等要求吞吐率比較高的場合。不同于RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據。 如果奇偶盤失效,則不影響數據使用。RAID 3對于大量的連續數據可提供很好的傳輸率,但對于隨機數據,奇偶盤會成為寫操作的瓶頸。 利用單獨的校驗盤來保護數據雖然沒有鏡像的安全性高,但是硬盤利用率得到了很大的提高,為(n-1)/n。
RAID4:帶奇偶校驗碼的獨立磁盤結構
RAID4和RAID3很象,不同的是,它對數據的訪問是按數據塊進行的,也就是按磁盤進行的,每次是一個盤。不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問數據的效率不怎么好。
RAID5:分布式奇偶校驗的獨立磁盤結構
它的奇偶校驗碼存在于所有磁盤上,。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁盤上,所以提高了可靠性,允許單個磁盤出錯。硬盤的利用率為n-1。 但是它對數據傳輸的并行性解決不好RAID 3 與RAID 5相比,重要的區別在于RAID 3每進行一次數據傳輸,需涉及到所有的陣列盤。而對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作,可進行并行操作。RAID-5的話,優點是提供了冗余性(支持一塊盤掉線后仍然正常運行),磁盤空間利用率較高(N-1/N),讀寫速度較快(N-1倍)。RAID5最大的好處是在一塊盤掉線的情況下,RAID照常工作,RAID5是RAID級別中最常見的一個類型。RAID5校驗位即P位是通過其它條帶數據做異或(xor)求得的。
數學運算符號異或。
RAID6:兩種存儲的奇偶校驗碼的磁盤結構
它是對RAID5的擴展,主要是用于要求數據絕對不能出錯的場合。當然了,由于引入了第二種奇偶校驗值,所以需要N+2個磁盤,寫入速度也不好,用于計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載。
RAID10/01:高可靠性與高效磁盤結構
RAID 10是先鏡射再分區數據。是將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。RAID 10有著不錯的讀取速度,而且擁有比RAID 0更高的數據保護性。RAID 10巧妙的利用了RAID 0的速度以及RAID 1的保護兩種特性,不過它的缺點是需要的硬盤數較多,因為至少必須擁有四個以上的偶數硬盤才能使用。Raid 10首先創建2個獨立的Raid1,然后將這兩個獨立的Raid1組成一個Raid0,圖中磁盤1和磁盤2組成一個Raid1為陣列A,磁盤2和磁盤3又組成另外一個Raid1為陣列B;這兩個Raid1組成了一個新的Raid0。
RAID 01則是跟RAID 10的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分為兩組,變成RAID 1的最低組合,而將兩組硬盤各自視為RAID 0運作。RAID 01比起RAID 10有著更快的讀寫速度,不過也多了一些會讓整個硬盤組停止運轉的機率;因為只要同一組的硬盤全部損毀,RAID 01就會停止運作,而RAID 10則可以在犧牲RAID 0的優勢下正常運作。
mdadm的使用:
1. mdadm工具如果沒有安裝則需要安裝mdadm。
2. 查看幫助,mdadm –help mdadm –create –help man mdadm
在man page中有許多好的例子,在page的最后
3. mdadm 參數:
-C|–create 創建模式:
-n # 創建#個塊設備來創建RAID
-l # 指明要創建的RAID級別相當于–level
-a {yes|no} 自動創建目標RAID
-c chunk_size 指出chunk大小
-x # 指明空閑盤的個數
-D|–detail 顯示RAID的詳細信息
-s |–scan 通過掃描raid配置可以將配置追加至配置文件
-A -s 激活某一個設備
管理模式:
-f 標記指定磁盤為損壞磁盤
-a 添加磁盤
-r 移除磁盤
查看md的狀態:
cat /proc/mdstat
停止md設備:
mdadm -S /dev/md0
四、實際操作:
先對硬盤進行分區更改硬盤分區system id類型為:fd,下面我將sdb,sdc,sdd,sde四個磁盤進行分區,因為四個磁盤大小參數等都相等,我將先對一個硬盤進行分區,使用dd命令,將硬盤分區表同步至其他硬盤,使用fdisk對硬盤進行分區,這里將不在贅述
[root@cnode6_8 ~]# dd if=/dev/sdb of=/dev/sdc bs=1 count=512 512+0 records in 512+0 records out 512 bytes (512 B) copied, 0.0180665 s, 28.3 kB/s [root@cnode6_8 ~]# partx -a /dev/sdc
#其他盤類似操作
[root@cnode6_8 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt/cdrom sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 109.8M 0 part sdc 8:32 0 20G 0 disk └─sdc1 8:33 0 109.8M 0 part sdd 8:48 0 20G 0 disk └─sdd1 8:49 0 109.8M 0 part sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 9.8G 0 part /testdir ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sde 8:64 0 20G 0 disk └─sde1 8:65 0 109.8M 0 part
#下面將創建/dev/md0設備,chunk大小為512kb如果大小為M等大于k的單位則需要加單位,k不需要,-a自動,-l表示raid5,-n表示有幾塊硬盤處于工作狀態,-x表示有幾個空閑盤供其他磁盤損壞自動替補
[root@cnode6_8 ~]# mdadm -C /dev/md0 -c 512 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@cnode6_8 ~]# mke2fs -t ext3 /dev/md0 mke2fs 1.41.12 (17-May-2010) …… 此處省略 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@cnode6_8 ~]# mdadm -D /dev/md0 //查看創建的md0設備 /dev/md0: Version : 1.2 Creation Time : Thu Jul 28 17:58:51 2016 Raid Level : raid5 Array Size : 222208 (217.00 MiB 227.54 MB) Used Dev Size : 111104 (108.50 MiB 113.77 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Thu Jul 28 18:00:07 2016 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Name : cnode6_8.desktop:0 (local to host cnode6_8.desktop) UUID : 39c9d4e9:56d46119:0da52789:c7cc220e Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 3 8 65 - spare /dev/sde1 [root@cnode6_8 ~]# mdadm -D -s /dev/md0 >> /etc/mdadm.conf //把配置信息保存為文件 [root@cnode6_8 ~]# mkdir /mnt/md0 //創建掛載點 [root@cnode6_8 ~]# mount /dev/md0 /mnt/md0 //掛載md0設備 [root@cnode6_8 ~]# df -h |grep md0 /dev/md0 211M 6.1M 194M 4% /mnt/md0 [root@cnode6_8 ~]# mdadm -G /dev/md0 -n4 -a /dev/sdb2 //添加一個raid設備 mdadm: added /dev/sdb2 mdadm: Need to backup 3072K of critical section.. [root@cnode6_8 ~]# mdadm -D /dev/md0 /dev/md0: …… Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 5 8 18 3 active sync /dev/sdb2 3 8 65 - spare /dev/sde1 [root@cnode6_8 ~]# mdadm /dev/md0 -f /dev/sdb2 mdadm: set /dev/sdb2 faulty in /dev/md0 [root@cnode6_8 ~]# mdadm -D /dev/md0 /dev/md0: …… Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 3 8 65 3 active sync /dev/sde1 5 8 18 - faulty /dev/sdb2 [root@cnode6_8 ~]# mdadm -S /dev/md0 //停止md 設備 mdadm: stopped /dev/md0 [root@cnode6_8 ~]# mdadm --zero-superblock /dev/sd{b1,b2,c1,d1,e1} //清除磁盤上面的超級塊信息 [root@cnode6_8 ~]# rm -f /etc/mdadm.conf //刪除生成的配置文件,如果是永久掛載的設備要將fstab配置文件中的掛載信息也清空
原創文章,作者:jack_cui,如若轉載,請注明出處:http://www.www58058.com/43882