RAID(Redundant Arrary of Independent Disks,獨立冗餘磁盤陣列)是一個能實現將多塊硬盤組合成一個陣列,當做一個邏輯設備來使用的機制。同時RAID還可以簡歷數據鏡像,將一份數據存儲在兩份硬盤上,每一份硬盤上都有一分相同的文件。這樣我們的數據就更具安全性了。你可能要說我們爲什麼要用這種磁盤陣列呢?這種陣列用兩份的硬盤才能存儲一份數據,這不是浪費了一份硬盤嗎?但是我們要明白,相對於公司和企業來說,數據是最重要的,只要數據沒有問題,硬盤損壞後我們還可以重新把數據恢復就好了。而RAID正是保證硬盤損壞後保證數據完整性的一個磁盤陣列。
我們知道,硬盤的讀寫速度再快也不能超過它的理論讀寫速度,而現在網絡上動輒數萬人同時訪問一個文件,硬盤的轉速根本就不能提供這麼多人同事訪問同一個文件。RAID可以將多個磁盤鏈接起來當做一個磁盤來用,在主機上就只識別爲一個磁盤,這樣就大大提高的磁盤的I/O讀寫速度。其結構如圖
RAID可以分爲硬RAID和軟RAID。顧名思義,硬RAID就是在硬件的技術上實現RAID功能的,但是linux中我們可以用軟件實現RAID的功能。
我們在此主要來說一說linux上的軟RAID的實現
RAID:獨立磁盤冗餘陣列
組合方式:
SATA
SAS
邏輯RIAD:
/dev/md#:後面的數字 例如: /dev/md0 /dev/md1
md:(multi disks)多磁盤或多設備 lsmod列出模塊
mdadm:將任何塊設備做成RAID【用戶空間工具,管理工具】
創建軟RAID
模式化的命令:
1、創建模式
-C
專用選項:
-l:級別
-n:設備個數
-a{yes|no}:自動爲其創建設備文件.回答yes
-c:數據塊大小,(2^n),默認爲64k
-x #:指定空閒盤個數
①例如:創建一個2G的RIAD0,我們可以用4個512MB的分區,也可以用2個1G的分區【注意:兩塊盤大小要一樣】。
mdadm –C /dev/md0 –a yes –l 0 –n 2 /dev/sda{5,6}
創建設備/dev下的md0,自動創建設備文件的,然後設置級別爲0,一共兩個設備,設備是/dev下的sda5和sda6。
用cat /proc/mdstat可以查看查看當前系統上所有處於啓用狀態RAID設備。
②例如:創建一個2G的RIAD1,也可以用2個2G的分區【注意:兩塊盤大小要一樣】
mdadm –C /dev/md1 –a yes –l 1 –n 2 /dev/sda{7,8}
創建設備/dev下的md1,自動創建設備文件,然後設置級別爲1,一共兩個設備,設備是/dev下的sda7和sda8。用cat /proc/mdstat查看可以看出raid1和raid0其它信息還是差不多相同的,但是多了一段信息,那個信息表示鏡像磁盤要將每一個信息位都要對應起來,修改了任何一個磁盤的內容,另一個磁盤的同意位置內容也會修改。這兩個磁盤要鏡像成一模一樣,所以它們要同步進行,同步完成後,這個磁盤就爲可用狀態了。
2、管理模式
--add,--remove,--fail|-f
模擬損壞 mdadm /dev/md# --fail /dev/sda8
表示把/dev/md#陣列中的/dev/sda8模擬給損壞。
移除 mdadm /dev/md# –r /dev/sda8 移除整列中損壞的/dev/sda8
替換 mdadm /dev/md1 –a /dev/sda9 將sda9替換上
3、監控模式
-F :監控模式
-D| --detail:查看RAID陣列的詳細信息
4、增長模式
-G
5、裝配模式
-A
停止陣列:
mdadm -S /dev/md1
--stop
watch:週期性的執行指定命令,並以全屏方式顯示結果
-n #:指定週期長度,單位爲秒,默認爲2
格式:watch -n # 'COMMAND(命令)'
Mdadm –D –scan :
顯示當前主機上每一個RAID設備了,以及每個RAID關聯到設備本身,這個設備的UUID號。【我們可以把這個將當前RAID信息保存在/etc/mdadm.conf下以後再重新裝設備的時候就不用在指設備了自動讀取這個配置文件並裝配的】 mdadm -D --scan > /etc/mdadm.conf
RAID的級別:
其實RAID也是有級別之分的,不同的級別表示RAID中磁盤的分佈和方式不同,有着不同的效果。
RAID的數據組織方式分爲三種:條帶技術、鏡像技術、校驗碼技術。
條帶技術:能夠提升讀和寫的能力,卻不能夠提供冗餘支持。
鏡像技術:能夠提升讀性能力,但寫性能力會下降,提供冗餘能力,不過磁盤的利用率只有50%至少需要兩塊磁盤
校驗碼技術:能夠提升讀寫的能力和冗餘備份的能力,空間利用率只有(n-1)/n
組成RAID陣列的不同方式被稱之爲RAID級別,不同的RAID級別具有不同的存儲性能、不同的數據可靠性和不同的存儲成本,不過級別只是代表磁盤的組織方式不同,並不存在上下之分。
RAID |
性能表現 |
冗餘能力 |
空間利用率 |
磁盤需求量 |
0 |
讀,寫能力提升 |
無 |
100% |
至少2塊 |
1 |
寫性能略有下降,但讀性能提升 |
有 |
1/2 |
至少2塊 |
5 |
讀,寫能力提升 |
有 |
(n-1)/n |
至少3塊 |
10 |
讀,寫能力提升 |
有 |
1/2 |
至少4塊 |
01 |
讀,寫能力提升 |
有 |
1/2 |
至少4塊 |
50 |
讀,寫能力提升 |
有 |
(n-2)/n |
至少6塊 |
jbod |
無提升 |
無 |
100% |
至少2塊 |