1. 程式人生 > >linux--RAID(軟)

linux--RAID(軟)

disk 存儲方式 系統瓶頸 固定 新建 中新 數據存儲 分隔 硬件

  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(軟)