目次
理論で覚えるRAID
RAID...複数ディスクを論理的に合体する仕組み
RAIDは一般的に0~6まであり、かつ10とか50とか表記されたりするので非常に種類が多いように感じますが、実際には大きく分けると
- 0
- 1
- 3,4
- 5,6
の実質四種類しかないです。
| レベル | 特性 |
|---|---|
| 0 | ストライピング=分割 |
| 1 | ミラーリング=完コピ。データ参照時にはどれか一つのみから |
| 2 | 存在はしますが使われていないし出題もされないです |
| 3,4 | ストライピングに加え、一つのディスクをパリティディスクとすることで、あるディスクのデータが壊れてもほかのディスクから復元することができます。データは RAID3はパリティをビットまたはバイトごとに管理し、RAID4ではブロックごとに管理します。 →ある程度の耐障害性と容量を持ちます |
| 5,6 | RAID5はパリティを各ディスクに分散させます。パリティを含む全データをRAID0する感じです RAID6はパリティを統制するパリティを設けます。実際には、あるブロックに対するパリティが二つ設けられた状態になります |
また、RAIDはネストすることができます。
例えばRAID0をRAID1でミラーリングすることもできますし、RAID1をRAID0ですトライピングすることもできます。
ネストされたRAIDはRAIDxy(RAIDx+y)などと表現されます、RAID50とかに該当します
実践で覚えるRAID
実際にRAIDのメンバディスクを破損させて復旧可能なパターンと復旧不可能なパターンを検証します。
・RAID0
・RAID1
・RAID3,4
・RAID5,6
・RAID10
RAID0
RAID0環境を用意しました
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid0 /home/gura/tmp
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid0 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
sdcをzeroで上書きすると、RAIDが壊れました

データを消していないsdbをマウントして見てみます
[gura@localhost tmp]$ ls -la
合計 4
drwxr-xr-x. 2 root root 6 5月 12 16:45 .
drwx------. 15 gura gura 4096 5月 12 16:52 ..
再マウントしてもファイルは認識されていません
RAID1
RAID1を建てました
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root
x 253:0 0 12.8G 0 lvm /
mqalmalinux-swap
253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 1022M 0 raid1 /home/gura/tmp
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 1022M 0 raid1 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom /run/media/gura/AlmaLinux-9-7-x86_64-dvd
動画ファイルを配置し
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 10:56 hts-samp003.mp4
sdcを除去しました。
sdbのみがraidに残っていて、配置したファイルは依然存在します
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root
x 253:0 0 12.8G 0 lvm /
mqalmalinux-swap
253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 1022M 0 raid1 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom /run/media/gura/AlmaLinux-9-7-x86_64-dvd
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 11:56 hts-samp003.mp4
ディスクが一枚でも動いていればいいので同じディスク数では最も可用性が高いですが、ディスクの枚数を増やしても最大容量が増えないデメリットがあります。
RAID3,4
RAID4です
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 14:11:39 2026
Raid Level : raid4
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 14:15:50 2026
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 0fb22117:99e9524d:dfed36e6:92cec861
Events : 19
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
パリティディスクはsdd(detailで一番下に表示されてるディスク)らしいです
先ほどの動画ファイルを入れます
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 14:35 hts-samp003.mp4
sdbを抜きましたが、動画ファイルは健在です。
RAID3,4では一つのディスクが欠けても残りのディスク+パリティからそのデータを求めて動作することができます。
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 14:35 hts-samp003.mp4
↓number2がmissingになっています
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
[sudo] gura のパスワード:
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 14:11:39 2026
Raid Level : raid4
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 14:38:28 2026
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 0fb22117:99e9524d:dfed36e6:92cec861
Events : 21
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty missing
新しいディスクを取り付け、md0に追加します
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sde 8:64 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 14:11:39 2026
Raid Level : raid4
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 14:49:01 2026
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 0fb22117:99e9524d:dfed36e6:92cec861
Events : 41
Number Major Minor RaidDevice State
4 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty missing
sdeへのリビルドを確認するためにsdcを撤去してみます。
↓撤去後もファイルが残っていました。
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sde 8:64 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 14:35 hts-samp003.mp4
raid3,4の欠点として、二つ以上のディスクが欠けた場合は動作せず修復することができません。
↓StateがFAILEDになりました
[gura@localhost ~]$ ls -l tmp
合計 3768
-rw-r--r--. 1 gura gura 3858260 5月 13 14:35 hts-samp003.mp4
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sde 8:64 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid4 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 14:11:39 2026
Raid Level : raid4
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 15:00:11 2026
State : clean, FAILED
Active Devices : 1
Working Devices : 1
Failed Devices : 2
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 0fb22117:99e9524d:dfed36e6:92cec861
Events : 47
Number Major Minor RaidDevice State
4 8 64 0 active sync /dev/sde
- 0 0 1 removed
3 8 48 2 faulty missing
0 8 16 - faulty missing
RAID5,6
RAID5,6は違いが顕著なので両方作ります
RAID5
RAID5ではパリティが各ディスクに分散されます。パリティの大きさ自体はRAID3,4と変わらないです
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid5 /home/gura/tmp
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid5 /home/gura/tmp
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid5 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom /run/media/gura/AlmaLinux-9-7-x86_64-dvd
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 15:52:00 2026
Raid Level : raid5
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 16:41:19 2026
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 45845dc7:354c9a86:a07f171c:44c6bfca
Events : 19
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
RAID6
通常のパリティともう一つ別のパリティを持ちます通常のパリティはXORですが、RAID6用のパリティは別の計算方法を持ち、通常パリティと連立で計算することで2つ同時のディスク故障に対応することができます。
↓パリティがディスク2本分になるので2GiBの保存容量になっています
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sdc 8:32 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sdd 8:48 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sde 8:64 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom /run/media/gura/AlmaLinux-9-7-x86_64-dvd
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 16:54:58 2026
Raid Level : raid6
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 16:55:03 2026
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 5e1b5d21:c373ee79:72eed524:bc8b4f31
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
ディスクを2本取り除いてみます
[gura@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 600M 0 part /boot/efi
tqsda2 8:2 0 1G 0 part /boot
mqsda3 8:3 0 14.4G 0 part
tqalmalinux-root 253:0 0 12.8G 0 lvm /
mqalmalinux-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sde 8:64 0 1G 0 disk
mqmd0 9:0 0 2G 0 raid6 /home/gura/tmp
sr0 11:0 1 1.4G 0 rom /run/media/gura/AlmaLinux-9-7-x86_64-dvd
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed May 13 16:54:58 2026
Raid Level : raid6
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 13 17:36:17 2026
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 2
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 5e1b5d21:c373ee79:72eed524:bc8b4f31
Events : 22
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
- 0 0 1 removed
- 0 0 2 removed
3 8 64 3 active sync /dev/sde
1 8 32 - faulty missing
2 8 48 - faulty missing
再起動するとmd127になりましたが。
md127をマウントして参照するとデータは壊れていないことが確認できました
RAID10
RAID10などはRAIDふたつで別のRAIDを組むことで構成できますが、mdadmなどでは明示的にRAID10であると宣言することもできます。
管理上のしやすさを考えると基本的には後者をとるほううがいいです。
↓set-Aとset-Bに分けられて構成されています
[gura@localhost ~]$ sudo mdadm --raid-devices=4 --level 10 /dev/md0 /dev/sdb /de v/sdc /dev/sdd /dev/sde
[gura@localhost ~]$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 14 10:03:58 2026
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Thu May 14 10:04:09 2026
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : bitmap
Name : localhost.localdomain:0 (local to host localhost.localdoma in)
UUID : 894c0731:f11b3423:dec64450:5d2c70cd
Events : 18
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



