RAID簡述和Linux軟RAID配置

RAID簡述和Linux軟RAID配置

PS:僅為課程練習,原理和配置可能有誤,僅供參考,謝謝;

1.RAID功能簡述

    RAID,全稱(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),現在一般多用于后面那個稱呼,獨立磁盤冗余陣列。RAID的基礎概念大致是將多個硬盤組合起來,成為一個硬盤陣列。該陣列給用戶的感知,跟之前單獨一個硬盤或邏輯分區一樣,但是卻能大大提高磁盤的冗余性及讀寫IO速度;
    由于現在IT行業的快速發展,人們的工作和生活越來越離不開IT互聯網,與之對應產生的是海量的數據;家庭個人如何音頻、視頻,企業方面如何多年累積的業務數據等;特別是一些大中型的互聯網公司,他們經過過年發展積累了海量的數據,如果使用傳統的獨立硬盤進行數據存儲,不僅價格昂貴,而且其冗余性和讀寫速度都不能達到企業級應用的需求;而RAID根據其組合模式的不同,可以提供不同的冗余和數據處理速度加快等功能,給企業及個人提供了多樣化的選擇;

2.RAID的實現方式

    RAID的實現方式大致分為三種:

       - 軟件RAID,通過系統軟件的方式實現RAID,這種方式沒有硬件可靠,企業級應用不推薦使用;
       - 內接式硬件RAID:主板集成RAID控制器,一般是家庭電腦上主板集成的RAID控制卡,用于個人或家庭使用,負載能力一般,不推薦用于企業環境;
       - 外接式磁盤陣列控制卡:這是一塊獨立的板卡,由專業的生成廠商生產;將其插在主板的PCI接口;價格雖然較為昂貴,但是可靠性卻大大提升,一般用于企業環境;
          
    硬件RAID需要通過磁盤陣列控制卡的控制實現,RAID(磁盤陣列)控制卡可以看作是一個智能的設備,它擁有自己獨立的CPU和內存,通過集成或借用主板上的SCSI控制器來管理硬盤;RAID控制卡的CPU還有緩存,這使得它在存取速度方面更快,但是斷電后有一定風險丟失數據,所以建議在采購RAID控制卡優先考慮有備用電源的產品型號;

3.RAID的分類

    RAID經過多年的發展,已經有好幾種不同的檔次,如RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6。還有混合RAID如何:RAID-7,RAID-10,RAID-50,RAID-60。每種檔次有相應的優缺點,不同的檔次在兩個目標間獲取平衡,分別是增加數據可靠性及磁盤IO讀寫性能;在創建RAID的時候,建議選擇容量相同的磁盤,因為RAID默認會取每個磁盤中最低容量的磁盤為標準進行RAID創建;用戶可以根據自己的實際需求,選擇相應的RAID模式,下面我們來介紹幾種常用RAID之間的特點:

      - RAID0:RAI0,又稱為條帶卷;由兩個或兩個以上的磁盤組成,寫入數據時將數據分割塊塊(chunk)分別存入到每個磁盤,因為讀寫都可以并行處理,所以IO速度是RAID中最快的,但是無容錯能力,一旦其中一塊磁盤數據損壞,所有磁盤的數據將會丟失;它的可用空間為N*min(S1,S2,…)。

                                       blob.png

      - RAID1:RAID1,又稱為鏡像卷;由兩個或兩個以上的磁盤組成,如果是兩個磁盤組成RAID1,其中一個作為主盤,另一個作為鏡像盤;數據存入時,在拷貝到主盤的同時,拷貝相應的副本到鏡像盤,這樣當有一個磁盤故障時,由于另一個磁盤數據一模一樣,所以不會影響到數據的正常性;RAID1是各種RAID中容錯力最好的,但是相應的其寫入性能因為要拷貝副本到另外的磁盤可能會導致略有下降,讀取數據時能從多個磁盤進行取數,所以讀取速度會相應提高,磁盤的使用率卻很低,只有組成RAID的磁盤容量的一半;它的可用空間為:1*min(S1,S2,……)。

                                         blob.png

      - RAID5:RAID是RAID0和RAID1的折中方案,它擁有比RAID0更好的容錯力和比RADID更好的讀寫速度和空間利用率;
      RAID5最少需要三塊硬盤組成,有容錯能力,RAID5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上,當其中一個磁盤損壞時,可通過其它磁盤的數據和奇偶信息去恢復損壞的數據;RAID5可以理解成是在RAID0的基礎上加了奇偶檢驗功能,所以寫入速度比單獨寫入一塊硬盤的速度略慢;要注意的是,數據塊(chunks)和校驗位必須要按順序即默認為左對稱的方式排放;它的可用空間為:(N-1)*min(S1,S2,……)。

                                  blob.png

       -RAID10:RA10最少由4塊硬盤組成,它的基本原理是,先4塊硬盤兩兩先做成2個RAID1,然后這兩個RAID1陣列再繼續做出RAID0模式;讀寫性能有提升,有容錯能力,前提是不要一組鏡像盤同時故障,如果兩組鏡像盤各壞一個,不會損壞數據;可用空間為:N*min(S1,S2,……)/2。

                                    blob.png

4.Linux上的軟RAID創建

    準備:在linux系統上進行RAID創建時,得先用fdisk或其它分區命令分好相應的分區,并設置成RAID模式(rd);并用partx等其他命令重新掃描系統分區;

    4.1 mdadm:這是一個模式化命令,該命令可用于RAID的創建,修改,刪除等功能,支持的RAID級別:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10;
    命令格式:mdadm [mode] [option] <compoent-device>
    -C:創建模式
      -n #:使用#個塊設備來創建此RAID;
      -l #:指明要創建的RAID的級別;
      -a {yes|no}:自動創建目標RAID設備的設備文件;
      -c CHUNK_SIZE:指明塊大小;
      -x #:指明空閑盤的個數;

    -D:顯示RAID詳細信息
    mdadm -D /dev/md#

    管理模式:

      -f:標記指定磁盤為損壞;
      -a:添加磁盤
      -r:移除磁盤
      -n#:使用#個塊設備來創建此RAID;

    4.2 RAID5創建實例
    4.2.1 使用mdadm命令,創建一個RAID5這列,要求有一塊空閑盤,塊(chunk)大小為1024KB;

[root@localhost ~]# mdadm /dev/md0 -C -n 3 -x 1 -a yes -c 1024 -l 5 /dev/sdb{8,9,10,11}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

    4.2.2 查看RAID創建進度

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid5 sdb10[4] sdb11[3](S) sdb9[1] sdb8[0]
      20963328 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [3/2] [UU_]
      [=====>...............]  recovery = 25.3% (2654452/10481664) finish=10.6min speed=12210K/sec

unused devices: <none>

    4.2.3 查看RAID詳細信息,下面狀態顯示RAID正在建設中,建好后狀態為clean;

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Aug 28 22:47:07 2015
     Raid Level : raid5                           #RAID類型
     Array Size : 20963328 (19.99 GiB 21.47 GB)   #可用空間
  Used Dev Size : 10481664 (10.00 GiB 10.73 GB)   #已經使用空間,這是RAID的特性,默認會有(N分之1)的磁盤空間用于存放奇偶校驗數據
   Raid Devices : 3                               #正在使用的磁盤數量
  Total Devices : 4                               #全部磁盤數量,包括熱備盤(空閑盤)
    Persistence : Superblock is persistent

    Update Time : Fri Aug 28 22:52:34 2015
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 1024K

 Rebuild Status : 37% complete                   #陣列創建進度

           Name : localhost:0  (local to host localhost)
           UUID : 7c8befd9:3e9304b6:574c2ee8:5cba5476
         Events : 7                              #下面信息是RAID里面每個磁盤的詳細信息

    Number   Major   Minor   RaidDevice State
       0       8       24        0      active sync   /dev/sdb8
       1       8       25        1      active sync   /dev/sdb9
       4       8       26        2      spare rebuilding   /dev/sdb10

       3       8       27        -      spare   /dev/sdb11

    4.2.5 將RAID中的/dev/sdb10人工設置為故障,查看/dev/sdb11空閑盤,是否會頂替上來并同步修復RAID;

[root@localhost ~]# mdadm  /dev/md0 -f /dev/sdb10
mdadm: set /dev/sdb10 faulty in /dev/md0
[root@localhost ~]# 
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Aug 28 22:47:07 2015
     Raid Level : raid5
     Array Size : 20963328 (19.99 GiB 21.47 GB)
  Used Dev Size : 10481664 (10.00 GiB 10.73 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Fri Aug 28 23:03:32 2015
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 1024K

 Rebuild Status : 2% complete

           Name : localhost:0  (local to host localhost)
           UUID : 7c8befd9:3e9304b6:574c2ee8:5cba5476
         Events : 20

    Number   Major   Minor   RaidDevice State
       0       8       24        0      active sync   /dev/sdb8
       1       8       25        1      active sync   /dev/sdb9
       3       8       27        2      spare rebuilding   /dev/sdb11  #空閑盤已經頂替故障盤

       4       8       26        -      faulty   /dev/sdb10  #人工設置改磁盤為故障盤成功
[root@localhost ~]#

    4.2.6 將故障磁盤從RAID5中移除

[root@localhost ~]# mdadm /dev/md0 -r /dev/sdb10
mdadm: hot removed /dev/sdb10 from /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Aug 28 22:47:07 2015
     Raid Level : raid5
     Array Size : 20963328 (19.99 GiB 21.47 GB)
  Used Dev Size : 10481664 (10.00 GiB 10.73 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Aug 28 23:10:43 2015
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 1024K

 Rebuild Status : 49% complete

           Name : localhost:0  (local to host localhost)
           UUID : 7c8befd9:3e9304b6:574c2ee8:5cba5476
         Events : 28                                    #sdb10已從RAID中移除

    Number   Major   Minor   RaidDevice State
       0       8       24        0      active sync   /dev/sdb8
       1       8       25        1      active sync   /dev/sdb9
       3       8       27        2      spare rebuilding   /dev/sdb11

    4.2.7 使用watch命令以1秒為頻率,刷新查看RAID建設進度;

[root@localhost ~]# watch -n1 'cat /proc/mdstat'   # -n:該參數可設置刷新頻率,我這里是每一秒刷新一次
Every 1.0s: cat /proc/mdstat                                                                                                Fri Aug 28 23:13:43 2015

Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid5 sdb11[3] sdb9[1] sdb8[0]
      20963328 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [3/2] [UU_]
      [=============>.......]  recovery = 69.8% (7325076/10481664) finish=4.2min speed=12276K/sec

unused devices: <none>

Every 1.0s: cat /proc/mdstat                                                                                                Fri Aug 28 23:13:54 2015

Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid5 sdb11[3] sdb9[1] sdb8[0]
      20963328 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [3/2] [UU_]
      [==============>......]  recovery = 71.1% (7457696/10481664) finish=4.1min speed=12246K/sec

unused devices: <none>

Every 1.0s: cat /proc/mdstat                                                                                                Fri Aug 28 23:14:02 2015

Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid5 sdb11[3] sdb9[1] sdb8[0]
      20963328 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [3/2] [UU_]
      [==============>......]  recovery = 71.9% (7540228/10481664) finish=4.0min speed=12071K/sec

unused devices: <none>

    4.2.8 將創建后的RAID5陣列格式化為ext4文件系統,標簽為backup,并將其開機掛載至/backup目錄;

[root@localhost ~]# mke2fs -t ext4 -L 'backup' /dev/md0    #格式為ext4,并設置標簽為backup
mke2fs 1.41.12 (17-May-2010)
文件系統標簽=backup
操作系統:Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=256 blocks, Stripe width=512 blocks
1310720 inodes, 5240832 blocks
262041 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=0
160 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

正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# blkid /dev/md0
/dev/md0: LABEL="backup" UUID="659e5e0a-2c9f-4594-ab0d-79f2fa4bc21a" TYPE="ext4" 

[root@localhost ~]# mkdir /backup
[root@localhost ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Jun  6 17:46:53 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=d9a42d69-b340-4919-a77c-f1558e13df64 /                       ext4    defaults        1 1
UUID=a8e05a48-5d7c-46ad-bcd8-f7f4e1f7d108 /boot                   ext4    defaults        1 2
UUID=6951543d-8f16-421e-a71d-f309de85ebeb /home                   ext4    defaults        1 2
UUID=02a750c9-4a3c-4579-a2f0-4c4ce05806bc /myshare                ext4    defaults        1 2
UUID=6835964f-44e4-4cdb-9a06-678484a11eeb swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
UUID=659e5e0a-2c9f-4594-ab0d-79f2fa4bc21a /backup                 ext4    defaults        0 0
~                                                                                                                                                   
~                                                                                                                                                   

:wq  

[root@localhost /]# mount -a
[root@localhost /]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.5G  4.2G  4.9G  46% /
tmpfs           250M   72K  250M   1% /dev/shm
/dev/sda1        93M   26M   63M  29% /boot
/dev/sda3       3.8G  8.6M  3.6G   1% /home
/dev/sr0        3.8G  3.8G     0 100% /media/cdrom
/dev/md0         20G   44M   19G   1% /backup         #已經掛載上

    4.2.9 刪除RAID

[root@localhost /]# umount /dev/md0       #1、首先取消掛載
[root@localhost /]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.5G  4.2G  4.9G  46% /
tmpfs           250M   72K  250M   1% /dev/shm
/dev/sda1        93M   26M   63M  29% /boot
/dev/sda3       3.8G  8.6M  3.6G   1% /home
/dev/sr0        3.8G  3.8G     0 100% /media/cdrom

[root@localhost /]# mdadm -S /dev/md0    #2、停止RAID,可以發現已經沒有md0了
mdadm: stopped /dev/md0
[root@localhost /]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory
[root@localhost /]# cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
unused devices: <none>

[root@localhost /]# ls /dev | grep md
md

    

原創文章,作者:Net21_仲樂,如若轉載,請注明出處:http://www.www58058.com/24534

(0)
Net21_仲樂Net21_仲樂
上一篇 2016-07-17
下一篇 2016-07-17

相關推薦

  • 權限解析

    一、文件權限        用戶的創建的每個文件,都有自己特定的屬性信息,比如文件類型,文件的權限,文件的所有者和所屬組,以及文件的修改日期等屬性組成。        文件的權限即是指文件本身賦予了用戶什么樣的權力,也就…

    2017-05-30
  • 【招聘福利】普景/上海/運維工程師/8K起/雙休/五險一金

    崗位要求:  經驗可無,要求熟悉LANMP、zabbix的配置和維護  了解SQL語句  熟悉shell、會python 更佳崗位職責:  1. 負責zabbix的配置和維護,發現問題及時處理(如果你是有經驗的童鞋,找出或者寫出如Centreon類的軟件優化郵…

    Linux干貨 2016-04-15
  • Linux命令總結

      1、登陸和開關機 ? ? ? 關機    halt    poweroff    init 0    重啟    reboot    init 6    shutdown    shutdown -r 重啟    shutodwn -h 關機    shutdown -c 取消計劃關機    shutdown +0 馬上關機    +1 一分鐘后關機  …

    2017-09-11
  • 馬哥網絡教育班第21期+第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 [root@CentOS6 ~]# cp -r /etc/skel /home/tuser1 [root@CentOS6 ~]# chmod&nb…

    Linux干貨 2016-07-29
  • FHS文件系統介紹及各目錄功能說明

     FHS文件系統介紹及各目錄功能說明 M21-陸東貴 FHS簡介 Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理…

    Linux干貨 2016-10-18
  • zabbix之報警功能的實現

    一、注冊微信公眾號 首先申請微信公眾平臺https://mp.weixin.qq.com/一個人最多申請5個公眾號,所以還是可以的 申請完之后就可以根據騰訊的提示使用微信公眾號了,然后用你自己的微信掃描關注微信號。 就可以看到用戶數了,接下來的就要使用的用戶的微信ID號了。點擊用戶查看用戶的微信ID號。在瀏覽器查看用戶的微信ID號。就是那個紅色的ID了。 h…

    2014-11-12

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-07-17 22:10

    寫的很好,排版也很漂亮,加油

欧美性久久久久