Linux中配置RAID及詳解

博文大綱

什麼是RAID
Software,hardware RAID
軟件磁盤陣列的設置
仿真RAID錯誤的救援模式
開機自動啓動RAID並自動掛載

1.什麼是RAID:

1.磁盤陣列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容錯式廉價磁盤陣列。

2.RAID 可以通過一個技術(軟件或硬件),將多個較小的磁盤整合成爲一個較大的磁盤設備;而這個較大的磁盤功能可不止是儲存而已,他還具有數據保護的功能呢。

3.整個 RAID 由於選擇的等級(level)不同,而使得整合後的磁盤具有不同的功能

  • RAID-0(等量模式,stripe):性能最佳

這種模式如果使用相同型號與容量的磁盤來組成時,效果較佳。
這種模式的 RAID 會將磁盤先切出等量的區塊(名爲chunk,一般可設置 4K~1M 之間),然後當一個文件要寫入 RAID 時,該文件會依據 chunk 的大小切割好,之後再依序放到各個磁盤裏面去。
由於每個磁盤會交錯的存放數據,因此當你的數據要寫入 RAID 時,數據會被等量的放置在各個磁盤上面。
Linux中配置RAID及詳解

  • RAID-1(映射模式,mirror):完整備份

這種模式也是需要相同的磁盤容量的,最好是一模一樣的磁盤。
如果是不同容量的磁盤組成 RAID-1 時,那麼總容量將以最小的那一顆磁盤爲主!這種模式主要是“讓同一份數據,完整的保存在兩顆磁盤上頭”
舉例來說,如果我有一個 100MB 的文件,且我僅有兩顆磁盤組成 RAID-1 時,那麼這兩顆磁盤將會同步寫入 100MB 到他們的儲存空間去。因此,整體 RAID 的容量幾乎少了 50%。由於兩顆硬盤內容一模一樣,好像鏡子映照出來一樣,所以我們也稱他爲 mirror 模式

Linux中配置RAID及詳解

由於兩顆磁盤內的數據一模一樣,所以任何一顆硬盤損毀時,你的數據還是可以完整的保留下來的!
最大優點 備份

  • RAID 1+0,RAID 0+1(結合使用)

RAID-0 的性能佳但是數據不安全,RAID-1 的數據安全但是性能不佳,那麼能不能將這兩者整合起來設置 RAID 呢?
RAID 1+0 就是:
(1)先讓兩顆磁盤組成 RAID 1,並且這樣的設置共有兩組;
(2)將這兩組 RAID 1 再組成一組 RAID 0。這就是 RAID 1+0
RAID 0+1 就是:
(1)先讓兩顆磁盤組成RAID 0,並且這樣的設置共有兩組;
(2) 將這兩組RAID 0 再組成一組RAID 1 。這就是RAID 0+1

Linux中配置RAID及詳解

  • RAID5:性能與數據備份的均衡考慮

RAID-5 至少需要三顆以上的磁盤才能夠組成這種類型的磁盤陣列。
這種磁盤陣列的數據寫入有點類似 RAID-0 ,不過每個循環的寫入過程中(striping),在每顆磁盤還加入一個同位檢查數據(Parity),這個數據會記錄其他磁盤的備份數據,用於當有磁盤損毀時的救援。

Linux中配置RAID及詳解

每個循環寫入時,都會有部分的同位檢查碼(parity)被記錄起來,並且記錄的同位檢查碼每次都記錄在不同的磁盤,因此,任何一個磁盤損毀時都能夠藉由其他磁盤的檢查碼來重建原本磁盤內的數據喔!不過需要注意的是,由於有同位檢查碼,因此 RAID 5 的總容量會是整體磁盤數量減一顆。
原本的 3 顆磁盤只會剩下(3-1)=2 顆磁盤的容量。
當損毀的磁盤數量大於等於兩顆時,這整組 RAID 5 的數據就損毀了。因爲 RAID 5 默認僅能支持一顆磁盤的損毀情況

讀取性能:優
寫入性能:一般
RAID5 :支持1顆損壞
RAID6 :支持2顆損壞
  • Spare Disk:預備磁盤的功能:

爲了讓系統可以實時的在壞掉硬盤時主動的重建,因此就需要預備磁盤(spare disk)的輔助。所謂的 spare disk 就是一顆或多顆沒有包含在原本磁盤陣列等級中的磁盤,這顆磁盤平時並不會被磁盤陣列所使用,當磁盤陣列有任何磁盤損毀時,則這顆 spare disk 會被主動的拉進磁盤陣列中,並將壞掉的那顆硬盤移出磁盤陣列!然後立即重建數據系統。


當磁盤陣列的磁盤損毀時,就得要將壞掉的磁盤拔除,然後換一顆新的磁盤。

  • 磁盤陣列的優點:
  1. 數據安全與可靠性:指的並非網絡信息安全,而是當硬件(指磁盤)損毀時,數據是否還能夠安全的救援或使用之意;
  2. 讀寫性能:例如 RAID 0 可以加強讀寫性能,讓你的系統 I/O 部分得以改善;
  3. 容量:可以讓多顆磁盤組合起來,故單一文件系統可以有相當大的容量。

Linux中配置RAID及詳解

Software,hardware RAID:

系統資源,比如說 CPU 的運算與 I/O 總線的資源等。不過目前我們的個人計算機實在已經非常快速了,因此以前的速度限制現在已經不存在!
我們的 CentOS 提供的軟件磁盤陣列爲 mdadm 這套軟件,這套軟件會以 partition 或 disk 爲磁盤的單位,也就是說,你不需要兩顆以上的磁盤,只要有兩個以上的分區(partition)就能夠設計你的磁盤陣列了。
此外, mdadm 支持剛剛我們前面提到的RAID0/RAID1/RAID5/spare disk 等!而且提供的管理機制還可以達到類似熱拔插的功能,可以線上(文件系統正常使用)進行分區的抽換

軟件磁盤陣列的設置:

Linux中配置RAID及詳解

配置RAID
(給服務器添加一塊硬盤,創建5個分區(也可以添加5塊硬盤每塊一個分區))

1.[root@localhost ~]# gdisk /dev/sdb   //進入硬盤

Creating new GPT entries.

Command (? for help): n   //創建分區
Partition number (1-128, default 1): 1   //默認爲1
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G   //大小爲1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'
按照上面一樣配置再建立4塊分區
Command (? for help): p         //查看分區表信息
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A978C77-4505-4345-ABEC-AE3C31214C6D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 31457213 sectors (15.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         4196351   1024.0 MiB  8300  Linux filesystem
   3         4196352         6293503   1024.0 MiB  8300  Linux filesystem
   4         6293504         8390655   1024.0 MiB  8300  Linux filesystem
   5         8390656        10487807   1024.0 MiB  8300  Linux filesystem

Command (? for help): wq   //保存退出
[root@localhost ~]#  mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-e]1
命令參數:
--create    #表示要創建raid
--auto=yes /dev/md0   #新建立的軟件磁盤陣列設備爲md0,md序號可以爲0-9
--level=5   #磁盤陣列的等級,這裏表示創建是的raid5
--raid-devices     #添加作爲磁盤陣列用的磁盤的塊數
--spare-devices   #添加作爲預備(spare)磁盤的塊數
/dev/sd[b-f]1   #磁盤陣列所使用的設備,還可寫成/dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1  
[root@localhost ~]# cat /proc/mdstat             #查看RAID的配置文件
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2** [3/3] [UUU]**

unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0             #查看RAID配置文件詳細信息
/dev/md0:
        Version : 1.2
  Creation Time : Sun Jun 30 10:43:20 2019
  **   Raid Level : raid5**                                   #陣列類型爲raid5

                                             …………              #省略部分內容

 Active Devices : 3                 #活躍的磁盤數目
Working Devices : 4               #所有的磁盤數目
 Failed Devices : 0                  #故障的磁盤數目
  Spare Devices : 1                 #熱備份的磁盤數目
Number   Major   Minor   RaidDevice State
   0       8       17        0      active sync   /dev/sdb1
   1       8       33        1      active sync   /dev/sdc1
   4       8       49        2      active sync   /dev/sdd1

   3       8       65        -      spare   /dev/sde1       #一塊磁盤用於熱備份
[root@localhost ~]# mkfs.xfs /dev/md0
#格式化磁盤
[root@localhost ~]# mkdir /a
[root@localhost ~]# mount /dev/md0 /a
#掛載磁盤
[root@localhost ~]# df -hT              #查看磁盤大小

                            …………                #省略部分內容

/dev/md0            xfs        40G   33M   40G    1% /a
 [root@localhost ~]# vim /etc/fstab                  #編寫文件開機自動掛載               

                                …………                #省略部分內容

/dev/md0                /a                      xfs     defaults        0 0
[root@localhost ~]# cd /a
[root@localhost a]# touch 123.txt  456.txt                #創建測試文件
[root@localhost a]# mdadm /dev/md0 -f /dev/sdb1      #模擬sdb1損壞
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@localhost a]# mdadm -D /dev/md0                  #查看/dev/md0詳細信息

                   …………               #省略部分內容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      spare rebuilding   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       0       8       17        -      faulty   /dev/sdb1
[root@localhost a]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[4] sde1[3] sdc1[1] sdb1[0](F)
      41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [**3/3] [UUU]**

unused devices: <none>
[root@localhost a]# ll                     #查看測試的文件
總用量 0
-rw-r--r--. 1 root root 0 6月  30 11:06 123.txt
-rw-r--r--. 1 root root 0 6月  30 11:06 456.txt
[root@localhost a]# mdadm /dev/md0 -r /dev/sdb1                        #移除已損壞的磁盤
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost a]# mdadm -D /dev/md0                               #查看/dev/md0詳細信息

                                                                                 …………               #省略部分內容

   Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1
[root@localhost a]# mdadm /dev/md0 -a /dev/sdb1                      #添加一塊硬盤
mdadm: added /dev/sdb1
[root@localhost a]# mdadm -D /dev/md0                           #查看/dev/md0詳細信息

服務器再添加一塊磁盤,重啓之後再加上:


[root@localhost a]# mdadm /dev/md0 -a /dev/sdf1
mdadm: added /dev/sdf1
[root@localhost a]# mdadm -D /dev/md0

                                                                                 …………               #省略部分內容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       5       8       17        -      spare   /dev/sdb1
       6       8       81        -      spare   /dev/sdf1
[root@localhost a]# mdadm /dev/md0 -G -n4
#-n用來指定raid中活動盤的數量。最好保證要有足夠的熱備盤添加。
[root@localhost a]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Jun 30 10:43:20 2019
     Raid Level : raid5
     Array Size : 41908224 (39.97 GiB 42.91 GB)                        #磁盤容量已將發生變化
  Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Sun Jun 30 11:22:00 2019
          State : clean         #構建完成

                                                …………         #省略部分內容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1
       6       8       81        3      active sync   /dev/sdf1

       5       8       17        -      spare   /dev/sdb1
    #此時raid中已經由四塊硬盤了
[root@localhost a]# df -hT                                       #查看之後,容量並沒有發生變化
                         …………         #省略部分內容
/dev/md0            xfs        40G   33M   40G    1% /a
[root@localhost a]# resize2fs /dev/md0
#(resizefx適用於ext3,ext4等文件系統不適用於xfs文件系統)
#resize2fs命令用於更新磁盤
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 當嘗試打開 /dev/md0 時
找不到有效的文件系統超級塊.
[root@localhost a]# xfs_growfs /dev/md0                            #對文件系統進行擴容
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 10475520 to 15715584
[root@localhost a]# df -hT
文件系統            類型      容量  已用  可用 已用% 掛載點

                      …………                   #省略部分內容

/dev/md0            xfs        60G   33M   60G    1% /a
#再次查看容量已經發生變化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章