Linux學習筆記之 RAID介紹,及centos6上軟RAID的實現

RAID:Redundant Arrays of Inexpensive Disk 廉價冗餘磁盤陣列,通過對多塊硬盤按不同的方式組織起來,來提高IO能力,或提高耐用性等。RAID可分爲軟RAID和硬RAID,軟RAID通過軟件實現,硬RAID使用專業的RAID卡和磁盤組成。


RAID級別:多塊磁盤組織在一起的工作方式有所不同。常見的RAID級別有RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,RAID10,RAID01。


RAID0:striping 條帶化數據,存儲到不多個硬盤

    讀寫性能均有提升

    可用空間:N*磁盤空間(受最小的磁盤空間的限制)

    無容錯能力,任何一塊設備算壞,都會導致數據丟失

    最少磁盤數:2

wKioL1XkRT7T_sP1AACfFmfEk40967.jpg


RAID1:鏡像RAID

    讀性能提升、寫性能略有下降;

    可用空間:容量較小的磁盤的容量

    有冗餘能力,單塊磁盤損壞,不會導致數據丟失

    最少磁盤數:2

wKioL1XkRk-DOpYqAAOBEydLncw446.jpg


RAID4:用一塊磁盤專門存儲校驗碼

    讀,寫性能均有提升

    可用空間:(N-1)*最小磁盤的容量

    有容錯能力:可以壞1塊磁盤

    最少磁盤數:3

wKiom1XkRJzTIk5EAAEHe7YYfzY840.jpg


RAID5:

    讀,寫性能均有提升

    可用空間:(N-1)*最小磁盤的容量

    有容錯能力:可以壞1塊磁盤

    最少磁盤數:3

wKiom1XkRQORzQdqAABzgHF6ghg795.gif


RAID6:交驗信息存儲兩份:會導致更多磁盤空間的浪費

    讀、寫性能提升

    可用空間:(N-2)*最小磁盤的容量

    有容錯能力:最多可有2塊磁盤損壞

    最少磁盤數:4

  spacer.gif wKiom1XkRSXzqaGiAAEIscRt75Y460.jpg


RAID10:

    讀寫系能均有提升

    可用磁盤空間:50%

    有容錯能力:沒組最多壞一塊盤

    最少磁盤數:4

wKioL1XkR7PCV9Z1AAC5uhtKhSE446.jpg


其它:

JBOD:Just a bunch of disks. 

功能:將多塊磁盤的空間合併一個大的連續空間使用;

可用空間:sum(S1,S2,...)

spacer.gif


CentOS 6上的軟件RAID的實現

    結合內核中的md(multi devices)

mdadm:模式化的工具

    命令的語法格式:mdadm [mode] <raiddevice> [options] <component-devices>

    支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;

模式:

    創建:-C

    裝配: -A

    監控: -F

    管理:-f, -r, -a

<raiddevice>: /dev/md#

<component-devices>: 任意塊設備

-C: 創建模式

    -n #: 使用#個塊設備來創建此RAID;

    -l #:指明要創建的RAID的級別;

    -a {yes|no}:自動創建目標RAID設備的設備文件;

    -c CHUNK_SIZE: 指明塊大小;

    -x #: 指明空閒盤的個數;


練習:創建一個10G可用空間的RAID5,留一個空閒盤做熱備


第一步:使用fdisk命令劃分4個5G的分區,3個組成RAID5,另外一個做位空閒盤

root@centos6 ~]# fdisk /dev/sdb 

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

Command (m for help): n    #創建新分區

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-15665, default 1): 

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +5G

...

...

重複此上步驟,直至創建好4個所需的分區:同時需要注意將分區id改爲fd格式,可以參照如下步驟使用fdisk命令來修改

[root@centos6 ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

Command (m for help): t    #x修改分區id

Partition number (1-5): 1

Hex code (type L to list codes): fd     #選擇RARID所需的分區id

Command (m for help): w    #保存修改

The partition table has been altered!


第二步:格式化分區


所有的分區都已經創建好,效果如下

[root@centos6 ~]# fdisk -l /dev/sdb    #查看分區情況

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x067824c0

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         654     5253223+  fd  Linux raid autodetect

/dev/sdb2             655        1308     5253255   fd  Linux raid autodetect

/dev/sdb3            1309        1962     5253255   fd  Linux raid autodetect

/dev/sdb4            1963       15665   110069347+   5  Extended

/dev/sdb5            1963        2616     5253223+  fd  Linux raid autodetect

[root@centos6 ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{1,2,3,5} 

        mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.

 

[root@centos6 ~]#watch -n1 cat /proc/mdstat    #查看mad的狀態

mdadm: set /dev/sdb1 faulty in /dev/md0

Personalities : [raid6] [raid5] [raid4] 

md0 : active raid5 sdb3[4] sdb5[3] sdb2[1] sdb1[0](F)

      10498048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]

      [==================>..]  recovery = 91.5% (4804320/5249024) finish=0.1min speed=72603K/sec     

unused devices: <none>

root@centos6 ~]# 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=256 blocks

657072 inodes, 2624512 blocks

131225 blocks (5.00%) reserved for the super user

...此處省略N行信息

This filesystem will be automatically checked every 30 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override


第三步:掛載檢驗RAID是否成功創建



[root@centos6 ~]# mkdir /mnt/raid5    #創建掛載點

[root@centos6 ~]# mount /dev/md0 /mnt/raid5/    #掛載RAID

[root@centos6 ~]# mdadm -D /dev/md0

/dev/md0:

 ... 此處省略N行信息

       0       8       17        0      active sync   /dev/sdb1

       1       8       18        1      active sync   /dev/sdb2

       4       8       19        2      active sync   /dev/sdb3

       3       8       21        -      spare   /dev/sdb5

[root@centos6 ~]# ls -l /mnt/raid5/

total 16

drwx------ 2 root root 16384 Aug 30 03:57 lost+found

[root@centos6 ~]# df -lh /mnt/raid5/

Filesystem      Size  Used Avail Use% Mounted on

/dev/md0        9.8G   23M  9.3G   1% /mnt/raid5

如果要讓此文件系統自動掛載,同樣需要添加到/etc/fstab中

模擬RAID5磁盤損壞的,空閒盤會自動補充到RIAD5中去

  • mdadm -D /dev/md0 查看當前md狀態

spacer.gif

[root@centos6 ~]# mdadm /dev/md0 -f /dev/sdb5  #將sdb5設置爲faulty(損壞)

mdadm: set /dev/sdb5 faulty in /dev/md0

  • 此時sdb1會自動添加到RAID5中去,以下是正在recovery的狀態


spacer.gif

  • 恢復完成後:再度查看,RAID已經完全恢復正常狀態:


spacer.gif

  • 此時,可以移除壞掉的磁盤sdb5,重新添加新的可用分區做位RAID5的空閒盤


[root@centos6 ~]# mdadm /dev/md0 --remove /dev/sdb5    #從RAID中移除sdb5

mdadm: hot removed /dev/sdb5 from /dev/md0

root@centos6 ~]# mdadm /dev/md0 --add /dev/sdb6    #將sdb6添加到RIAD中去

mdadm: added /dev/sdb6

其它命令


-D:顯raid的詳細信息;

mdadm -D /dev/md#

管理模式:

-f: 標記指定磁盤爲損壞;

-a: 添加磁盤

-r: 移除磁盤


觀察md的狀態:

cat /proc/mdstat

停止md設備:

mdadm -S /dev/md#

watch命令:

-n #: 刷新間隔,單位是秒;

watch -n# 'COMMAND'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章