磁盤陣列(Redundant Array of independent Disks, RAID)是由美國加州大學柏克萊分校于1987年提出的,其概念是將多個硬盤組成一個邏輯虛擬的硬盤。操作上和操作單一的一塊硬盤沒有差別。不過實際上,數據是存儲在不同硬盤上的。
磁盤陣列的好處
整合多個硬盤:能將多個小的硬盤整合為一個大的硬盤。
數據具有較高的安全性:磁盤陣列具有修改錯誤的能力。他將校驗碼(parity)放在不同的硬盤上,當數據發生問題,即會用到校驗碼來恢復原始數據。
提高存取效率:當數據寫入的時候,會切割成多個小塊,同時寫在不同的硬盤中,這樣讀數據的時候,能從不同的物理硬盤中讀取,加快了磁盤的I/O速度。
磁盤陣列的分類
Linux磁盤陣列根據文件的存儲位置分為七種。
Linear:數據會先放在第一塊硬盤,當此用盤空間使用完是,再依次存儲至第2,3……..個硬盤,當數據或硬盤發生故障,此模式不具有容錯的能力。
RAID-0:當寫入數據時,會將數據切割為非常多小塊,并將這些塊的數據分別存儲到每一塊硬盤上。和Linear方式不同,RAID會把數據平均分配到不同的硬盤。因此不具有容錯能力。
RAID-1:此模式會把數據在每一個硬盤上存儲一份,每一個硬盤的數據都一摸相同。
RAID-2:數據會以bit為單位分割,并分別存儲到各個硬盤中,但存儲時此方式會額外保留若干數量的硬盤。,寫入數據時,磁盤陣列會同步計算存儲到各個硬盤的校驗碼,然后有將此校驗碼放在保留的硬盤上。當有硬盤損壞時,就可利用此校驗碼恢復正確地數據,達到容錯的目的。
RAID-3:一份數據會以字節byte為單位分割,分別存儲到各個硬盤中。此方式會特別保留一個固定的硬盤存儲同位校驗碼。但由于是將同位校驗碼存儲在同一個硬盤中,因此該硬盤應該有較快的傳輸速度。否則會影響系統性能。
RAID-4:一份數據會被切割成固定大小的區塊,并且分別存儲到每一個硬盤中。此方式和RAID-3比較,除了分割方式不同以外,其他相同,也具有容錯功能。
RAID-5:一份數據會被分割成固定大小的區塊,并分別存儲到每個硬盤中。雖然此方式和RAID-4相同以區塊為單位分割數據,不同的是,RAID-5并不特別保留固定的一個硬盤來存儲校驗碼,而是將校驗碼分散存儲在所有硬盤中。因此,此方式不會因為存儲校驗碼在一塊硬盤上,而影響系統的性能。
4 Linux支持的磁盤陣列
? ? 目前Linux支持Linear、 RAID-0、RAID-1、RAID-4、RAID-5五種磁盤陣列模式。在五種模式中,RAID-4和RAID-5運行方式相近。接下來將周詳介紹Linear、RAID-1、RAID-5磁盤陣列創建過程。
1、 創建linear磁盤陣列
硬件需求:兩塊或以上的硬盤。
創建linear磁盤陣列:
設置文件為/etc/raidtab
文件格式如下:
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? Linear? ?? ???指定采用的是Linear模式
nr-raid-disks? ???2? ?? ?? ???此磁盤陣列由2個硬盤所組成
chunk-size? ?? ???32? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
device? ?? ?? ?? ?/dev/sda2??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置上述的分區是此磁盤陣列所使用的第二塊
硬盤。
創建好設置文件后,執行下面命令,初始化剛剛創建的/dev/md0磁盤陣列。
#mkraid /dev/mdo
#mke2fs ?j /dev/md0 格式化磁盤陣列
#mount ?t ext3 /dev/md0??mnt/md0將md0裝載到/mnt/md0下。
? ? 檢查磁盤陣列狀態記錄文件,停止和啟動磁盤陣列。
? ? 停止磁盤陣列:首先卸下裝載的磁盤陣列
? ?? ?? ?? ?? ?? ?#umount??/dev/md0
? ?? ?? ?? ?? ?? ?#raidstop??/dev/md0
? ? 啟動磁盤陣列:
? ?? ?? ?? ?? ?? ?#raidstart??/dev/md0
? ? 查看磁盤陣列使用狀態:
? ?? ?? ?? ?? ?? ?#more /proc/mdstat
? ? personalities:[linear]
? ? read_head 1024 sectors
? ? md0:active linear sda2(1) sdb(0)
? ? 20483524??blocks 32k??rounding
? ? unused devices:
? ? 上述狀態是磁盤陣列處于運行狀態時的相關信息。當磁盤陣列沒有處于啟動狀態的時候,顯示的狀態如下:
? ? personalities:[linear]
? ? read_ahead 1024 sectors
unused devices:
??刪除磁盤陣列:首先停止磁盤陣列,然后刪除/etc/raidtab文件即可。
2、 創建RAID-1磁盤陣列
RAID-1磁盤陣列存儲方式,是將同一份數據同時寫到每個硬盤中,那一個硬盤所存儲的數據是一模相同的。
硬件需求:要創建RAID-1磁盤陣列,至少需要2塊硬盤,每一塊硬盤最佳大小一致。這是因為每一個硬盤存儲相同的數據,因此有一個硬盤比其他的容量大時,磁盤著烈也無法使用多出來的硬盤空間。
創建磁盤陣列:本例采用2個硬盤的分區 sda1和sdb1創建磁盤陣列。以下是/etc/raidtab內容。
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? 1? ?? ?? ?? ?指定采用的是RAID-1模式
nr-raid-disks? ???2? ?? ?? ???此磁盤陣列由2個硬盤所組成
nr-spare-disks? ? 0? ?? ?? ???磁盤陣列備用磁盤數目
chunk-size? ?? ???4? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
device? ?? ?? ?? ?/dev/sda1??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置
創建好設置文件后,創建文件系統、啟動、查看運行狀態等方法和Linear相同。
3、 創建RAID-5磁盤陣列
在此介紹RAID-5,是在RAID-0和RAID-1中取一個平衡點,同時具有容錯能力,也不會浪費太多硬盤空間,并有助于提高磁盤的I/O性能。
硬件需求:
由于RAID-5需要存儲同位校驗碼,因此要創建此模式的磁盤陣列,至少需要3塊或以上的硬盤。
創建磁盤陣列:本例以sda1、sdb1、sdc1,3個分區組成RAID-5磁盤,下面是設置文件/etc/raidtab。
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? 5? ?? ???指定采用的是Linear模式
nr-raid-disks? ???3? ?? ?? ? 此磁盤陣列由2個硬盤所組成
nr-spare-disks? ? 0? ?? ?? ? 磁盤陣列備用磁盤數目
chunk-size? ?? ???32? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
Parity-algorithm? ?left-symmetric 指定用哪一種算法計算同位校驗碼,可是用的算法有:left-symmetric,left-asymmetric,right-symmetric,right-asymmetric4種。一般采用left-symmetric有最佳的存儲效率。
device? ?? ?? ?? ?/dev/sda1??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第三塊硬盤分區的名稱。
raid-disk? ?? ?? ? 2? ?? ?? ? 設置
修改完畢設置文件后依次執行創建磁盤陣列、啟動、停止、查看狀態等操作。
在本章,我們只介紹RAID-Linear、RAID-1、RAID-5、最常用的磁盤陣列設置方法。
至于其他種類的磁盤陣列設置方法,和上面講述的設置方法類似,請讀者自行設置。
最后,我們比較一下上面三種磁盤陣列。
磁盤陣列比較:
磁盤空間:Linear模式最節省磁盤空間,磁盤陣列總空間是所有硬盤的和。
? ?? ?? ? RAID-1(磁盤映像)最浪費磁盤,因為每個硬盤存儲的數據都相同。
? ?? ?? ? RAID-5將利用一個磁盤來存儲同位校驗碼。因此磁盤容量為n-1個
? ?? ?? ? 磁盤的容量。
讀寫性能:Linear模式中,由于數據是依次存到硬盤上,此方式和一塊硬盤運行
? ?? ?? ? 并沒有什么不同。此模式也不會提高讀寫效率。如果有多個人把數據
? ?? ?? ? 放在不同的硬盤上,并且同時訪問,那么就能提高磁盤讀寫效率。
? ?? ?? ? RAID-1由于每個硬盤都存儲相同的數據,需要耗費較多的CPU時間。
? ?? ?? ? 就會影響寫入的數度。讀數據,由于能從不同硬盤讀出數據,因此理論上會有較快的數度。在RAID-5模式中,由于讀寫數據時,是將數據分成區塊,在以區塊為單? ?? ?? ? 位同步存儲到硬盤中,明顯能提高存取速度。理論速率為n-1不過實際不會達到那么高的傳輸效率。
容錯能力:Linear磁盤陣列沒有所有容錯能力,如果其中一塊硬盤出現故障,那么整個磁盤陣列的數據都會丟失。RAID-1有非常好的容錯能力,因為每一塊硬盤的數據都是相同的,所以當一塊硬盤發生故障。系統仍然能繼續工作。RAID-5磁盤陣列,當其中一塊硬盤發生故障,此時能借助其他硬盤計算出正確地數據,只要不是2塊或2塊以上的硬盤同時發生故障,這是同位校驗碼也不足以恢復數據了,意味著數據無法挽救了。
磁盤陣列的好處
整合多個硬盤:能將多個小的硬盤整合為一個大的硬盤。
數據具有較高的安全性:磁盤陣列具有修改錯誤的能力。他將校驗碼(parity)放在不同的硬盤上,當數據發生問題,即會用到校驗碼來恢復原始數據。
提高存取效率:當數據寫入的時候,會切割成多個小塊,同時寫在不同的硬盤中,這樣讀數據的時候,能從不同的物理硬盤中讀取,加快了磁盤的I/O速度。
磁盤陣列的分類
Linux磁盤陣列根據文件的存儲位置分為七種。
Linear:數據會先放在第一塊硬盤,當此用盤空間使用完是,再依次存儲至第2,3……..個硬盤,當數據或硬盤發生故障,此模式不具有容錯的能力。
RAID-0:當寫入數據時,會將數據切割為非常多小塊,并將這些塊的數據分別存儲到每一塊硬盤上。和Linear方式不同,RAID會把數據平均分配到不同的硬盤。因此不具有容錯能力。
RAID-1:此模式會把數據在每一個硬盤上存儲一份,每一個硬盤的數據都一摸相同。
RAID-2:數據會以bit為單位分割,并分別存儲到各個硬盤中,但存儲時此方式會額外保留若干數量的硬盤。,寫入數據時,磁盤陣列會同步計算存儲到各個硬盤的校驗碼,然后有將此校驗碼放在保留的硬盤上。當有硬盤損壞時,就可利用此校驗碼恢復正確地數據,達到容錯的目的。
RAID-3:一份數據會以字節byte為單位分割,分別存儲到各個硬盤中。此方式會特別保留一個固定的硬盤存儲同位校驗碼。但由于是將同位校驗碼存儲在同一個硬盤中,因此該硬盤應該有較快的傳輸速度。否則會影響系統性能。
RAID-4:一份數據會被切割成固定大小的區塊,并且分別存儲到每一個硬盤中。此方式和RAID-3比較,除了分割方式不同以外,其他相同,也具有容錯功能。
RAID-5:一份數據會被分割成固定大小的區塊,并分別存儲到每個硬盤中。雖然此方式和RAID-4相同以區塊為單位分割數據,不同的是,RAID-5并不特別保留固定的一個硬盤來存儲校驗碼,而是將校驗碼分散存儲在所有硬盤中。因此,此方式不會因為存儲校驗碼在一塊硬盤上,而影響系統的性能。
4 Linux支持的磁盤陣列
? ? 目前Linux支持Linear、 RAID-0、RAID-1、RAID-4、RAID-5五種磁盤陣列模式。在五種模式中,RAID-4和RAID-5運行方式相近。接下來將周詳介紹Linear、RAID-1、RAID-5磁盤陣列創建過程。
1、 創建linear磁盤陣列
硬件需求:兩塊或以上的硬盤。
創建linear磁盤陣列:
設置文件為/etc/raidtab
文件格式如下:
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? Linear? ?? ???指定采用的是Linear模式
nr-raid-disks? ???2? ?? ?? ???此磁盤陣列由2個硬盤所組成
chunk-size? ?? ???32? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
device? ?? ?? ?? ?/dev/sda2??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置上述的分區是此磁盤陣列所使用的第二塊
硬盤。
創建好設置文件后,執行下面命令,初始化剛剛創建的/dev/md0磁盤陣列。
#mkraid /dev/mdo
#mke2fs ?j /dev/md0 格式化磁盤陣列
#mount ?t ext3 /dev/md0??mnt/md0將md0裝載到/mnt/md0下。
? ? 檢查磁盤陣列狀態記錄文件,停止和啟動磁盤陣列。
? ? 停止磁盤陣列:首先卸下裝載的磁盤陣列
? ?? ?? ?? ?? ?? ?#umount??/dev/md0
? ?? ?? ?? ?? ?? ?#raidstop??/dev/md0
? ? 啟動磁盤陣列:
? ?? ?? ?? ?? ?? ?#raidstart??/dev/md0
? ? 查看磁盤陣列使用狀態:
? ?? ?? ?? ?? ?? ?#more /proc/mdstat
? ? personalities:[linear]
? ? read_head 1024 sectors
? ? md0:active linear sda2(1) sdb(0)
? ? 20483524??blocks 32k??rounding
? ? unused devices:
? ? 上述狀態是磁盤陣列處于運行狀態時的相關信息。當磁盤陣列沒有處于啟動狀態的時候,顯示的狀態如下:
? ? personalities:[linear]
? ? read_ahead 1024 sectors
unused devices:
??刪除磁盤陣列:首先停止磁盤陣列,然后刪除/etc/raidtab文件即可。
2、 創建RAID-1磁盤陣列
RAID-1磁盤陣列存儲方式,是將同一份數據同時寫到每個硬盤中,那一個硬盤所存儲的數據是一模相同的。
硬件需求:要創建RAID-1磁盤陣列,至少需要2塊硬盤,每一塊硬盤最佳大小一致。這是因為每一個硬盤存儲相同的數據,因此有一個硬盤比其他的容量大時,磁盤著烈也無法使用多出來的硬盤空間。
創建磁盤陣列:本例采用2個硬盤的分區 sda1和sdb1創建磁盤陣列。以下是/etc/raidtab內容。
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? 1? ?? ?? ?? ?指定采用的是RAID-1模式
nr-raid-disks? ???2? ?? ?? ???此磁盤陣列由2個硬盤所組成
nr-spare-disks? ? 0? ?? ?? ???磁盤陣列備用磁盤數目
chunk-size? ?? ???4? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
device? ?? ?? ?? ?/dev/sda1??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置
創建好設置文件后,創建文件系統、啟動、查看運行狀態等方法和Linear相同。
3、 創建RAID-5磁盤陣列
在此介紹RAID-5,是在RAID-0和RAID-1中取一個平衡點,同時具有容錯能力,也不會浪費太多硬盤空間,并有助于提高磁盤的I/O性能。
硬件需求:
由于RAID-5需要存儲同位校驗碼,因此要創建此模式的磁盤陣列,至少需要3塊或以上的硬盤。
創建磁盤陣列:本例以sda1、sdb1、sdc1,3個分區組成RAID-5磁盤,下面是設置文件/etc/raidtab。
raiddev /dev/md0? ?? ?? ?? ???指定磁盤陣列的設備名稱
raid-level? ?? ? 5? ?? ???指定采用的是Linear模式
nr-raid-disks? ???3? ?? ?? ? 此磁盤陣列由2個硬盤所組成
nr-spare-disks? ? 0? ?? ?? ? 磁盤陣列備用磁盤數目
chunk-size? ?? ???32? ?? ?? ?當數據寫入磁盤陣列時,每個寫入區塊的大小
(單位為KB,且必須為2的次方)。由于在Linear
模式中,寫入數據并不分塊,而是循序寫入到同
一磁盤中。
persistent-superblock??1? ?? ???設置是否要寫入磁盤的superblock,設置成“1”
表示寫入,設置“0”不寫入。
Parity-algorithm? ?left-symmetric 指定用哪一種算法計算同位校驗碼,可是用的算法有:left-symmetric,left-asymmetric,right-symmetric,right-asymmetric4種。一般采用left-symmetric有最佳的存儲效率。
device? ?? ?? ?? ?/dev/sda1??按實際的情況,指定第一個硬盤分區的名稱
raid-disk? ?? ?? ? 0? ?? ?? ?設置上述的分區是次磁盤陣列所使用的第一個
硬盤。編號“0”開始。
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第二塊硬盤分區的名稱。
raid-disk? ?? ?? ?1? ?? ?? ? 設置
device? ?? ?? ?? ?/dev/sdb1??按實際情況,指定第三塊硬盤分區的名稱。
raid-disk? ?? ?? ? 2? ?? ?? ? 設置
修改完畢設置文件后依次執行創建磁盤陣列、啟動、停止、查看狀態等操作。
在本章,我們只介紹RAID-Linear、RAID-1、RAID-5、最常用的磁盤陣列設置方法。
至于其他種類的磁盤陣列設置方法,和上面講述的設置方法類似,請讀者自行設置。
最后,我們比較一下上面三種磁盤陣列。
磁盤陣列比較:
磁盤空間:Linear模式最節省磁盤空間,磁盤陣列總空間是所有硬盤的和。
? ?? ?? ? RAID-1(磁盤映像)最浪費磁盤,因為每個硬盤存儲的數據都相同。
? ?? ?? ? RAID-5將利用一個磁盤來存儲同位校驗碼。因此磁盤容量為n-1個
? ?? ?? ? 磁盤的容量。
讀寫性能:Linear模式中,由于數據是依次存到硬盤上,此方式和一塊硬盤運行
? ?? ?? ? 并沒有什么不同。此模式也不會提高讀寫效率。如果有多個人把數據
? ?? ?? ? 放在不同的硬盤上,并且同時訪問,那么就能提高磁盤讀寫效率。
? ?? ?? ? RAID-1由于每個硬盤都存儲相同的數據,需要耗費較多的CPU時間。
? ?? ?? ? 就會影響寫入的數度。讀數據,由于能從不同硬盤讀出數據,因此理論上會有較快的數度。在RAID-5模式中,由于讀寫數據時,是將數據分成區塊,在以區塊為單? ?? ?? ? 位同步存儲到硬盤中,明顯能提高存取速度。理論速率為n-1不過實際不會達到那么高的傳輸效率。
容錯能力:Linear磁盤陣列沒有所有容錯能力,如果其中一塊硬盤出現故障,那么整個磁盤陣列的數據都會丟失。RAID-1有非常好的容錯能力,因為每一塊硬盤的數據都是相同的,所以當一塊硬盤發生故障。系統仍然能繼續工作。RAID-5磁盤陣列,當其中一塊硬盤發生故障,此時能借助其他硬盤計算出正確地數據,只要不是2塊或2塊以上的硬盤同時發生故障,這是同位校驗碼也不足以恢復數據了,意味著數據無法挽救了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
