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/loop2
がRaidDevice 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