磁碟RAID

Michael_DD發表於2015-09-24
磁碟RAID


注:各RAID級別最少需要的硬碟數量,
RAID0=1  RAID1=2  RAID5=3  RAID10=4  RAID50=6

RAID 0
也稱為條帶模式(striped),即把連續的資料分散到多個磁碟上存取,如圖1所示。當系統有資料請求就可以被多個磁碟並行的執行,
每個磁碟執行屬於它自己的那部分資料請求。這種資料上的並行操作可以充分利用匯流排的頻寬,顯著提高磁碟整體存取效能。因為讀
取和寫入是在裝置上並行完成的,讀取和寫入效能將會增加,這通常是執行 RAID 0 的主要原因。但RAID 0沒有資料冗餘,如果驅動
器出現故障,那麼將無法恢復任何資料。

RAID 1
RAID 1又稱為映象(Mirroring),一個具有全冗餘的模式,如圖2所示。RAID 1可以用於兩個或2xN個磁碟,並使用0塊或更多的備用
磁碟,每次寫資料時會同時寫入映象盤。這種陣列可靠性很高,但其有效容量減小到總容量的一半,同時這些磁碟的大小應該相等,
否則總容量只具有最小磁碟的大小。

RAID 4
建立RAID 4需要三塊或更多的磁碟,它在一個驅動器上儲存校驗資訊,並以RAID 0方式將資料寫入其它磁碟,所示因為一塊磁碟是為
校驗資訊保留的,所以陣列的大小是(N-l)*S,其中S是陣列中最小驅動器的大小。就像在 RAID 1中那樣,磁碟的大小應該相等。
如果一個驅動器出現故障,那麼可以使用校驗資訊來重建所有資料。如果兩個驅動器出現故障,那麼所有資料都將丟失。不經常使用
這個級別的原因是校驗資訊儲存在一個驅動器上。每次寫入其它磁碟時,都必須更新這些資訊。因此,在大量寫入資料時很容易造成
校驗磁碟的瓶頸,所以目前這個級別的RAID很少使用了。

RAID 5
在希望結合大量物理磁碟並且仍然保留一些冗餘時,RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三塊或更多的磁碟上,並使
用0塊或更多的備用磁碟。就像 RAID 4一樣,得到的 RAID5 裝置的大小是(N-1)*S。
RAID5 與 RAID4 之間最大的區別就是校驗資訊均勻分佈在各個驅動器上,如圖4所示,這樣就避免了RAID 4中出現的瓶頸問題。如果其
中一塊磁碟出現故障,那麼由於有校驗資訊,所以所有資料仍然可以保持不變。如果可以使用備用磁碟,那麼在裝置出現故障之後,將
立即開始同步資料。如果兩塊磁碟同時出現故障,那麼所有資料都會丟失。RAID5 可以經受一塊磁碟故障,但不能經受兩塊或多塊磁碟
故障。

RAID 6
RAID 6是在RAID 5基礎上擴充套件而來的。與RAID 5一樣,資料和校驗碼都是被分成資料塊然後分別儲存到磁碟陣列的各個硬碟上。只是RAID6
中增加一塊校驗磁碟,用於備份分佈在各個磁碟上的校驗碼,如圖5所示,這樣RAID 6磁碟陣列就允許兩個磁碟同時出現故障,所以RAID 6
的磁碟陣列最少需要四塊硬碟。


linux實現軟RAID5:

1、準備硬碟(至少需要3塊硬碟,此處使用一塊硬碟的5個分割槽實現,但是在實際生產中一塊硬碟做RAID沒有意義):
[root@localhost ~]# fdisk -cul /dev/sdb #建立分割槽如下
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x466fc1b6
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 41943039 15727616 5 Extended
/dev/sdb5 10489856 16781311 3145728 83 Linux
/dev/sdb6 16783360 23074815 3145728 83 Linux
/dev/sdb7 23076864 29368319 3145728 83 Linux
/dev/sdb8 29370368 35661823 3145728 83 Linux
/dev/sdb9 35663872 41943039 3139584 83 Linux
[root@localhost ~]# partx -a /dev/sdb #重新讀取分割槽表
[root@localhost ~]# rpm -qa |grep mdadm #檢視建立raid軟體是否安裝
mdadm-3.2.3-9.el6.i686

2、建立RAID5:
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/sdb{5..9} ####-C:建立/dev/md0裝置,-a:是否自動檢測這裡為yes,-l:raid的級別這裡為raid5,-n:幾塊硬碟做為RUN,-x:幾塊硬碟作為備用
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm --detail /dev/md0 #檢視/dev/md0的詳細資訊
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 14 19:36:37 2013
Raid Level : raid5
Array Size : 9414144 (8.98 GiB 9.64 GB)
Used Dev Size : 3138048 (2.99 GiB 3.21 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Mon Jan 14 19:37:27 2013
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f16324c8:0f2a0be2:04c57c07:5f44f53e
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
4 8 25 - spare /dev/sdb9

3、格式化、掛載、使用/dev/md0:
[root@localhost ~]# mkfs.ext4 /dev/md0 #將/dev/md0格式化
[root@localhost ~]# mkdir /raid5 ##建立掛載目錄
[root@localhost ~]# mount /dev/md0 /raid5/ #掛載/dev/md0到/raid5目錄下
[root@localhost ~]# cd /raid5/
[root@localhost raid5]# touch raid5.file
[root@localhost raid5]# ls
lost+found raid5.file

4、設定開機啟動RAID5:
[root@localhost ~]# mdadm --detail --scan #檢視raid簡要資訊
ARRAY /dev/md0 metadata=1.2 spares=1 name=localhost.localdomain:0 UUID=f16324c8:0f2a0be2:04c57c07:5f44f53e
[root@localhost ~]# mdadm --detail --scan >/etc/mdadm.conf #建立軟raid的配置檔案!注意:此檔案如果不建立下次開機重啟後/dev/md0將會被系統自動識別為其他非/dev/md0名稱的裝置,對於實現開機掛載和使用都不方便。
[root@localhost ~]# vim /etc/fstab #編輯fstab檔案新增如下行
/dev/md0 /raid5 ext4 defaults 0 0

4、管理RAID5:
檢視raid的狀態:
[root@localhost ~]# cat /proc/mdstat #檢視raid的狀態
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb8[5] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
9414144 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
檢視特定raid裝置的詳細資訊:
[root@localhost ~]# mdadm --detail /dev/md0
……………………………………………省略………………………………………………..
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
4 8 25 - spare /dev/sdb9
模擬硬碟損壞:
[root@localhost ~]# mdadm /dev/md0 --fail /dev/sdb5 #模擬硬碟損壞
[root@localhost ~]# mdadm –detail #驗證
……………………………………………省略………………………………………………..
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f16324c8:0f2a0be2:04c57c07:5f44f53e
Events : 25
Number Major Minor RaidDevice State
4 8 25 0 spare rebuilding /dev/sdb9
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
0 8 21 - faulty spare /dev/sdb5
####/dev/sdb5的狀態變成了faulty,/dev/sdb9則立即變成active
模擬拔出硬碟:
[root@localhost ~]# mdadm /dev/md0 --remove /dev/sdb5 #模擬拔出硬碟
mdadm: hot removed /dev/sdb5 from /dev/md0
[root@localhost ~]# mdadm –detail #驗證
……………………………………………省略………………………………………………..
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f16324c8:0f2a0be2:04c57c07:5f44f53e
Events : 4
Number Major Minor RaidDevice State
4 8 25 0 active sync /dev/sdb9
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
####/dev/sdb5已經從/dev/md0中消失了:


模擬往raid中新增硬碟:
[root@localhost ~]# mdadm --zero-superblock --force /dev/sdb5 #修復硬碟
[root@localhost ~]# mdadm /dev/md0 --add /dev/sdb5#模擬往raid中新增硬碟
mdadm: added /dev/sdb5
[root@localhost ~]# mdadm --detail /dev/md0 #驗證
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 14 19:36:37 2013
Raid Level : raid5
Array Size : 9414144 (8.98 GiB 9.64 GB)
Used Dev Size : 3138048 (2.99 GiB 3.21 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Mon Jan 14 20:17:02 2013
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f16324c8:0f2a0be2:04c57c07:5f44f53e
Events : 41
Number Major Minor RaidDevice State
4 8 25 0 active sync /dev/sdb9
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
6 8 21 - spare /dev/sdb5
####/dev/sdb5已經成功新增到了/dev/md0中並且做為備用裝置等待使用。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1808356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章