RAID介紹及軟RAID實現

RAID

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

RAID是硬件,安裝操作系統時,有的硬件廠商的硬件可能操作系統不包含驅動,需要單獨安裝。

內核調用的是md模塊

提高IO能力:

    磁盤并行讀寫

提高耐用性;

    磁盤冗余來實現

級別:多塊磁盤組織在一起的工作方式有所不同

注意:數據不重要但是,設備損壞有可能引發業務終止。

RAID實現的方式:

    外接式磁盤陣列:通過擴展卡提供適配能力

    內接式RAID:主板集成RAID控制器
                安裝OS前在BIOS里配置
    注意:硬件RAID應該在安裝操作系統之前做好規劃配置。一般都在BIOS界面配置。

    Software RAID:

RAID級別

    RAID-0:條帶卷,strip
    RAID-1: 鏡像卷,mirror
    RAID-2 ##2-4不常用
    ..
    RAID-5
    RAID-6
    RAID-10
    RAID-01
    
    RAID-0:     ###多塊硬盤邏輯上累加為一塊硬盤
    
        讀、寫性能提升;

        可用空間:N*min(S1,S2,…)
        無容錯能力
        最少磁盤數:2, 2
    RAID把文件切割成多塊(chunk),把塊分散到不同磁盤上去。只能是非關鍵性的數據。

    
    RAID-1            :##鏡像
    
        讀性能提升、寫性能略有下降;
        可用空間:1*min(S1,S2,…)
        有冗余能力
        最少磁盤數:2, 2N
    
    RAID-4:
    
        多塊數據盤異或運算值,存于專用校驗盤
        三塊以上的硬盤組成RAID,一塊存校驗碼,另外兩塊存數據。
        將數據分成連組chunk,兩組chunk做異或運算。得到的校驗碼。任何一組數據丟失,都能通過校驗碼找回。
        允許壞一塊硬盤,降級模式運行。
        缺點,校驗盤讀寫壓力大。
    
    RAID-5:
    
        讀、寫性能提升
        可用空間:(N-1)*min(S1,S2,…)
        有容錯能力:允許最多1塊磁盤損壞
        最少磁盤數:3, 3+
        基于左對稱,輪流做校驗盤。
        浪費空間小
    
    RAID-6:
    
        讀、寫性能提升
        可用空間:(N-2)*min(S1,S2,…)
        有容錯能力:允許最多2塊磁盤損壞
        最少磁盤數:4, 4+
        用兩塊盤做校驗盤
        浪費空間小

RAID混合類型級別
    
    RAID-10:
        讀、寫性能提升
        可用空間:N*min(S1,S2,…)/2
        有容錯能力:每組鏡像最多只能壞一塊
        最少磁盤數:4, 4+
    RAID-01、RAID-50

    RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能    最高的RAID模式

    JBOD:Just a Bunch Of Disks
        功能:將多塊磁盤的空間合并一個大的連續空間使用
        可用空間:sum(S1,S2,…)

    常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

軟RAID

    內核有一個模塊md通過讀取配置文件支持RADI(軟RAID)在系統中表象為一個硬件設備在/dev/md#
    內核的庫文件[root@yangyouwei ~]# ls /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/md/
    mdadm:為軟RAID提供管理界面,支持任何塊設備配置為RAID
    為空余磁盤添加冗余,如果使用分區的話,需要將分區類型改為linux raid類型fd
    結合內核中的md(multi devices)

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

    -C: 創建模式
        -n #: 使用#個塊設備來創建此RAID;
        -l #:指明要創建的RAID的級別;
        -a {yes|no}:自動創建目標RAID設備的設備文件;
        -c CHUNK_SIZE: 指明塊大小;
        -x #: 指明空閑盤的個數;
    例如:創建一個10G可用空間的RAID5

    -D:顯示raid的詳細信息;
        mdadm-D /dev/md#
    管理模式:
        -f: 標記指定磁盤為損壞
        -a: 添加磁盤
        -r: 移除磁盤
    觀察md的狀態:
        cat /proc/mdstat
    停止md設備:
        mdadm-S /dev/md#

軟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 –n 4 -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 –Ds /dev/md0 > /etc/mdadm.conf
    停服務:mdadm –S /dev/md0
    激活:mdadm –A –s /dev/md0 激活
    刪除raid信息:mdadm –zero-superblock /dev/sdb1

實際操作

1、RAID可在物理設備上直接使用,分區上做RAID就必須指定文件系統類型為linux RAID auto fd類型。

    [root@yangyouwei ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk
    ├─sda1   8:1    0  200M  0 part /boot
    ├─sda2   8:2    0 97.7G  0 part /
    ├─sda3   8:3    0 19.5G  0 part /testdir
    ├─sda4   8:4    0    1K  0 part
    └─sda5   8:5    0  200M  0 part [SWAP]
    sdb      8:16   0   20G  0 disk
    sdd      8:48   0   20G  0 disk
    sdc      8:32   0   20G  0 disk
    sde      8:64   0   20G  0 disk
    sdf      8:80   0   20G  0 disk
    sr0     11:0    1  3.7G  0 rom  

2、創建RAID設備

    [root@yangyouwei ~]# mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/sd{b,c,d,e,f}  ###-a 自動創建設備文件 -l RAID5 -n 幾個設備 -x 備用設備 這里共用了5個設備。
    mdadm: array /dev/md0 started.

    [root@yangyouwei ~]# cat /proc/mdstat   ###查看RAID。創建后同步設備
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
          62865408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
          [==>………………]  recovery = 12.4% (2601088/20955136) finish=1.5min speed=200083K/sec
          
    unused devices: <none>

    [root@yangyouwei ~]# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
    62865408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

    查看RAID設備詳細情況
        root@yangyouwei ~]# mdadm -D /dev/md0
        /dev/md0:
                Version : 1.2
          Creation Time : Mon Jul 25 06:00:00 2016
             Raid Level : raid5
             Array Size : 62865408 (59.95 GiB 64.37 GB)
          Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
           Raid Devices : 4
          Total Devices : 5
            Persistence : Superblock is persistent
        
            Update Time : Mon Jul 25 06:08:33 2016
                  State : clean
         Active Devices : 4
        Working Devices : 5
         Failed Devices : 0
          Spare Devices : 1
        
                 Layout : left-symmetric
             Chunk Size : 512K
        
                   Name : yangyouwei.centos6:0  (local to host yangyouwei.centos6)
                   UUID : 245f2c18:4025fee1:a482c73e:fa3488d0
                 Events : 18
        
            Number   Major   Minor   RaidDevice State  ###四個在線設備,要給備用設備
               0       8       16        0      active sync   /dev/sdb
               1       8       32        1      active sync   /dev/sdc
               2       8       48        2      active sync   /dev/sdd
               5       8       64        3      active sync   /dev/sde
        
               4       8       80        –      spare   /dev/sdf
    

    查看RAID設備大小
        [root@yangyouwei ~]# lsblk
        NAME   MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
        sda      8:0    0  200G  0 disk  
        ├─sda1   8:1    0  200M  0 part  /boot
        ├─sda2   8:2    0 97.7G  0 part  /
        ├─sda3   8:3    0 19.5G  0 part  /testdir
        ├─sda4   8:4    0    1K  0 part  
        └─sda5   8:5    0  200M  0 part  [SWAP]
        sdb      8:16   0   20G  0 disk  
        └─md0    9:0    0   60G  0 raid5
        sdd      8:48   0   20G  0 disk  
        └─md0    9:0    0   60G  0 raid5
        sdc      8:32   0   20G  0 disk  
        └─md0    9:0    0   60G  0 raid5
        sde      8:64   0   20G  0 disk  
        └─md0    9:0    0   60G  0 raid5
        sdf      8:80   0   20G  0 disk  
        └─md0    9:0    0   60G  0 raid5
    
        fdisk -l /dev/md0
        Disk /dev/md0: 64.4 GB, 64374177792 bytes
        2 heads, 4 sectors/track, 15716352 cylinders
        Units = cylinders of 8 * 512 = 4096 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 524288 bytes / 1572864 bytes
        Disk identifier: 0x00000000

    注意:創建設備后RAID的設備成員的uuid都是一樣的。
        /dev/sdb: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="9e4e5600-1aed-33da-a8d1-e7976c26736b" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
        /dev/sdd: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="7e48d80e-f024-8795-d77a-2f9ea62ecbac" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
        /dev/sdc: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="e2730f30-b1c3-e516-832a-0abd5fe4f326" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
        /dev/sde: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="3dcd74bf-c723-0e0a-3f75-90703f17af89" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"

3、在RAID設備上創建文件系統。

    [root@yangyouwei ~]# mkfs.ext4 /dev/md0
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=128 blocks, Stripe width=384 blocks
    3932160 inodes, 15716352 blocks
    785817 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    480 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
            4096000, 7962624, 11239424
    
    Writing inode tables: done                            
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 33 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.

就像在硬盤上創建文件系統一樣。設備指向,/dev/md#

4、寫入fstab文件

    注意寫入fstab文件時,使用uuid時,需要使用在RAID創建的文件系統的uuid(blkid查看)。不能使用RAID設備的uuid

5、將當前RAID配置寫入配置文件(必須寫入否則下次進入系統后配置文件丟失不能使用RAID)就算停止RAID在啟動也會丟失配置。需要重新配置。

    [root@yangyouwei ~]# mdadm -Ds /dev/md0 > /etc/mdadm.conf

6、測試

    模擬損壞

        [root@yangyouwei ~]# mdadm /dev/md0 -f /dev/sdb
        mdadm: set /dev/sdb faulty in /dev/md0

    刪除成員

        [root@yangyouwei ~]# mdadm /dev/md0 -f /dev/sdb
        mdadm: set /dev/sdb faulty in /dev/md0
        [root@yangyouwei ~]# mdadm /dev/md0 -r /dev/sdb
        mdadm: hot removed /dev/sdb from /dev/md0

    增加成員

    停止RAID服務

    [root@yangyouwei ~]# mdadm -S /dev/md0
    mdadm: stopped /dev/md0

    啟動RAID服務

    如不使用RAID需要清除RAID成員列表
        刪除raid信息:mdadm –zero-superblock /dev/sdb1

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

(0)
yywyyw
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • Linux干貨 2017-12-02
  • FHS文件系統各目錄功能

    前言 FHS將文件根據不同的用途和特性分成了可共享的(shareable)和不可共享的(unshareable),可變的(variable)和靜態的(static)。不同的文件位于不同的目錄里面,將目錄分開了將有利于對文件的管理。 文件系統 可共享的 文件可以被存儲于某一個主機上,然后供其他主機使用。如果想訪問其他主機上可共享的文件,可以將其他主機目錄掛載到…

    Linux干貨 2016-10-17
  • MySQL-MMM安裝指南(Multi-Master Replication Manager for MySQL)

    最基本的MMM安裝必須至少需要2個數據庫服務器和一個監控服務器下面要配置的MySQL Cluster環境包含四臺數據庫服務器和一臺監控服務器,如下: function ip hostname server id monitoring host 192.168.0.10 mon – master 1 192.168.0.11 db1 1 maste…

    Linux干貨 2015-05-01
  • HTTP詳解(2)-請求、響應、緩存

    1. HTTP請求格式              做過Socket編程的人都知道,當我們設計一個通信協議時,“消息頭/消息體”的分割方式是很常用的,消息頭告訴對方這個消息是干什么的,消息體告訴對方怎么干。HTTP協議傳輸的消息也是這樣規定的…

    Linux干貨 2015-04-04
  • 搭建路由環境

        五個虛擬機分別模擬三個路由器和兩個主機,實現不同網段的主機之間的通信。 1.規定四個網段的ip地址:分別是192.168.1.0/24;192.168.2.0/24;192.168.3.0/24;192.168.4.0/24 2.三個路由器命名為R1、R2、R3。R1的兩個網關地址為192.168.1.1和19…

    2017-08-20
  • awk命令詳解

    簡介: wak是一個強大的文本分析工具,也可以叫做報告生成工具。相對于grep的查找,sed的編輯,awk在對其數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格 為默認分隔符將每行切片,切開的部分再進行各種分析處理。 awk有三個不同的版本:awk,nawk,gawk。我們目前所使用的awk一般指gawk,gawk是AWK和GN…

    Linux干貨 2016-11-28
欧美性久久久久