前提と目的
この手順は、複数ディスク上に同一サイズのパーティションを作成し、それらを mdadm で RAID アレイ(例:RAID1)にまとめ、ファイルシステムを割り当ててマウントする目的です。テストは Debian 3.1 / Ubuntu Server 5.10 など古めのディストリビューションで確認されていますが、現行ディストリビューションでも mdadm の基本操作は同様です。
重要な参考情報: Emidio Planamente のページ: http://www.planamente.ch/emidio/pages/linux_howto_root_lvm_raid.php と Tado の serverconfig ページ: https://www.howtoforge.com 。
Notes: mdadm の公式ページ: http://freshmeat.net/projects/mdadm/
前準備
- 物理ディスクを 2 台以上用意します(例: hda, hdb)。
- 各ディスクに同サイズのパーティションを作成します。
- パーティションタイプとして「Linux RAID」を選択します(パーティション ID を 0xfd 等に設定)。
例として使うパーティション構成(筆者の例):
- /boot 50 MB
- swap 1 GB
- / 10 GB
- /var 残り全て
各ディスクで同じサイズ・同じ順番のパーティションを 4 つずつ作成し、合計 8 個の RAID 対応パーティションを作ります。
インストール時の手順(インストーラでの作業)
- 両ディスクに同一構成のパーティションを作成し、各パーティションのタイプを “Linux RAID” に設定する。
- インストーラの「Configure Software RAID」を選択して mdadm の設定に入る。
- 作りたい RAID レベルを選ぶ(RAID0, RAID1, RAID5 など)。バックアップが目的なら RAID1 を選択。
- 対応するペアのパーティション(hda の第 N パーティションと hdb の第 N パーティション)を選び、array を作成する。2 台構成なら各アレイは 2 デバイスで [2/2] になる。
- 全てのペアでアレイを作成すると、パーティション画面に 4 つの RAID デバイス(md0, md1, md2, md3 等)が表示される。
- 各 md デバイスを開き、ファイルシステムを選んでマウントポイントを設定する。例: md0 -> ext3 -> /boot、md1 -> swap、md2 -> ext3 -> /、md3 -> ext3 -> /var。
- 保存してインストールを続行する。同期中はシステムが遅くなる場合があるため待機する。
同期状況の確認
別の仮想コンソール(Alt+F2 など)で同期状況を監視できます:
# Ubuntu 5.1 では:
cat /proc/mdstat
# Debian 3.1 以降でも同様:
watch cat /proc/mdstat
例: /proc/mdstat の出力(インストール中に表示される典型的な例):
root@server1:/home/patje/install_ispconfig# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1] 133596416 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1] 24410688 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1] 1951808 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1] 120384 blocks [2/2] [UU]
unused devices:
インストール後の作業(mdadm の確認と設定保存)
- システムが起動したら mdadm が正しくインストールされているか確認します。
mdadm --detail /dev/md0
cat /proc/mdstat
- mdadm の設定を保存して、起動時に自動組み立てされるようにします。
# Debian/Ubuntu の場合
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
ディストリビューションによっては設定ファイルの場所が /etc/mdadm.conf の場合があります。現在のディストロのドキュメントに従ってください。
ミニ手順(まとめ)
- 同一サイズのパーティションを各ディスクに作る
- パーティションタイプを「Linux RAID」にする
- インストーラの Software RAID を使って各ペアを md デバイスにまとめる
- 各 md デバイスにファイルシステムとマウントポイントを割り当てる
- /proc/mdstat で同期を監視し、mdadm 設定を保存する
代替アプローチ
- LVM 上に RAID を構築する: 物理ボリュームを RAID にせず、RAID デバイスを作ってから LVM を上に載せる方法と、逆に LVM ボリュームを複数のディスクに分散する方法がある。目的(スナップショット、拡張性、スループット)により選択する。
- ハードウェア RAID コントローラを使う: ハードウェア RAID は OS から単一のディスクとして見えるため設定が簡潔。ただしコントローラ依存となりリカバリ手順が異なる。
- ZFS や Btrfs を使う: ファイルシステム自体に RAID 機能を持つソリューション。データ整合性機能やスナップショットが必要なら検討に値する。
いつ使うと良いかと失敗するケース
重要: ソフトウェア RAID はディスク単位の冗長化を提供しますが、バックアップの代替ではありません。RAID1 はディスク障害に強いが、事故や削除ミス、ソフトウェア障害からは守れません。
失敗例:
- パーティションサイズが左右で異なると mdadm が正しく組めない。
- インストーラや古いカーネルで RAID サポートが不十分だとブート不可になる場合がある。
- mdadm 設定を initramfs に反映させ忘れると起動時にルートが見つからない。
役割別チェックリスト
- システム管理者: パーティションテーブルのバックアップ、mdadm パッケージの確認、/etc/mdadm/mdadm.conf の保存と initramfs 更新。
- 運用担当: /proc/mdstat の定期確認、自動メール通知や監視(Nagios/Prometheus)との連携設定。
- バックアップ担当: RAID は可用性向上のためバックアップ方針は別に維持することを確認。
トラブルシューティングのヒント
- 同期が進まない/非常に遅い: I/O 負荷または不良セクタの可能性。dmesg, smartctl でディスク状態を確認する。
- アレイが degraded と表示される: どのデバイスが抜けているか mdadm –detail /dev/mdX で確認し、失われたデバイスを再追加する。
基本的な復旧コマンド例:
# 失われたデバイスを再追加
mdadm --add /dev/md0 /dev/sdb1
# アレイを停止して再構成(注意して使用)
mdadm --stop /dev/md0
mdadm --assemble --scan
テストケースと受入基準
- インストール後、/proc/mdstat に各 md デバイスが [UU] で表示されること。
- 再起動後も md デバイスが自動で組み立てられること。
- 片方のディスクを物理的に外してもシステムが稼働し続けること(RAID1 の場合)。
1行用語集
- mdadm: Linux のソフトウェア RAID 管理ツール。
- md デバイス: /dev/md0 等、mdadm が作成する論理 RAID デバイス。
- /proc/mdstat: カーネルが保持する RAID 状態の表示ファイル。
参考と次のステップ
- mdadm の詳細は公式やディストリのドキュメントを参照してください: http://freshmeat.net/projects/mdadm/
- ISPconfig 等のアプリケーションをインストールする場合は、インストール手順の中で RAID デバイスを使う旨を明記し、設定ファイルのパス等を確認してください。例: https://www.howtoforge.com/perfect_setup_ubuntu_5.10_p2
まとめ: mdadm を使えばインストーラ上で簡単にソフトウェア RAID を構築できます。作業前にパーティションの整合性とバックアップ戦略を確認し、同期状況を /proc/mdstat で監視しながら進めてください。