mdadmコマンドでLinuxソフトウェアRAIDを構築・監視する方法|RAID1作成からディスク障害復旧まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディスク・デバイス管理コマンド > mdadmコマンドでLinuxソフトウェアRAIDを構築・監視する方法|RAID1作成からディスク障害復旧まで
「ディスクが1本壊れた瞬間にサーバーが止まる構成のままでいいのか」
ハードウェアRAIDカードがない自社サーバーや、クラウドのアタッチドディスクを束ねる場面で誰もが直面する課題です。

Linuxには標準で mdadmコマンド によるソフトウェアRAIDが用意されており、追加コストなしで冗長化を組めます。
ただし「組んだけれど監視していない」「壊れたあとに何をすべきか分からない」状態が一番危険です。

この記事では、mdadmコマンドの基本操作から、RAID1(ミラーリング)の作成、/proc/mdstatでの状態確認、ディスク障害発生時の復旧手順までを実例付きで解説します。

実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・mdadm --create でRAID1/5/6を即座に構築できる
・/proc/mdstatとmdadm --detailで状態を常時監視する
・障害ディスクは --fail → --remove → --add の3ステップで交換する
・/etc/mdadm.confへの保存とinitramfs更新を忘れない


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

mdadmとは何か?ハードウェアRAIDとの違い

mdadmはLinuxカーネルのMD(Multiple Devices)ドライバを操作するためのコマンドです。
複数のブロックデバイスをまとめて1つの仮想デバイス(/dev/md0など)として扱い、RAID0/1/5/6/10などの構成を組めます。

ハードウェアRAIDカードを使わず、CPUとメモリで冗長化を実現するのが特徴です。
比較項目 ソフトウェアRAID(mdadm) ハードウェアRAID
追加コスト 不要(OS標準) RAIDカード購入が必要
CPU負荷 あり(パリティ計算など) カード側で処理
移植性 高い(別マシンに繋いで再認識可) 同型RAIDカード必須
BIOS/UEFI起動 /bootは別途配慮が必要 透過的に起動可
監視のしやすさ /proc/mdstatで誰でも確認可 ベンダー専用ツールが必要
クラウドVMや小規模オンプレ、検証環境では mdadm のほうが圧倒的に扱いやすいです。
RAIDアレイを別サーバーに繋ぎ替えても自動で認識される点は、障害時の救済策として非常に有効です。

mdadmの基本的な使い方

1. インストールと事前確認

mdadmは多くのディストリビューションで標準パッケージとして提供されますが、最小インストール構成では入っていない場合があります。
本番投入前に必ずインストール状況を確認しましょう。

# RHEL / Rocky Linux / AlmaLinux $ sudo dnf install mdadm # Ubuntu / Debian $ sudo apt install mdadm # バージョン確認 $ mdadm --version mdadm - v4.2 - 2021-12-30 # 利用可能なブロックデバイスを確認 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk └─sda1 8:1 0 30G 0 part / sdb 8:16 0 10G 0 disk sdc 8:32 0 10G 0 disk

実機やクラウドVMでは、事前に サーバーに搭載されているディスクの型番・本数 を把握しておくと、障害時の交換ディスク手配がスムーズです。dmidecode でハードウェア情報を取得 しておくと、リモート保守でも実機構成が即座に分かります。

2. RAID1(ミラーリング)の作成

最もよく使うのがRAID1です。
2本のディスクに同じデータを書き込むことで、片方が壊れてもサービスを止めずに続行できます。

# /dev/sdb と /dev/sdc を使ってRAID1を作成 $ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. # 同期状況を確認(初回はバックグラウンドで同期処理が走る) $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0] 10476544 blocks super 1.2 [2/2] [UU] [====>................] resync = 22.4% (2348224/10476544) finish=0.7min speed=174681K/sec unused devices:

`[UU]` の表示が「2台中2台が正常稼働」を意味します。
片方が落ちると `[U_]` や `[_U]` に変わるので、監視で検知すべき重要な記号です。

3. ファイルシステム作成とマウント

RAIDアレイは通常のブロックデバイスとして扱えます。
mkfsでファイルシステムを作成し、マウントすればすぐに使えます。

# XFSでフォーマット(RHEL系の標準) $ sudo mkfs.xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=4, agsize=654784 blks data = bsize=4096 blocks=2619136, imaxpct=25 ... # マウントポイントを作成して手動マウント $ sudo mkdir -p /data $ sudo mount /dev/md0 /data # 確認 $ df -h /data Filesystem Size Used Avail Use% Mounted on /dev/md0 10G 80M 9.9G 1% /data

恒久マウントにするには /etc/fstab への追記が必要です。マウント全般の運用は mount コマンドの使い方 も合わせて確認してください。

応用・実務Tips

1. /etc/mdadm.confに設定を保存する

mdadmは起動時に /etc/mdadm.conf(Ubuntu系は /etc/mdadm/mdadm.conf)を読んでアレイを再構成します。
保存を忘れると再起動後にデバイス名が変わったり、アレイが認識されないことがあります。

# 現在の構成をmdadm.confへ書き出す(RHEL系) $ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf ARRAY /dev/md0 metadata=1.2 name=rhel9.local:0 UUID=4f1c5a8e:3a2bd9c7:1e8f55a2:c0d3b9a1 # Ubuntu系 $ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf # initramfsを更新(再起動後にRAIDが認識されるように) $ sudo dracut -f # RHEL系 # または $ sudo update-initramfs -u # Ubuntu系

initramfs更新を忘れたまま再起動すると、ルートをRAID上に置いている構成では起動不能になることがあります。
特に「RAIDを組んでから初めての再起動」の前には必ず実施してください。

2. 詳細な状態確認

/proc/mdstat はサマリ表示ですが、トラブル調査時は --detail でデバイスごとの状態を見るほうが確実です。

$ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sun May 4 14:22:11 2026 Raid Level : raid1 Array Size : 10476544 (9.99 GiB 10.73 GB) Used Dev Size : 10476544 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sun May 4 14:25:48 2026 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc

`State : clean` かつ `Failed Devices : 0` であれば正常です。
crontabでこのコマンドを毎時実行し、出力をmail通知する仕組みを作っておくと安心です。

3. RAID5・RAID6の作成例

容量効率を重視するならRAID5(パリティ1台分犠牲)や、二重障害耐性のRAID6(パリティ2台分犠牲)を選びます。

# RAID5 (3本以上、1本のパリティ) $ sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd # RAID6 (4本以上、2本のパリティ) $ sudo mdadm --create /dev/md2 --level=6 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde # RAID10 (4本以上、ストライプ + ミラーリング) $ sudo mdadm --create /dev/md3 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

RAID5は書き込み時のパリティ計算でCPUを使います。NVMe SSDを多数束ねる場合はパリティ計算がボトルネックになる可能性があるため、用途に応じてRAID10との比較検討が必要です。

「ディスクが故障した時」の対処法

mdadm運用で一番大事なのが障害復旧の手順です。
本番環境で一度も練習せずに本番障害を迎えると、焦ってディスクを取り違える事故が起きます。

1. 障害発生の検知

ディスクが落ちると /proc/mdstat の表示が変わります。

$ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc[1] sdb[0](F) 10476544 blocks super 1.2 [2/1] [_U] unused devices:

`(F)` がFailedの意味、`[_U]` で1台しか動いていないことが分かります。
この状態は冗長性ゼロ、つまりもう片方が落ちた瞬間にデータロスです。即時対応してください。

2. 故障ディスクの取り外し

mdadmのアレイから故障ディスクを論理的に切り離します。

# 自動でFailedになっていない場合は手動で--failを宣言する $ sudo mdadm /dev/md0 --fail /dev/sdb mdadm: set /dev/sdb faulty in /dev/md0 # アレイから取り外す $ sudo mdadm /dev/md0 --remove /dev/sdb mdadm: hot removed /dev/sdb from /dev/md0 # 物理交換できるかどうかはサーバー仕様次第 # クラウドVMならアタッチドディスクをデタッチ→新しいディスクをアタッチ

物理サーバーで交換する場合は、ディスクシリアル番号を必ず控えてからスロットを抜いてください。
複数本同型ディスクが並んでいる現場では、誤って正常なディスクを抜く事故が後を絶ちません。

3. 新しいディスクの追加と再同期

新しいディスクをアレイに追加すると、自動で再同期(resync/recovery)が始まります。

# 新しいディスクをアレイに追加 $ sudo mdadm /dev/md0 --add /dev/sdb mdadm: added /dev/sdb # 再同期の進捗を確認 $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb[2] sdc[1] 10476544 blocks super 1.2 [2/1] [_U] [===>.................] recovery = 18.5% (1937856/10476544) finish=1.2min speed=116752K/sec unused devices:

進捗が100%に達し `[UU]` 表示に戻れば復旧完了です。
本番環境ではこの再同期中もディスクI/Oがある程度発生するため、夜間など負荷の少ない時間帯に交換することを推奨します。

「mdadm: cannot open /dev/sdX: Device or resource busy」エラーの対処法

新規RAID作成時によく遭遇するエラーです。
過去に別のRAIDで使われていた、もしくはLVMやファイルシステムの残骸が残っているのが原因です。

# 残存しているRAIDメタデータの確認 $ sudo mdadm --examine /dev/sdb /dev/sdb: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : ea1d2c3b:b4f8e7a9:0c2d3e4f:9a8b7c6d ... # RAIDスーパーブロックを消す $ sudo mdadm --zero-superblock /dev/sdb # それでも開けない場合、LVMのpvが残っていないか確認 $ sudo pvs $ sudo wipefs -a /dev/sdb # ファイルシステムシグネチャも消す

--zero-superblock や wipefs は破壊的コマンドです。必ずデバイス名をlsblkで再確認してから実行してください。
Linuxの基本コマンドの読み方に不安がある方は Linux 基本コマンドの解説 も合わせて参照することをおすすめします。

本記事のまとめ

mdadmはLinuxの冗長化運用に欠かせないコマンドです。
構築よりも「監視」と「復旧」が本番運用では重要になります。
やりたいこと コマンド
RAID1を作成する sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
RAID5を作成する sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
状態を確認する(サマリ) cat /proc/mdstat
状態を確認する(詳細) sudo mdadm --detail /dev/md0
故障ディスクを切り離す sudo mdadm /dev/md0 --fail /dev/sdb && sudo mdadm /dev/md0 --remove /dev/sdb
新しいディスクを追加する sudo mdadm /dev/md0 --add /dev/sdb
RAID構成を保存する sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
RAIDメタデータを消去する sudo mdadm --zero-superblock /dev/sdb
冗長化は「組んだら終わり」ではありません。
作成直後に必ず障害シナリオを試験し、--fail/--remove/--addの3ステップを手に染み込ませておくこと。これが本番障害を救う最大の備えです。

RAIDを組んだのに、いざ障害が起きると手が止まってしまいませんか?

mdadmの作成・監視・復旧は、現場で本番障害を救う基礎スキルです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。