iT邦幫忙

DAY 19
6

邁向 RHCE 之路系列 第 19

邁向 RHCE 之路 (Day19) - Software RAID

  • 分享至 

  • xImage
  •  

實際環境應用上磁碟陣列可以概略區分為硬體式 (Hardware) 或軟體式 (Software) 磁碟陣列,通常使用於工作站或個人 PC 才會使用 Software RAID,功能簡單並且因為沒有硬體晶片協助資料處理,因此相關的所有運算負載皆落到主機上頭,除了影響資料存取的效能之外主機的整體效能也會受到影響,CentOS 作業系統內建支援 Software RAID 的建立,支援的類型有 RAID 0、1、4、5、6、10,其中只有 RAID 1 類型才能保護作業系統。不過在 CentOS 中 Software RAID 將採用如下機制以使 Software RAID 運好效能更好更穩定:
* 採用線程方式進行回復作業 (Threaded Rebuild Process)
* 基於核心 (Kernel-Based) 的方式進行設定
* 使用作業系統的閒置資源進行背景方式 RAID 重建作業
* 支援熱插拔 (Hot-Swappable)
* 自動使用 CPU 進行檢測及優化的動作 (CPU Detection and Optimizations)

下列將實作 Software RAID 5 + Hot Spare,如圖所示 (圖片來源: Complex RAID 5 Variations)

加入四顆 1GB 硬碟,其中 /dev/sdb、/dev/sdc、/dev/sdd 用來建立 Software RAID 5,而 Hot Spare 則由 /dev/sde 擔任,請使用「fdisk」指令對每四顆硬碟「sdb、sdc、sdd、sde」進行分割區及格式的設定,格式請設定為**「fd (Linux raid auto)」**,下列先以 /dev/sdb 為示範,當然全部硬碟都進行分割區設定完畢後,記得確認系統是否已經正確辨識到相關分割區資訊了。

#fdisk /dev/sdb        //每顆硬碟進行如下流程分割區設定
 n > p > 1 > enter > enter > t > fd > w
#cat /proc/partitions  //查看分割區資訊
 major    minor  #blocks name
   8        0   10485760 sda
   8        1     512000 sda1
   8        2    9972736 sda2
 253        0    7905280 dm-0
 253        1    2064384 dm-1
   8       16    1048576 sdb
   8       17    1048376 sdb1
   8       32    1048576 sdc
   8       33    1048376 sdc1
   8       48    1048576 sdd
   8       49    1048376 sdd1
   8       64    1048576 sde
   8       65    1048376 sde1

接著使用「mdadm」指令搭配參數建立 Software RAID,參數說明如下:
-C: 初始化 Software RAID 裝置 (從 0 開始)
-l: 建立 Software RAID Level (所以 -l 5 表示建立 RAID 5)
-n: 建立 Software RAID 硬碟數量
-x: 指定 Hot Spare 硬碟數量及裝置代號

#mdadm -C /dev/md0 -l 5 -n 3 /dev/sd{b,c,d}1 -x 1 /dev/sde1
 mdadm: Defaulting to version 1.2 metadata
 mdadm: array /dev/md0 started.
#cat /proc/mdstat  //查看 Software RAID 進度 (S 表示 Hot Spare)
 Personalities : [raid6] [raid5] [raid4]
 md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
   2096128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
   [=======>.............]  recovery = 35.3% (370320/1048064) finish=0.2min speed=46290K/sec

接著將建立好的 Software RAID 裝置進行格式化及掛載的動作:

#mkfs.ext4 -L raid5 /dev/md0
 mke2fs 1.41.12 (17-May-2010)
 ...略...
#mkdir /raid5
#mount /dev/md0 /raid5
#df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg_centos6-lv_root
                       7.5G  2.1G  5.0G  30% /
 tmpfs                 504M  436K  504M   1% /dev/shm
 /dev/sda1             485M   29M  431M   7% /boot
 /dev/md0              2.0G   35M  1.9G   2% /raid5   //掛載成功

此時 Software RAID 運作正常時的動態,以便等一下可以跟有硬碟損壞時進行比較:

#cat /proc/mdstat         //查看 Software RAID 資訊
 Personalities : [raid6] [raid5] [raid4]
 md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      2096128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
#mdadm --detail /dev/md0  //查看 Software RAID 資訊
 /dev/md0:
         Version : 1.2
   Creation Time : Mon Oct 24 13:59:05 2011
      Raid Level : raid5
      Array Size : 2096128 (2047.34 MiB 2146.44 MB)
   Used Dev Size : 1048064 (1023.67 MiB 1073.22 MB)
    Raid Devices : 3
   Total Devices : 4
     Persistence : Superblock is persistent
     Update Time : Mon Oct 24 14:02:22 2011
           State : clean
  Active Devices : 3
 Working Devices : 4
  Failed Devices : 0
   Spare Devices : 1
          Layout : left-symmetric
      Chunk Size : 512K
            Name : Centos6.weithenn.org:0  (local to host Centos6.weithenn.org)
            UUID : b19c810a:0a2203f3:0550a8cc:3dc22992
          Events : 18
    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

接著模擬 /dev/sdd 硬碟損壞的情況,使用參數**「--fail」指令 Software RAID 中哪顆成員硬碟損壞,並且再使用參數「--remove」後才表示可以把該硬碟正常卸載後換上新硬碟,最後使用參數「--add」**加入,而加入的硬碟則成為 Hot Spare 硬碟 (因為本來的 Hot Spare 已經接手)。

#mdadm --fail /dev/md0 /dev/sdd1   //sdd 硬碟損壞
 mdadm: set /dev/sdd1 faulty in /dev/md0
#cat /proc/mdstat                  //sde 馬上接手 (Hot Spare 機制運作)
 Personalities : [raid6] [raid5] [raid4]
 md0 : active raid5 sdd1[4](F) sde1[3] sdc1[1] sdb1[0]
      2096128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [===========>.........]  recovery = 55.3% (580248/1048064) finish=0.1min speed=44634K/sec
#mdadm --detail /dev/md0   //僅列出與正常狀況時不同之處
 /dev/md0:
 Working Devices : 3
  Failed Devices : 1
   Spare Devices : 0
          Events : 37
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       65        2      active sync   /dev/sde1
       4       8       49        -      faulty spare  /dev/sdd1
#mdadm --remove /dev/md0 /dev/sdd1   //可拔出 sdd 硬碟
 mdadm: hot removed /dev/sdd1 from /dev/md0
 You have new mail in /var/spool/mail/root
#mdadm --add /dev/md0 /dev/sdd1      //將新硬碟加入為成員硬碟
 mdadm: re-added /dev/sdd1
#cat /proc/mdstat                    //目前 Hot Spare 為 sdd
 Personalities : [raid6] [raid5] [raid4]
 md0 : active raid5 sdd1[4](S) sde1[3] sdc1[1] sdb1[0]
      2096128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

----- 定期檢查 Software RAID 狀態 -----
我們可以撰寫一個簡單的 Shell Script,使系統每天執行定期排程時順便檢查 Software RAID 狀態,並將狀態結果寄給管理者,如下我們建立「check-raid.sh」腳本檔案於**「/etc/cron.daily」**,並且給予 755 的檔案權限設定,之後每天就可以定期收到檢查 Software RAID 狀態 Mail。

#cat /etc/cron.daily/check-raid.sh
  #!/bin/sh
  /sbin/mdadm --monitor --oneshot --test --mail=weithenn@weithenn.org /dev/md
#chmod 755 /etc/cron.daily/check-raid.sh


(上一篇)邁向 RHCE 之路 (Day18) - Disk Quota 機制
(下一篇)邁向 RHCE 之路 (Day20) - 邏輯磁碟管理員 LVM
邁向 RHCE 之路系列文章連結


上一篇
邁向 RHCE 之路 (Day18) - Disk Quota 機制
下一篇
邁向 RHCE 之路 (Day20) - 邏輯磁碟管理員 LVM
系列文
邁向 RHCE 之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言