テクノロジーガイド

RAID1での故障ディスク交換とテスト手順

2 min read システム管理 更新されました 28 Sep 2025
RAID1の故障ディスク交換とテスト手順
RAID1の故障ディスク交換とテスト手順

前提条件

  • 対象はソフトウェアRAID(mdadm)で構成されたRAID1アレイです。
  • root 権限で操作できること。
  • 交換用のドライブ(容量は同等以上)が用意されていること。
  • 既存のアレイは /dev/md0, /dev/md1 のようにパーティション単位で構成されている想定です。

用語定義(1行ずつ):

  • RAID1: 同じデータを2台以上のディスクに保持するミラーリング方式。
  • mdadm: Linux のソフトウェアRAID管理ユーティリティ。
  • sfdisk: パーティションテーブルのバックアップ/復元に使うツール。

概要

この手順は次の流れで進みます。

  1. 故障ディスクをシミュレートしてアレイを劣化(degraded)させる。
  2. 新しいドライブにパーティションテーブルをコピーする。
  3. 古いRAID情報を消去して、新ドライブをアレイに追加する。
  4. 同期(リビルド)が完了したらブートローダを両ドライブに再インストールする。

重要: 実機で操作する前に必ずバックアップを取り、夜間のメンテナンスウィンドウを確保してください。

テスト:故障ディスクのシミュレーション

ここでは /dev/sdb が故障したことにします(/dev/sda が故障している場合はデバイス名を読み替えてください)。

物理的に取り外すか、ソフトで取り外しをシミュレートできます。ソフト側の例:

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2

mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2

その後システムをシャットダウンします:

shutdown -h now

新しい /dev/sdb を挿入してシステムを起動します。正しく構成されていれば起動は問題なく終わるはずです。

起動後、アレイが劣化していることを確認します:

cat /proc/mdstat

出力例(劣化状態):

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
10377920 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

ディスク情報を確認します:

fdisk -l

期待される出力の例(sdb にパーティションが無い):

[root@server1 ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   fd  Linux raid autodetect
/dev/sda2             14        1305    10377990   fd  Linux raid autodetect

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/md1: 10.6 GB, 10626990080 bytes
2 heads, 4 sectors/track, 2594480 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md0: 106 MB, 106823680 bytes
2 heads, 4 sectors/track, 26080 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#

パーティションテーブルのコピー

既存のディスク(/dev/sda)から新しいディスク(/dev/sdb)へパーティションテーブルを複製します。

sfdisk -d /dev/sda | sfdisk /dev/sdb

もしエラーが出る場合は –force オプションを試します:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

実行例(出力例):

[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *        63    208844     208782  fd  Linux raid autodetect
/dev/sdb2        208845  20964824   20755980  fd  Linux raid autodetect
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#

注意: sfdisk が sector 0 の署名を警告することがありますが、操作自体は正しくパーティションテーブルを書き込むことが多いです。問題がある場合は –force を検討します。

既存RAID情報の消去とアレイへの追加

古いRAIDメタデータ(スーパーブロック)が残っているとアレイに追加できないため、ゼロ化します。

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2

その後、新しいパーティションをアレイへ追加します:

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2

追加直後に /proc/mdstat を確認します。

cat /proc/mdstat

出力例(リビルド開始):

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[2] sda2[0]
10377920 blocks [2/1] [U_]
[======>..............]  recovery = 32.3% (3360768/10377920) finish=1.5min speed=74238K/sec

unused devices: 
[root@server1 ~]#

同期の完了を待つ

完全に同期されるまで待ちます。完了後の /proc/mdstat の例:

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]

unused devices: 
[root@server1 ~]#

同期が完了するまでの時間はディスク性能と使用中ロードに依存します。負荷の高い時間帯を避けると短時間で完了しやすいです。

ブートローダの再インストール

両方のディスクにGRUBをインストールしておきます。grub コマンドを起動して、以下の手順を実行します(GRUBのバージョンにより手順は異なるため、環境に合わせてください)。

grub

grub プロンプトで:

root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

これで新しいディスクからも起動可能になります。

受け入れ基準

  • /proc/mdstat にて全ての md デバイスが [UU] になっていること。
  • システムが両ドライブから問題なく起動することを確認。
  • mdadm –detail でアレイの状態が正常(状態: clean)であること。

チェックリスト(運用者用)

  • 交換前にバックアップを取得
  • メンテナンスウィンドウを確保
  • 劣化を確認(cat /proc/mdstat)
  • 新ドライブを挿入
  • sfdisk でパーティションを複製
  • mdadm –zero-superblock を実行
  • mdadm -a で追加
  • 同期状況を監視(cat /proc/mdstat)
  • 同期後にGRUBを両ディスクへインストール
  • 起動テスト実施

SOP(短い手順書)

  1. 故障ディスクを取り外す/マークする。
  2. 新ドライブ挿入。
  3. sfdisk -d /dev/sda | sfdisk /dev/sdb を実行。
  4. mdadm –zero-superblock で古いメタデータを削除。
  5. mdadm -a でアレイに追加。
  6. 同期終了後、grub を両ディスクへインストール。
  7. 再起動してブート確認。

トラブルシューティング(いつ失敗するか/対処)

  • sfdisk が書き込みに失敗する場合:
    • デバイス名が正しいか再確認。
    • ディスクが不良セクタを含む場合がある。smartctl で健康状態を確認。
  • mdadm が追加を拒否する場合:
    • –zero-superblock を見落としている可能性。再度実行。
    • パーティションのサイズや開始位置が一致しているか確認。
  • 同期が非常に遅い/進まない場合:
    • I/O 負荷を確認。負荷が高ければオフピークで再試行。
    • 転送速度が極端に低いときはケーブルやコントローラ問題を疑う。
  • システムが新ドライブから起動できない場合:
    • GRUB のインストール先を間違えている可能性。両ディスクにインストール。
    • BIOS/UEFI のブート順を確認。

決定フローチャート

以下は基本的な判断フローの例です。

flowchart TD
  A[障害検知] --> B{アレイは劣化しているか}
  B -- はい --> C[故障ディスクを特定]
  B -- いいえ --> Z[運用監視を継続]
  C --> D{ディスクを物理交換できるか}
  D -- はい --> E[ディスクを交換]
  D -- いいえ --> F[ソフトでマークしてリビルド]
  E --> G[パーティションをコピー 'sfdisk']
  G --> H[zero-superblock & mdadm -a]
  H --> I[リビルド監視]
  I --> J{同期完了?}
  J -- はい --> K[GRUB を両ディスクにインストール]
  J -- いいえ --> L[ログ確認・I/O診断]
  K --> M[再起動して動作確認]
  M --> N[完了]

事実ボックス(参考)

  • 再同期速度はディスク性能と負荷に依存。数十MB/s〜数百MB/sが一般的。
  • mdadm のリビルドはアレイが稼働中でも実行可能だが、I/O へ影響する。

役割別チェック(簡易)

  • システム管理者:
    • バックアップ、メンテナンスウィンドウの計画、操作実行。
  • オペレーション:
    • ログ監視、同期進捗の報告、再起動確認。
  • ハードウェア担当:
    • 物理交換、ケーブル/トレイ確認、SMART診断。

用語集(1行)

  • mdadm: Linux ソフトウェアRAIDの管理ツール。
  • sfdisk: パーティションテーブルのダンプ/書き込みツール。
  • GRUB: Linux のブートローダ。

まとめ

RAID1 の故障ディスク交換は、パーティションコピー(sfdisk)、スーパーブロックのゼロ化、mdadm による再追加、同期の監視、そしてGRUBの再インストールの順で安全に進められます。事前のバックアップとメンテナンス計画、同期完了とブートテストの確認を忘れないでください。

リンク

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

YouTubeのDislike数を確認する方法(ブラウザ・Android)
チュートリアル

YouTubeのDislike数を確認する方法(ブラウザ・Android)

Tumblrにフォーラムを追加してコミュニティを作る
ブログ運営

Tumblrにフォーラムを追加してコミュニティを作る

AndroidでDropboxを使う方法: 設定と共有
クラウドストレージ

AndroidでDropboxを使う方法: 設定と共有

Geminiのチャット記憶を停止する方法と履歴管理
プライバシー

Geminiのチャット記憶を停止する方法と履歴管理

Almowafirでドバイのクーポンを賢く使う
クーポン

Almowafirでドバイのクーポンを賢く使う

RAID1の故障ディスク交換とテスト手順
システム管理

RAID1の故障ディスク交換とテスト手順