RAID解說

RAIDRedundant
Arrays of Inexpensive Disks
,RAID),又叫獨立的磁盤陣列。有“價格便宜具有冗余能力的磁盤陣列”之意。原理是利用數組方式來作磁盤組,配合數據分散排列的設計,提升數據的安全性。磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任一顆硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算后重新置入新硬盤中。既可以擴大硬盤的容量,選擇性提高磁盤的性能,如,讀、寫、冗余能力等。

一、基礎知識

RAID技術主要包含RAID 0RAID 7等數個規范,它們的側重點各不相同,常見的規范有如下幾種:

RAID 0:連續以位或字節為單位分割數據,并行讀/寫于兩個以上的磁盤,突破原有物理硬盤的容量,硬盤使用空間近100%,因此具有很高的數據傳輸率,但它沒有數據冗余。 RAID 0只是單純地提高性能,并沒有為數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0不能應用于數據安全性要求高的場合。

RAID解說

RAID 1:它是通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。

RAID解說

RAID 2:將數據條塊化地分布于不同的硬盤上,條塊單位為位或字節,并使用稱為“加重平均糾錯碼(海明碼)”的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜,因此在商業環境中很少使用。

RAID 3:它同RAID 2非常類似,都是將數據條塊化分布于不同的硬盤上,區別在于RAID 3使用簡單的奇偶校驗,并用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據;如果奇偶盤失效則不影響數據使用。RAID 3對于大量的連續數據可提供很好的傳輸率,但對于隨機數據來說,奇偶盤會成為寫操作的瓶頸。

RAID解說

RAID 4:RAID 4同樣也將數據條塊化并分布于不同的磁盤上,但條塊單位為塊或記錄。RAID 4使用一塊磁盤作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業環境中也很少使用。

RAID解說

RAID 5:RAID 5不單獨指定的奇偶盤,而是在所有磁盤上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合于小數據塊和隨機讀寫的數據。

RAID解說

RAID 3RAID 5相比,最主要的區別在于RAID
3
每進行一次數據傳輸就需涉及到所有的陣列盤;而對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作,并可進行并行操作。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。

RAID 6:RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁盤空間,相對于RAID 5有更大的“寫損失”,因此“寫性能”非常差。較差的性能和復雜的實施方式使得RAID 6很少得到實際應用。

RAID解說

RAID 7:這是一種新的RAID標準,其自身帶有智能化實時操作系統和用于存儲管理的軟件工具,可完全獨立于主機運行,不占用主機CPU資源。RAID 7可以看作是一種存儲計算機(Storage Computer),它與其他RAID標準有明顯區別。除了以上的各種標準,我們可以如RAID 0+1那樣結合多種RAID規范來構筑所需的RAID陣列,例如RAID 5+3(RAID 53)就是一種應用較為廣泛的陣列形式。用戶一般可以通過靈活配置磁盤陣列來獲得更加符合其要求的磁盤存儲系統,其官網為http://www.raid7.com/。

RAID 0+1: 也被稱為RAID 10標準,又區分RAID
1+0
RAID0+1,實際是將RAID 0RAID 1標準結合的產物,在連續地以位或字節為單位分割數據并且并行讀/寫多個磁盤的同時,為每一塊磁盤作磁盤鏡像進行冗余。它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU占用率同樣也更高,而且磁盤的利用率比較低。RAID1+0的讀性能高于RAID 0+1。

RAID解說

RAID5+0RAID5RAID0的結合。此配置在RAID5的子磁盤組的每個磁盤上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁盤組要求三個硬盤。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁盤出現故障,而不會造成數據丟失。而且因為奇偶位分部于RAID5子磁盤組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁盤故障會影響吞吐量。故障后重建信息的時間比鏡像配置情況下要長。

 RAID解說

二、創建RAID

         面向個人用戶的IDE-RAID芯片一般只提供了RAID 0RAID 1RAID 01,RAID 10RAID規范的支持,雖然它們在技術上無法與商用系統相提并論,但是對普通用戶來說其提供的速度提升和安全保證已經足夠了。下面在VMware虛擬機上centos 7系統對六塊容量相同的硬盤進行對RAID10進行模擬創建。

1查看硬盤情況

[root@localhost
~]# lsblk                 

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda           8:0    0  
20G  0 disk

├─sda1        8:1   
0    1G  0 part /boot

└─sda2        8:2   
0   19G  0 part

  ├─cl-root 253:0    0  
17G  0 lvm  /

  └─cl-swap 253:1    0   
2G  0 lvm  [SWAP]

sdb           8:16   0  
20G  0 disk

sdc           8:32   0  
20G  0 disk

sdd           8:48   0  
20G  0 disk

sde           8:64   0  
20G  0 disk

sdf           8:80   0  
20G  0 disk

sdg           8:96   0  
20G  0 disk

2.創建RAID10

利用五塊20G的硬盤構建REAID10,構建完成后出現一個40G的邏輯空間使用。其中四塊作為RAID10的主要盤,一快備用,當四塊盤中一塊出現故障,備用盤立刻接替故障盤的任務。并快速恢復原有性能,業務中途不會終止,剩下的一塊模擬熱拔插。

[root@localhost
~]# mdadm -C -a yes /dev/md10  -l 10 -n 4
-x 1 /dev/sd{b,c,d,e,f}

mdadm:
Defaulting to version 1.2 metadata

mdadm: array
/dev/md10 started.

         -C 創建模式

-a yes /dev/md10             #自動創建目標RAID設備文件/dev/md10

-l 10                               #指明要創建的RAID的級別為10

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

-x 1                                #指定空閑盤個數為1

/dev/sd{b,c,d,e,f}            #指明哪5個塊設備來運用于此RAID

3.查看RAID情況

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid10]

md10 : active raid10 sdf[4](S) sde[3]
sdd[2] sdc[1] sdb[0]

     
41910272 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

     

unused devices: <none>

此時,RAID10創建成功。

        

         如果需要查看此RAID10的詳細情況,操作一下步驟。

[root@localhost
~]# mdadm -D /dev/md10

/dev/md10:

        Version : 1.2

  Creation Time : Tue Mar 14 15:17:29 2017

     Raid Level : raid10

    Array Size : 41910272 (39.97 GiB 42.92 GB)

  Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

   Raid Devices : 4

  Total Devices : 5

    Persistence : Superblock is persistent

 

    Update Time : Tue Mar 14 15:20:59 2017

          State : clean

 Active Devices : 4

Working Devices
: 5

 Failed Devices : 0

  Spare Devices : 1

 

         Layout : near=2

     Chunk Size : 512K

 

           Name : localhost.localdomain:10  (local to host localhost.localdomain)

           UUID :
c4794587:759a1d50:13ff6af2:75a62763

         Events : 17

 

    Number  
Major   Minor   RaidDevice State

       0      
8       16        0     
active sync set-A   /dev/sdb

       1      
8       32        1     
active sync set-B   /dev/sdc

       2      
8       48        2     
active sync set-A   /dev/sdd

       3      
8       64        3     
active sync set-B   /dev/sde

 

       4      
8       80        –     
spare   /dev/sdf

 

4.格式化RAID10

         [root@localhost ~]# mkfs.ext4 /dev/md10

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

Stride=128 blocks, Stripe width=256 blocks

2621440 inodes, 10477568 blocks

523878 blocks (5.00%) reserved for the
super user

First data
block=0

Maximum filesystem blocks=2157969408

320 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

 

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem
accounting information: done

 

5.創建掛載點并掛載在掛載點

[root@localhost ~]# mkdir /cpp && mount /dev/md10 /cpp

 

6.查看空間使用率

         [root@localhost cpp]# lsblk

NAME       
MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT

sda           8:0    0  
20G  0 disk  

├─sda1        8:1    0   
1G  0 part   /boot

└─sda2        8:2    0  
19G  0 part  

  ├─cl-root
253:0    0   17G  0
lvm    /

  └─cl-swap 253:1    0   
2G  0 lvm    [SWAP]

sdb           8:16   0  
20G  0 disk  

└─md10     9:10  
0   40G  0 raid10 /cpp

sdc           8:32   0  
20G  0 disk  

└─md10     9:10  
0   40G  0 raid10 /cpp

sdd           8:48   0  
20G  0 disk  

└─md10     9:10   0  
40G  0 raid10 /cpp

sde           8:64   0  
20G  0 disk  

└─md10     9:10   0  
40G  0 raid10 /cpp

sdf           8:80   0  
20G  0 disk  

└─md10     9:10   0  
40G  0 raid10 /cpp

sdg           8:96   0  
20G  0 disk

至此,創建RAID1040G空間就可以開始使用。

 

三、故障處理

         隨著時間的推移,RAID10設備中的硬盤可能會出現故障可能會出現。

 

方案一:

增加多塊同樣容量的空閑盤,防止使用中的硬盤損壞導致業務中斷。

         1.查看可以增加的硬盤情況

[root@localhost
~]# lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE  
MOUNTPOINT

sda           8:0    0  
20G  0 disk  

├─sda1        8:1   
0    1G  0 part  
/boot

└─sda2        8:2   
0   19G  0 part  

  ├─cl-root 253:0    0  
17G  0 lvm    /

  └─cl-swap 253:1    0   
2G  0 lvm    [SWAP]

sdb           8:16   0  
20G  0 disk  

└─md10        9:10  
0   40G  0 raid10 /cpp

sdc           8:32   0  
20G  0 disk  

└─md10        9:10  
0   40G  0 raid10 /cpp

sdd           8:48   0  
20G  0 disk  

└─md10        9:10  
0   40G  0 raid10 /cpp

sde           8:64   0  
20G  0 disk  

└─md10        9:10  
0   40G  0 raid10 /cpp

sdf           8:80   0  
20G  0 disk  

└─md10        9:10  
0   40G  0 raid10 /cpp

sdg           8:96   0  
20G  0 disk  

sdh           8:112  0  
20G  0 disk  

sdi           8:128  0  
20G  0 disk  

sr0          11:0    1 1024M 
0 rom   

2.增加/dev/sdg/dev/sdh/dev/md10中作為備用盤

 [root@localhost ~]# mdadm /dev/md10 -a
/dev/sd{g,h}

mdadm: added
/dev/sdg

mdadm: added
/dev/sdh

3.查看增加情況;

[root@localhost
~]# mdadm -D /dev/md10

/dev/md10:

        Version : 1.2

  Creation Time : Tue Mar 14 15:17:29 2017

     Raid Level : raid10

     Array Size : 41910272 (39.97 GiB 42.92 GB)

  Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

   Raid Devices : 4

  Total Devices : 7

    Persistence : Superblock is persistent

 

    Update Time : Tue Mar 14 16:13:26 2017

          State : clean

 Active Devices : 4

Working Devices
: 7

 Failed Devices : 0

  Spare Devices : 3

 

         Layout : near=2

     Chunk Size : 512K

 

           Name : localhost.localdomain:10  (local to host localhost.localdomain)

           UUID :
c4794587:759a1d50:13ff6af2:75a62763

         Events : 19

 

    Number  
Major   Minor   RaidDevice State

       0      
8       16        0     
active sync set-A   /dev/sdb

       1      
8       32        1     
active sync set-B   /dev/sdc

       2      
8       48        2     
active sync set-A   /dev/sdd

       3      
8       64        3     
active sync set-B   /dev/sde

 

       4      
8       80        –     
spare   /dev/sdf

       5      
8       96        –     
spare   /dev/sdg

       6      
8      112        –     
spare   /dev/sdh

 

模擬RAID10/dev/sdb損壞并移除添加/dev/sdiRAID中;

[root@localhost
app]# mdadm /dev/md10 -f /dev/sdb -r /dev/sdb -a /dev/sdi

mdadm: set
/dev/sdb faulty in /dev/md10

mdadm: hot
removed /dev/sdb from /dev/md10

mdadm: added
/dev/sdi

檢查其效果;

[root@localhost
app]# mdadm  /dev/md10

/dev/md10:
39.97GiB raid10 4 devices, 3 spares. Use mdadm –detail for more detail.

 

方案二:

         擴大RAID10的容量,為存放更多數據提供空間。建議在業務不繁忙的時候進行操作,防止磁盤同步數據,降低其他性能。

直接將使用備用盤擴展RAID10容量,由于是RAID10,至少需要倍數的20G硬盤。

接方案一往下進行操作:

# mdadm –grow
–raid-devices=6  /dev/md10

查看狀態:

[root@localhost
app]# mdadm –detail /dev/md10

/dev/md10:

        Version : 1.2

  Creation Time : Tue Mar 14 15:17:29 2017

     Raid Level : raid10

     Array Size : 41910272 (39.97 GiB 42.92 GB)

  Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

   Raid Devices : 6

  Total Devices : 7

    Persistence : Superblock is persistent

 

    Update Time : Tue Mar 14 16:46:59 2017

          State : clean, reshaping

 Active Devices : 6

Working Devices
: 7

 Failed Devices : 0

  Spare Devices : 1

 

         Layout : near=2

     Chunk Size : 512K

 

 Reshape Status : 3% complete

  Delta Devices : 2, (4->6)

 

           Name : localhost.localdomain:10  (local to host localhost.localdomain)

           UUID : c4794587:759a1d50:13ff6af2:75a62763

         Events : 72

 

    Number  
Major   Minor   RaidDevice State

       6      
8      112        0     
active sync set-A   /dev/sdh

       1      
8       32        1     
active sync set-B   /dev/sdc

       2      
8       48        2     
active sync set-A   /dev/sdd

       3      
8       64        3     
active sync set-B   /dev/sde

       7      
8      128        4     
active sync set-A   /dev/sdi

       5      
8       96        5     
active sync set-B   /dev/sdg

 

       4      
8       80        –     
spare   /dev/sdf

動態查看數據同步情況:
[root@localhost app]# watch -n1 cat /proc/mdstat

正在同步中:

Personalities :
[raid10]

md10 : active
raid10 sdi[7] sdg[5] sdf[4](S) sdh[6] sde[3] sdc[1] sdd[2]

      41910272 blocks super 1.2 512K chunks 2
near-copies [6/6] [UUUUUU]

      [=>……………….]  reshape = 
7.3% (3069440/41910272) finish=26.5min speed=24378K/sec

     

unused devices:
<none>

 

Every 10.0s: cat
/proc/mdstat                                        Tue Mar
14 17:44:50 2017

 

同步完成:

Personalities :
[raid10]

md10 : active
raid10 sdi[7] sdg[5] sdf[4](S) sdh[6] sde[3] sdc[1] sdd[2]

      62865408 blocks super 1.2 512K chunks 2
near-copies [6/6] [UUUUUU]

 

unused devices:
<none>

 

重讀文件

[root@localhost
app]# resize2fs /dev/md10

resize2fs 1.42.9
(28-Dec-2013)

Filesystem at
/dev/md10 is mounted on /app; on-line resizing required

old_desc_blocks
= 5, new_desc_blocks = 8

The filesystem
on /dev/md10 is now 15716352 blocks long

 

查看RAID10擴容情況:

[root@localhost
app]# lsblk /dev/md10

NAME MAJ:MIN RM
SIZE RO TYPE   MOUNTPOINT

md10   9:10  
0  60G  0 raid10 /app

至此,擴容完成。

 

 

 

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

(0)
chenbinchenbin
上一篇 2017-03-14
下一篇 2017-03-15

相關推薦

  • day5總結筆記

    本文內容: 索引節點 硬鏈接與軟鏈接 重定向 用戶組 useradd命令 索引節點: 索引節點包含了一個表,包含了有關文件的元數據,包含:     文件類型,權限,UID,GID 鏈接數(指向這個文件名路徑名稱個數)      該文件的大小和不同的時間戳。&n…

    系統運維 2016-08-08
  • 初識shell腳本編程

    shell的編程三種分類方式介紹,如何使用nano命令編寫一個腳本命令,及腳本命令運行的2種方式。bash的配置文件及系統啟動時加載配置文件的順序流程

    2017-12-14
  • 如何使用正則表達式

    正則表達式(Regular Expression)就是使用簡單的字符按照預先設定的規則來完成復雜的功能,說白了,正則表達式是一種字符串的匹配方式,就是用預先設定好的規則來描述我們想要表達的內容,它是由普通字符以及元字符組成的字符串,其中元字符不表示本身的意義,而是用于表達控制或通配等功能。 為什么要用這個東西那,我想,每一個學習計算機的人都應該明白,計算機就…

    Linux干貨 2015-10-27
  • N22-第九周作業

    第九周    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;    #!/bin/bash    #    decl…

    Linux干貨 2016-10-24
  • 馬哥教育網絡班21期-第三周課程練習

    第三周課程練習 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -f1 -d' ' | uniq  root 2、取出最后登錄到當前系統的用…

    Linux干貨 2016-07-12
  • Mariadb數據庫復制系列(三):半同步復制

       實驗三:半同步復制的實現 默認情況下,主從復制的結構中,主從節點之間復制操作是異步的,這樣就有可能造成主從節點之間數據不一致的情況發生,所謂版同步復制就是指在一主多從的場景中,我們設定主節點與其中一個或多個從節點(一般是一個)的數據復制是同步進行的,從而保證了該從節點和主節點之間的數據的一致性。故當主節點發生故障時,就可以基于其他方式將該從節點提升為主…

    Linux干貨 2016-11-24

評論列表(2條)

  • 馬哥教育
    馬哥教育 2017-03-20 09:14

    總結的很不錯哦,操作部分有點亂,可以細心整理一下哦

欧美性久久久久