LPIC201/202 あずき本 ch5 高度なストレージ管理 (1/3)

LPIC201勉強メモ資格勉強

出典: 

5.1 RAID

RAID: Redundant Arrays of Inexpensive Disks

5.1.1 RAIDの概要

種類

  • ソフトウェアRAID

    • カーネル2.4移行
  • ハードウェアRAID

    • 専用のハードウェア
    • LinuxからはSCSIディスクに見える

RAID0(ストライピング)

redundantじゃないやつ

RAID1(ミラーリング)

同じ内容を書き込む

RAID4

3台〜

  • 2: ストライピング
  • 1: パリティ

特徴

  • 1台壊れても大丈夫
  • パリティ情報書き込みボトルネック

RAID5

3台〜

  • RAID4とは異なり、パリティ専用ディスクというのはない
  • 各ディスクにパリティ情報を散らす

Column: その他のRAIDレベル

RAID LINEAR

ディスクを論理的に結合して大きく見せる

RAID0+1(RAID01)

ストライピング構成をミラーリングする

(
  (A,B,C,D)
  (A,B,C,D)
)
(
  (x,B,C,D)
  (A,B,x,D)
)

全てのミラーのうち1台ずつぶっ壊れたら終わり

RAID1+0(RAID10)

ミラーリング構成をストライピングする

(
  (A,A)
  (B,B)
  (C,C)
  (D,D)
)
(
  (A,A)
  (x,x)
  (C,C)
  (D,D)
)

あるストライプを構成するミラーが全部ぶっ壊れたら終わり

(
  (A,x)
  (x,B)
  (C,x)
  (x,D)
)

これはセーフ

RAID6

RAID5 + 垂直パリティも

5.1.2 RAIDの構築と運用

ディスク3枚用意する(ループバック)

dd if=/dev/zero of=~/fs/loop0 bs=1M count=1024
dd if=/dev/zero of=~/fs/loop1 bs=1M count=1024
dd if=/dev/zero of=~/fs/loop2 bs=1M count=1024

sudo losetup /dev/loop0 ~/fs/loop0
sudo losetup /dev/loop1 ~/fs/loop1
sudo losetup /dev/loop2 ~/fs/loop2

RAID構築

  • -C,--create: CREATEモード。RAIDアレイ指定して作成
  • -l,--level: RAIDレベル指定
  • -n,--raid-devices: アクティブな構成デバイス数
  • -x,--spare-devices: スペアデバイス数指定
sudo mdadm --create /dev/md0 --level 1 --raid-devices 2 --spare-devices 1 /dev/loop0 /dev/loop1 /dev/loop2
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90

Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

同義のコマンド

sudo mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/loop0 /dev/loop1 /dev/loop2

/proc/mdstat: RAIDアレイの確認

sudo cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 loop2[2](S) loop1[1] loop0[0]
      1046528 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

miscモードの--query: さまざまな問い合わせ

  • --miscは省略可能
sudo mdadm --query /dev/md0
/dev/md0: 1022.00MiB raid1 2 devices, 1 spare. Use mdadm --detail for more detail.

MISCモードの--detail: 詳細

sudo mdadm --misc --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Dec 14 14:48:00 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Mon Dec 14 14:48:09 2020
             State : clean 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

              Name : lpic2-study-1:0  (local to host lpic2-study-1)
              UUID : 4d2d8328:d7090621:a410f2c1:9bf18f8f
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       7        0        0      active sync   /dev/loop0
       1       7        1        1      active sync   /dev/loop1

       2       7        2        -      spare   /dev/loop2

構成デバイスの状態表示

sudo mdadm --misc --examine /dev/loop1
/dev/loop1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 4d2d8328:d7090621:a410f2c1:9bf18f8f
           Name : lpic2-study-1:0  (local to host lpic2-study-1)
  Creation Time : Mon Dec 14 14:48:00 2020
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 2093056 sectors (1022.00 MiB 1071.64 MB)
     Array Size : 1046528 KiB (1022.00 MiB 1071.64 MB)
    Data Offset : 4096 sectors
   Super Offset : 8 sectors
   Unused Space : before=4016 sectors, after=0 sectors
          State : clean
    Device UUID : d9bb6b61:f4df5150:e3126e57:ba467e73

    Update Time : Mon Dec 14 15:13:29 2020
  Bad Block Log : 512 entries available at offset 16 sectors
       Checksum : 865ea70d - correct
         Events : 37


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)

障害対応

例: /dev/loop0が故障した場合

-f,--fail: 故障したデバイスに不良マーク(Faulty)を付ける

sudo mdadm --manage /dev/md0 -f /dev/loop0
mdadm: set /dev/loop0 faulty in /dev/md0

状態確認

cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 loop2[2] loop1[1] loop0[0](F)
      1046528 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

loop0にFaultyマークがつく

loop0[0](F)

問い合わせ

-Q: --queryと同じ

sudo mdadm --misc -Q /dev/md0

スペアが0になっている

/dev/md0: 1022.00MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.

詳細確認

-D: --detailと同じ

sudo mdadm --misc -D /dev/md0
  • /dev/loop0がfaultyになっている
  • スペアだった Number 2 /dev/loop2RaidDevice 0になっている
    Number   Major   Minor   RaidDevice State
       2       7        2        0      active sync   /dev/loop2
       1       7        1        1      active sync   /dev/loop1

       0       7        0        -      faulty   /dev/loop0

-r:--remove構成デバイスを取り除く

sudo mdadm --manage /dev/md0 -r /dev/loop0
mdadm: hot removed /dev/loop0 from /dev/md0

状態確認

cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 loop2[2] loop1[1]
      1046528 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

Faultyなやつ消える

-a: 元気な構成デバイス追加

sudo mdadm --manage /dev/md0 -a /dev/loop0
mdadm: added /dev/loop0

-f(--fail)する前に -r (--remove)しようとするとbusyだぞって怒られる

sudo mdadm --manage /dev/md0 -r /dev/loop0
mdadm: hot remove failed for /dev/loop0: Device or resource busy

設定ファイル

  • /etc/mdadm.conf
  • /etc/mdadm.conf.d/*.conf
  • /etc/mdadm/mdadm.conf
  • /etc/mdadm/mdadm.conf.d/*.conf

システム起動時にRAIDアレイを自動認識させるのに使用する

いずれも無かったのでディレクトリ掘るところから

sudo mkdir /etc/mdadm/
echo "DEVICE partitions" | sudo tee -a /etc/mdadm/mdadm.conf
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

cat /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 metadata=1.2 name=lpic2-study-1:0 UUID=4d2d8328:d7090621:a410f2c1:9bf18f8f