Linux基礎知識之RAID

1、什么是RAID?
    多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提供。
2、RAID的優點?
    提高IO 能力:
        磁盤并行讀寫
    提高耐用性:
        磁盤冗余來實現
3、RAID 實現的方式:
    外接式磁盤陣列:通過擴展卡提供適配能力
    內接式RAID :主板集成RAID 控制器
        安裝OS 前在BIOS 里配置
    Software RAID:軟件實現的RAID
4、RAID級別:多塊磁盤組織在一起的工作方式有所不同
    0:條帶
        性能提升:讀和寫
        冗余能力(容錯能力):無
        空間利用率:nS
        至少需要2塊硬盤
    1:鏡像
        性能提升:寫性能下降,讀性能提升
        冗余能力:有
        空間利用率:1/2
        至少需要2塊硬盤
    2-4:現在不做使用
    5:
        性能提升:讀 寫
        冗余能力:有
        空間利用率:(n-1)/n
        至少需要3塊硬盤
    6:
        性能提升:讀 寫
        冗余能力:有,最多支持兩塊硬盤同時損壞
        空間利用率:(n-2)/n
        至少需要4塊磁盤
    7:
        可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID

組合RAID
    10:
        性能提升:讀 寫
        冗余能力:有
        空間利用率:1/2
        至少需要4塊硬盤
    01:
        性能提升:讀 寫
        冗余能力:有
        空間利用率:1/2
        至少需要4塊硬盤
    50:
        性能提升:讀 寫
        冗余能力:有
        空間利用率:(n-2)/n
        至少需要6塊硬盤
    jbod:
        性能提升:無提升
        冗余能力:無
        空間利用率:100%
        至少需要2塊硬盤
    常用級別:RAID-0, RAID-1, RAID-5, RAID-10,RAID-50, JBOD
5、利用軟件實現RAID
    mdadm:模式化的工具  
    支持的RAID 級別:LINEAR, RAID0, RAID1, RAID4,RAID5, RAID6, RAID10
    語法:mdadm [mode] <raiddevice> [options] <component-devices>
    模式化的命令:
        創建模式
        -C 設備
        專用選項
            -n #: 使用#個塊設備來創建此RAID;
            -l #:指明要創建的RAID的級別;
            -a {yes|no}:自動創建目標RAID設備的設備文件;
            -c CHUNK_SIZE: 指明塊大小;
            -x #: 指明空閑盤的個數;
        管理模式
            –add(-a)    eg:mdadm /dev/md# -a /dev/sda9      將磁盤sda9添加的md#陣列中,新添加硬盤要與原先的硬盤的儲存空間相同
            –remove(-r) eg:madam /dev/md# -r /dev/sda8      移除md#下的sda8磁盤
            –fail(-f)   eg:mdadm /dev/md# –fail /dev/sda7       模擬損壞的md#下的sda7磁盤
        監控模式
            -F
            -D  /dev/md1  顯示/dev/md1 的所有的磁盤信息
        增長模式
            -G
        裝配模式
            -A  mdadm -A /dev/md# /dev/sda7 /dev/sda9 將sda7和sda9裝配到md#下
        停止陣列:
            mdadm -S /dev/md#  停止/dev/md#的磁盤陣列
        觀察md的狀態:
            cat /proc/mdstat
6.軟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
7.軟RAID測試和修復
    模擬磁盤故障
        #mdadm /dev/md0 -f /dev/sda1
    移除磁盤
        #mdadm /dev/md0 –r /dev/sda1
    從軟件RAID磁盤修復磁盤故障,替換出故障的磁盤然后開機
    在備用驅動器上重建分區
        #mdadm /dev/md0 -a /dev/sda1
        mdadm  /proc/mdstat 及系統日志信息
8、軟RAID管理
    生成配置文件:mdadm –D –s >> /etc/mdadm.conf
    停服務:mdadm –S /dev/md0
    激活:mdadm –A –s /dev/md0  激活
    刪除raid信息:mdadm –zero-superblock /dev/sdb1
9、RAID實戰演練
    (1)創建2G RAID0
    2G  2個1G的 分區
    mdadm -C /dev/md0   創建一個設備
    fdisk /dev/sda     查看一下/dev/sda
    n +1G n +1G 創建兩個為sda5 sda6的分區
    t 5 fd  t 6 fd 將這兩個分區的格式更改為Linux Raid auto
    w 保存退出
    partprobe /dev/sda 重新讀取一下硬盤分區
    cat /proc/partitions 查看所有的Raid
    mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda5 /dev/sda6   創建/dev/md0 自動為其創建文件,創建的級別為0 設備個數為2
    cat /proc/mdstat   查看所有的Raid
    mke2fs -j /dev/md0      格式化md0,不能格式化sda5 sda6
    mount /dev/md0 /mnt 將md0掛載到/mnt
    (2)創建2G RAID1
    因為磁盤的利用率為1/2,要想創建一個2G的RAID1需要創建兩個2G的分區
    mdadm -C /dev/md1   創建一個設備
    fdisk /dev/sda     查看一下/dev/sda
    n +2G n +2G 創建兩個為sda7 sda8的分區
    t 7 fd  t 8 fd 將這兩個分區的格式更改為Linux Raid auto
    w 保存退出
    partprobe /dev/sda 重新讀取一下硬盤分區
    cat /proc/partitions 查看所有的Raid
    mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sda7 /dev/sda8   創建/dev/md1 自動為其創建文件,創建的級別為0 設備個數為2
    cat /proc/mdstat   查看所有的Raid
    mke2fs -j /dev/md1      格式化md1,不能格式化sda7 sda8
    mount /dev/md1 /mnt 將md1掛載到/mnt
    (3)實現軟件raid
    ①將已經存在的或者新建的多塊磁盤分區同意調整為 fd  Linux raid auto 模式
        fdisk  /dev/sd#  n  p  +10G  t  fd  w
    磁盤的建議塊數,RAID5為例 需要5塊磁盤左右
    ②創建RAID設備
        mdadm -C  /dev/md0 -a yes -l 5  -n 4 -x 1 /dev/sd{b,c,d,e,f}
    創建的RAID的設備的文件名為md0,自動創建設備文件(-a yes),創建的級別為RAID5(-l 5),設備的個數為4個(-n 4),創建空閑盤的合數為1個(-x 1),創建的真實的磁盤為/dev/sd{b,c,d,e,f}
    ③查看已經創建的RAID設備是否存在
        mdadm -D /dev/md0
        cat /proc/mdstat
    ④為創建好的RAID設備設定文件類型,以ext4文件系統為例
        mkfs.ext4 /dev/md0
    ⑤將已經創建好的RAID設備,設置開機自動掛載,設置掛載點和掛載類型等
        vim /etc/fstab
        UUID="b92ddd51-c555-4948-b1d5-8563b697a2f1"   /mnt/raid   ext4    defaults     0       0
    ⑥將設備的配置信息,寫入到文件中,生成配置文件
        mdadm  -Ds /dev/md0 > /etc/mdadm.conf
    ⑦啟動與停止RAID
        mdadm -A /dev/md0 啟動RAID
        mdadm -S /dev/md0 停止RAID(注意:停止RAID之前,應該先卸載RAID,mount /dev/md0,之后使用-S卸載,否則會報錯)
    ⑧模擬RAID在日常生活中出現的錯誤
        mdadm /dev/md0 -f /dev/sdf1 模擬損壞
        mdadm /dev/md0 -r /dev/sdf1 刪除成員
        mdadm /dev/md0 -a /dev/sdf1 增加
        mdadm -G /dev/md0 -n 6 -a /dev/sdd4 增加成員
    ⑨刪除RAID
        umount /mnt/md#  卸載RAID的掛載
        mdadm -S /dev/md0 停止RAID的使用
        rm -f /etc/mdadm.conf 刪除RAID配置文件
        vi /etc/fstab    將RAID的默認掛載取消掉
        fdisk /dev/sda   刪除新建的RAID分區
        mdadm –zero-superblock /dev/sdd1  將磁盤中的超級塊信息取消掉

原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/42327

(0)
sjsirsjsir
上一篇 2016-09-01 08:50
下一篇 2016-09-01 08:50

相關推薦

  • 初學Linux之程序進程管理工具匯總

    pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup ?

    2017-12-16
  • shell腳本實現MD5破解的相關小計

    分享編寫shell腳本暴力破解md5的方法 方法一 單個破解法(以10位數為例) #!/bin/bash read -p “please input strings:”string for n in {0..33000} do Md5=`echo $n |md5sum|cut -c 1-10`      …

    Linux干貨 2017-03-26
  • linux目錄分類和各個目錄作用-2016-07-21

    linux目錄分類和各個目錄作用-2016-07-21 Linux安裝以后出現的文件目錄的作用:  文件系統的類型  LINUX有四種基本文件系統類型:普通文件、目錄文件、連接文件和特殊文件,可用file命令來識別。  普通文件:如文本文件、C語言元代碼、SHELL腳本、二進制的可執行文件等,可用cat、less、more、vi…

    Linux干貨 2016-08-04
  • ?redis cluster 安裝指南

    公司的很多項目在使用redis主從。由于coder的各種毀滅性操作,迫切需要一個能帶故障恢復的架構。因此新版的cluster,開始了測試。 一、Cluster 理論基礎 Cluster介紹 Redis集群是一個提供在多個Redis間節點間共享數據的程序集。 Redis集群并不支持處理多個keys的命令,因為這需要在不同的節點間移動數據,從而達不到像Redis…

    Linux干貨 2016-02-14
  • 大話命令之–ss

    大話命令之—ss ss是Socket Statistics的縮寫。顧名思義,ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。 優勢: (1)顯示更多更詳細的有關TCP和連接狀態的信息,(2)比netstat更快速更高效。 1 格式 格式:ss    [option]… &nbs…

    Linux干貨 2017-05-15
  • Python高階函數和裝飾器

    高階函數 First Class Object 函數在Python中是一等公民 函數也是對象,可調用(callable)的對象 函數可以作為普通變量、參數、返回值等等 高階函數 數學概念y=g(f(x)) 在Python中,高階函數應該滿足下列至少一個條件 接受一個或者多個函數作為參數 輸出一個函數 計數器 def counter(base): def in…

    Linux干貨 2017-10-23

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 13:07

    內容總結的很好,可以通過圖片來展示各raid級別的工作模式會更直觀哦

欧美性久久久久