1. 程式人生 > >RAID詳細介紹

RAID詳細介紹

驅動器 觀察 容錯性 語法 bio 什麽 結合 ant 容錯能力

什麽是RAID
  RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亞大學伯克利分校(University of CaliforniaBerkeley) “A Case for Redundant Arrays of Inexpensive Disks” 多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提供    

RAID


提高IO能力
        磁盤並行讀寫
提高耐用性
        磁盤沈余來實現
級別:多塊磁盤組織在一起的工作方式有所不同
RAID實現的方式
        外接式磁盤陣列:通過擴展卡提供適配能力
        內接式RAID:主板集成RAID控制器
        安裝OS前在BIOS裏配置
        軟件RAID:通過OS實現

RAID級別


RAID-0:條帶卷,strip 
RAID-1: 鏡像卷,mirror 
RAID-2 
RAID-5 
RAID-6 
RAID-10 
RAID-01  

RAID級別詳解


RAID-0:
    讀寫性能提升
    可用空間:N*min(s1,s2)
    無容錯能力
    最少磁盤:2,2+
RAID-1:
    讀性能提升,寫性能略有下降
    可用空間:1*min(s1,s2)
    有冗余能力
    最少磁盤數:2,2n
RAID-5:
    讀,寫性能提升
    可用空間:(N-1)*min(s1,s2)
    有容錯能力:允許最多一塊磁盤
    最少磁盤數:3,3+
RAID-6:
    讀,寫性能提升
    可用空間:(N-2)*min(S1,S2,...)
    有容錯能力:允許最多2塊磁盤損壞
    最少磁盤數:4,4+
RAID-10:
    讀,寫性能提升
    可用空間:N*min(S1,S2,...)/2 
    有容錯能力:每組鏡像最多只能壞一塊
    最少磁盤數:4,4+
RAID-01:
    多塊磁盤先實現RAID0,在組合成RAID1
JBOD:
    Just a Bunch Of Disks
    功能:將多塊磁盤的空間合並一個大的連續空間使用
RAID7:
    可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,,可以獨自運行,理論上性能最高的RAID模式
常用級別:
    RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

軟RAID


mdadm:為軟RAID提供管理界面
為空余磁盤添加冗余
結合內核中的md
RAID設備可命名為/dev/md0、/dev/md1、/dev/md2、/dev/md3等

軟件RAID的實現


mdadm:模式化的工具
命令的語法格式:mdadm [mode] <raiddevice> [options] <componentdevices>
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10 
模式:
    創建:-C 
    裝配:-A 
    監控:-F
    管理:-f, -r, -a
<raiddevice>: /dev/md# <component-devices>: 任意塊設備

軟件RAID的實現


-C:創建模式
    -n #: 使用#個塊設備來創建此RAID
    -l #:指明要創建的RAID的級別
    -a {yes|no}:自動創建目標RAID設備的設備文件 -a yes[意思是初始化RAID設備]
    -c CHUNK_SIZE: 指明塊大小,單位k
    -x #: 指明空閑盤的個數  
-D:顯示raid的詳解信息
    mdadm -D /dev/md
管理模式:
    -f: 標記指定磁盤為損壞
    -a: 添加磁盤 
    -r: 移除磁盤 
觀察md的狀態:cat /proc/mdstat

  例:實現RAID0【性能高,但是沒有容錯性,損壞一個硬盤就不能使用】
第一步:用四個硬盤,分別拿出相應的空間大小,分區時註意格式  t     :dd   if=/dev/sda  of=/dev/sdb  bs=1  count=512
第二步:mdadm -C  /dev/md0 -a yes -l0  -n 4   /dev/sdb1  /dev/sdc1  /dev/sdd1 /dev/sde1
第三步:在一個是否生成用命令mdadm -D /dev/md0
第四步:先把UUID存起來 mdadm -Ds /dev/md0  >  /etc/mdadm.conf 
第五步:創建文件系統  mkfs.ext4   /dev/md0     blkid就可以查看了
第六步:創建一個掛載點就可以掛載了  mkdir /mnt/raid  [永久掛載/etc/fstab]   

例:實現RAID5【五個硬盤一個空閑,四個真正使用,】
第一步: mdadm -C  /dev/md5 -a yes -l5  -n4  -x1 /dev/sd{b,c,d,e}1  /dev/sd...  
第二步:先把UUID存起來 mdadm -Ds /dev/md5 >  /etc/mdadm.conf 
第三步:創建文件系統  mkfs.ext4   /dev/md5    blkid就可以查看了
第四步:創建文件系統  mkfs.ext4   /dev/md5    blkid就可以查看了
第五步:創建一個掛載點就可以掛載了  mkdir /mnt/raid  [永久掛載/etc/fstab] 

模擬磁盤故障
mdadm /dev/md5  -f  /dev/sde1[模擬sde1硬盤損壞]  [mdadm -D /dev/md5 查看情況] 

移除磁盤 
mdadm /dev/md5 –r /dev/sde1【移除sde1】mdadm /dev/md5 –a /dev/sde1【添加回來sde1】

損壞後加硬盤:mdadm /dev/md5 -a /dev/sde[添加一塊/dev/sde硬盤]  【如果是硬盤直接加就行,如果是分區需要格式化還要t加......】
如果空間不夠想擴展空間  【mdadm -G  /dev/md5 -n  5 -a /dev/sda3   [-G是添加,-n5代表以前是四個現在加到5個 -a 是把那個加到裏面]】
【df查看的是文件系統所以看不到添加後的內存】【xfs_growfs   /mnt/raid5[xfs文件系統後面跟的是掛載點]】
【resize2fs   /dev/md5  etx4文件系統後面跟的是設備名】

軟RAID配置示例


使用mdadm創建並定義RAID設備
mdadm -C  /dev/md0 -a yes -l 5 -n 3 -x 1  /dev/sdb1  /dev/sdc1  /dev/sdd1 /dev/sde1
用文件系統對每個RAID設備進行格式化 
mke2fs -j  /dev/md0
測試RAID設備
使用mdadm檢查RAID設備的狀況
mdadm --detail|D /dev/md0
增加新的成員
mdadm –G /dev/md0 –n4  -a /dev/sdf1  

軟RAID測試和修復


模擬磁盤故障
mdadm /dev/md0  -f  /dev/sda1
移除磁盤 
mdadm /dev/md0 –r /dev/sda1
從軟件RAID磁盤修復磁盤故障
    ? 替換出故障的磁盤然後開機
    ? 在備用驅動器上重建分區 
    ? mdadm /dev/md0  -a  /dev/sda1
mdadm、/proc/mdstat及系統日誌信息  

軟RAID管理


生成配置文件:mdadm –D –s  >> /etc/mdadm.conf
停止設備:mdadm –S /dev/md0
激活設備:mdadm –A –s /dev/md0 激活 
強制啟動:mdadm –R /dev/md0
刪除raid信息:mdadm --zero-superblock /dev/sdb1 

例: 刪除RAID0
首先先取消掛載 umount /mnt/raid0 
然後在刪除 rm -rf /etc/mdadm.conf[這裏是創建時手工添加的]
然後停止設備  mdadm –S /dev/md0  【mdadm –A –s /dev/md0 就激活不了了,因為刪除了/etc/mdadm.conf 這個文件】
然後是清除超級塊mdadm --zero-superblock /dev/sdb1【或mdadm --zero-superblock /dev/sd{c,e,d}1 一下清空】
然後blkid就看不到文件系統了 ,lsblk看一下還可以看到分區
在徹底的就是用dd 清空了:dd if=/dev/zero of=dev/sdb1,dd if=/dev/zero of=dev/sdc1,dd if=/dev/zero of=dev/sde1,dd if=/dev/zero of=dev/sdd1
可以用二進制確認一下 :hexdump -c /dev/sde1 
註意:寫入/etc下的文件要刪除

RAID詳細介紹