首頁 > 軟體

Linux基礎知識:獨立磁碟冗餘陣列RAID分級及實現方式

2020-06-16 16:52:55

計算機和網路技術的高速發展對儲存效能和資料可靠性的要求不斷提高。在企業環境中,當公司伺服器同時有3000+的使用者同時存取時,並且使用者同時進行不同的檔案讀寫的操作時,單個硬碟的讀寫效能有限,容易出現效能瓶頸。常見的併行介面硬碟中如早期的IDE硬碟最高只到達133Mbps,SCSI小型計算機系統介面硬碟的最高傳輸速率是320Mbps,目前主流的序列介面硬碟SATA介面硬碟中SATA1傳輸速率是300Mbps,SATA2傳輸速率是600Mbps,目前SATA3介面最高可以到達6Gbps。為了解決效能問題,早期使用SLED技術即Single Large Expensive Disk,但是由於價格昂貴,在企業中無法大面積應用。1987年美國加州大學伯克利分校Patterson,Gibson和Katz發表了一篇論文《A Case for Redundant Arrays of Inexpensive Disks(RAID)》,自此廉價磁碟冗餘陣列的概念產生,但是在企業的實際應用中發現這種技術還是需要花費大量金錢支援,所以更名為Redundant Arrays of Independent Disks即獨立磁碟冗餘陣列。

【1】RAID的優勢:
RAID在容量和管理上的優勢
易於靈活的進行容量擴充套件
“虛擬化”使可管理性極大地增強
RAID在效能上的優勢
“磁碟分塊”技術帶來效能的提高
RAID在可靠性和可用性上的優勢
通過冗餘技術和熱備、熱換提升了可靠性
【2】映象冗餘的概念:
映象冗餘使用了磁碟映象技術;
磁碟映象是一個簡單的裝置虛擬化技術,每個I/O操作都會在兩個磁碟上執行,兩個磁碟看起來就像一個磁碟一樣;
映象冗餘可以提高磁碟的讀效能。
【3】校驗冗餘的概念:
根據冗餘演算法計算陣列中成員磁碟上資料的校驗資訊,將校驗資訊儲存在其他磁碟資源上;
保證資料可靠性;
和映象冗餘相比較,校驗冗餘的開銷更小。
【4】RAID級別:
不同的RAID級別代表不同的儲存效能,不同的資料可靠性,不同的儲存成本
RAID0的工作原理:
RAID0是以條帶的形式將資料均勻的分布在陣列的各個磁碟上,資料儲存單位是CHUNK(條帶),預設大小是64K。
效能表現:讀寫效能均提升
冗餘能力:無
空間利用率:100%
至少2塊磁碟

RAID1的工作原理:
RAID1以映象為冗餘方式,對虛擬磁碟上的資料做多份的拷貝,放在成員磁碟上。
效能表現:寫效能下降,讀效能提升
冗餘能力:有
空間利用率:50%
至少2塊磁碟

RAID5的工作原理:
RAID5採用獨立存取的陣列方式,校驗資訊被均勻的分散在磁碟的各個磁碟上。
效能表現:讀寫效能均提升
冗餘能力:有
空間利用率:(n-1)/n
至少3塊磁碟

RAID10的工作原理:
RAID10採用先映象,後條帶化的方式組織陣列。
效能表現:讀寫效能均提升
冗餘能力:有
空間利用率:50%
至少4塊盤

除此之外常用的還有RAID50,JBod兩種陣列,不常用的有RAID2、RAID3、RAID4等。
【5】RAID設定命令:
在企業中一般使用硬體RAID儲存資料,不過Linux系統本身也提供RAID能力,這裡我們以軟體RAID的實現方式做相關演示
建立一個2G的RAID0裝置範例:
#fdisk /dev/sda
解釋:建立磁碟分割區
n(新建分割區)
+1G
n
+1G
t(調整分割區型別)
5
fd(設定分割區型別為RAID型別)
t
6
fd
w(儲存退出)
#partprobe /dev/sda
解釋:同步分割區資料
#cat /proc/partitions
解釋:檢視分割區是否同步成功
#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
解釋:-C表示進入建立模式,-a表示是否為其自動建立裝置檔案,-n表示裝置個數,-l表示設定的RAID的級別
#cat /proc/mdstat
解釋:檢視當前系統所有啟用的裝置
#mke2fs -j /dev/md0
解釋:高階格式化,將md0建立為ext3型別的檔案系統
#mount /dev/md0 /mnt
解釋:將RAID0掛載到/mnt的目錄中,就可以開始使用這個裝置了
#cd /mnt
解釋:進入到/mnt的目錄下,如果有看到lost+found檔案,說明掛載成功
建立一個2G的RAID1裝置範例:
#fdisk /dev/sda
解釋:開始建立磁碟分割區
n(新建)
+2G
n
+2G
n
+2G
t(調整型別)
7
fd(調整為RAID型別)
t
8
fd
t
9
fd
w(儲存退出)
#partprobe /dev/sda
解釋:同步磁碟分割區資訊
#cat /proc/partitions
#mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
解釋:建立一個型別為RAID1,自動建立裝置檔案,並且裝置的個數為2個的RAID1型別分割區md1
#cat /proc/mastat
解釋:顯示當前系統所有啟用的裝置
#mke2fs -j /dev/md1
解釋:高階格式化,將md1的檔案系統型別設定為ext3
#mount /dev/md1 /media
解釋:將md1的裝置檔案掛載到/media的目錄下
模擬RAID1裝置磁碟損壞範例:
#cp /etc/inittab /media/
解釋:複製/etc下的一個檔案到/media目錄下
#mdadm -D /dev/md1
解釋:檢視RAID陣列的詳細資訊
#mdadm /dev/md1 -f /dev/sda8
解釋:-f模擬磁碟損壞,將md1陣列中的sda8損壞
#mdadm /dev/md1 -r /dev/sda8
解釋:將陣列md1中的磁碟-r刪除
#mdadm /dev/md1 -a /dev/sda9
解釋:新增新的硬碟sda9,可以看到sda9裡資訊會在一段時間後同步為sda7的資料
#mdadm /dev/md1 -f /dev/sda7
解釋:將sda7磁碟模擬損壞
#umount /media
解釋:解除安裝/media檔案目錄
#mdadm -S /dev/md1
解釋:停止md1陣列
#rm /dev/mad1
解釋:刪除md1陣列後就徹底消失了
#mdadm -A /dev/md1 /dev/sda7 /dev/sda9
解釋:重新裝配sda7和sda9磁碟,組成md1陣列,但是由於sda7是壞的,所以md1中只有一個sda9磁碟
模擬RAID1裝置熱備、熱換範例:
此時md1中只有一個磁碟sda9
#mdadm /dev/md1 -a /dev/sda8
#mdadm /dev/md1 -a /dev/sda7
解釋:sda7進入陣列後顯示的是空閒磁碟的狀態
#mdadm /dev/md1 -f /dev/sda9
解釋:模擬損壞磁碟sda9,之後sda7磁碟會自動頂上sda9的位置
#watch 'cat /proc/mdstat'
解釋:週期性的執行指定命令,並以全螢幕方式顯示結果
自動裝配檔案,無需指定磁碟:
#mdadm -D --scan > /etc/mdadm.conf
解釋:將當前RAID資訊儲存至組態檔,以便以後進行裝配
#mdadm -A /dev/md1
解釋:無需再指定具體磁碟如sda7、sda9等

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-04/151918.htm


IT145.com E-mail:sddin#qq.com