linux--RAID(軟)
RAID是一種存儲機制,英文全名為“RedundantArrays of Inexpensive Disks”,即容錯廉價磁盤陣列。RAID可以通過一些技術(硬件或者軟件)將多個磁盤整合起來,不僅是一個存儲,還具有數據保護、提高IO能力等功能。不同等級的RAID有不同的功能。常見的RAID級別為RAID-0,RAID-1、RAID-5、RAID-6AID 1+0、RAID 1+0
RAID的實現方式:軟件RAID、硬件RAID
硬件RAID:
外接式磁盤陣列:例如通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
軟件RAID
chunk:每塊組成RAID-0的磁盤,都會被分隔為固定大小的小區塊即chunk。當一個文件要寫入RAID是,依據小區塊(chunk)的大小切割好,一次放入RAID中。
RAID-0(等量模式,stripe):
最少磁盤數:2
可用空間:N*min[s1,s2……]
優點:提升IO能力,讀寫性能均有提高
缺點:沒有冗余,耐用性降低
數據存儲方式:此處以兩塊磁盤為例。當有一個20M大小的數據寫入時,每個磁盤將會被分配10M的數據
RAID-1(mirror,鏡像模式)
最少磁盤數:2
可用空間:min[s1,s2……]
優點:
提升IO能力,寫性能沒有提(甚至會降低)高,讀性能提高。
有冗余,耐用性提高
缺點:可用空間減少,由於每份數據都要完整的保存到兩塊磁盤,容量幾乎減少50%。
數據存儲方式:此處以兩塊磁盤為例。當有一個20M大小的數據寫入時,每個磁盤將會被分配20M的相同數據。
RAID-10和RAID-01:RAID-0性能佳但是數據不安全,RAID-1數據安全但是性能不佳。所以可以將兩者結合起來組成RAID-10和RAID-01。
RAID-10:舉例來說,先將;兩塊磁盤組成RAID-1,並且這樣的設置共有兩組,然後將這兩組RAID-1組成RAID-0。
最少磁盤數:4
可用空間:N*min[s1,s2……]/2
優點:
提升IO能力,讀寫性能提高。
有冗余,耐用性提高
缺點:可用空間減少,由於每份數據都要完整的保存到兩塊磁盤,容量幾乎減少50%。
數據存儲方式:此處以四塊磁盤為例。A和B組成第一組RAID-1,C和D組成第二組RAID-1,然後這兩組在組成RAID-0。當有一個40M大小的數據寫入時,由於RAID-0的特性,每組RAID-1會寫入20M數據。由於RAID-1的特性,每塊磁盤會寫入20M數據。
RAID-01:先組成RAID-0在組成RAID-1。
RAID4
最少磁盤數:3
可用空間:(N-1)*min(s1,s2,23.......)
優點:
提升IO能力,讀性能提高,寫性能不一定增加,因為軟RAID寫入的數據還要經過計CPU算同位校驗碼(parity)
有冗余,耐用性提高允許壞一塊盤
缺點:可用空間減少一塊單獨一塊做校驗盤容易成為系統瓶頸。
數據存儲方式:此處以3塊磁盤為例。A、B、C三塊磁盤中有一塊存儲其他兩塊盤的校驗碼(此處認定為C盤)。有40M數據寫入時,A、B各存儲20M,C用來存放A、B盤的校驗碼。
RAID-5:以三塊盤為例,與RAID4基本相同,不同的是RAID5是三塊盤輪流做校驗盤
最少磁盤數:3
可用空間:(N-1)*min(s1,s2,23.......)
優點:
讀寫性能均提升。
有冗余,耐用性提高,允許壞一塊盤。
linux上軟RAID的實現
在centos上要實現軟RAID,依賴於內核的md(multi model)模塊。
命令:mdadm(multi model admin)
語法:mdadm [model] <raiddevice> [options] <component-devices>
model:
創建:-C
裝配:-A
監控:-F
管理:--manage
-f(--fail):將raid中某塊磁盤標記為出錯狀態
-r(--remove):
-a(--add):
raiddevice:/dev/md#。指名要創建或者管理的RAID設備。
component-devices:指明raid組成成員是哪些盤
-C:創建模式
-n#:使用#快設備創建RAID
-L#:創建RAID的級別
-c chunk_size:指名塊大小默認64M
-x #:指定空閑盤的個數
-a {yes|no}:自動創建目標RAID設備的設備文件
示例:創建一個RAID-5設備,三塊磁盤做存儲,一塊空閑磁盤。
第一步查看磁盤狀態,並創建新的分區如下圖創建sda{5,6,7,8}四個分區
將分區的類型更改為fd。上圖中新建的四個分區System還是Linux,需要將其改為fd。
重讀磁盤分區表
使用:partprobe命令即可
查看系統是否已經存在md設備:cat /proc/mdstat。可以看到並沒有md設備。此步驟主要是查看主機是否曾經創建過md設備,一次確定本次創建的md設備名稱
創建RAID-5
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sda{6,7,8,9}
初始化raid設備
mke2fs -t ext4 /dev/md0
掛載使用
mount /dev/md0 /mydata
仿真RAID出錯狀態處理
查看raid詳細信息:mdadm --detail /dev/md0
將磁盤sda6標記為錯誤狀態
查看raid信息,可以看到有一個錯誤狀態的磁盤,並且空閑磁盤自動加入到raid中
將出錯的磁盤刪除並且加入新的磁盤/dev/sda10:mdadm --manage /dev/md0 -a /dev/sda10 -r /dev/mda6
linux--RAID(軟)