テクノロジーガイド

RAID1で故障ドライブをテストして交換する手順

2 min read システム管理 更新されました 10 Oct 2025
RAID1で故障ドライブをテスト・交換する手順
RAID1で故障ドライブをテスト・交換する手順

9 テスト

ここでは故障したハードドライブをシミュレートします。/dev/sda と /dev/sdb のどちらを選んでも構いませんが、以下の例では /dev/sdb が故障したと仮定します。

故障のシミュレーション方法は2通りあります。

  • システムをシャットダウンして物理的にドライブを取り外す(ホットスワップ非対応の環境)。
  • ソフト的にドライブを故障扱いにする(稼働中のテストに便利)。

下のコマンドでソフト除外できます(そのまま貼り付けて実行してください)。

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

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

システムをシャットダウンします。

shutdown -h now

その後、新しい /dev/sdb ドライブを装着してシステムを起動してください(もし /dev/sda を故障扱いにした場合は、新しいドライブを /dev/sda の位置に差し替え、古い sda を sdb として接続し直す等の物理的配置に注意してください)。正常ならばシステムは問題なく起動するはずです。

次に現在のRAID状態を確認します。

cat /proc/mdstat

以下は想定される劣化(degraded)状態の出力例です。

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

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

md2 : active raid1 sda3[0]
9759360 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

fdiskの出力も確認します。

fdisk -l

出力例(/dev/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          25      200781   fd  Linux raid autodetect
/dev/sda2             26          90      522112+  fd  Linux raid autodetect
/dev/sda3             91        1305     9759487+  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/md2: 9993 MB, 9993584640 bytes
2 heads, 4 sectors/track, 2439840 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

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

Disk /dev/md1: 534 MB, 534577152 bytes
2 heads, 4 sectors/track, 130512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

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

Disk /dev/md0: 205 MB, 205520896 bytes
2 heads, 4 sectors/track, 50176 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    401624     401562  fd  Linux raid autodetect
/dev/sdb2        401625   1445849    1044225  fd  Linux raid autodetect
/dev/sdb3       1445850  20964824   19518975  fd  Linux raid autodetect
/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 ~]#

RAIDメタデータのクリアと再追加

古いRAID設定の痕跡が残っている可能性があるため、superblock を消去します。

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

その後、新しいパーティションをRAIDに追加します。

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

再度 /proc/mdstat を確認します。

cat /proc/mdstat

同期中(recovery)の例:

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

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

md2 : active raid1 sdb3[2] sda3[0]
9759360 blocks [2/1] [U_]
[=======>.............]  recovery = 39.4% (3846400/9759360) finish=1.7min speed=55890K/sec

unused devices: 
[root@server1 ~]#

同期が完了するまで待ちます。

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

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

md2 : active raid1 sdb3[1] sda3[0]
9759360 blocks [2/2] [UU]

unused devices: 
[root@server1 ~]#

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

RAID構成では両方のHDDにGRUBをインストールしておくと冗長性が高まります。grubコマンドを起動して手動でインストールする例を示します。

grub

grubの対話で下記を実行します(環境によってコマンドは異なることがあります。UEFIやgrub2の環境では別手順が必要です)。

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

これで故障ドライブの交換処理は完了です。RAID1配列内のドライブを交換して再同期させ、ブートローダを両方のディスクにインストールしました。

よくある注意点とトラブルシューティング

重要: 本番環境では作業前に必ず最新のバックアップを取得してください。さらに、以下を確認してください。

  • ケーブルや電源の物理故障をまず疑う(接触不良やSATAケーブルの断線)。
  • ホットスワップ対応かどうかを確認。非対応ならシャットダウンが必要。
  • RAIDの同期中はI/O負荷を分散し、重要なバッチ処理は避ける。

トラブル例:

  • sfdisk がパーティションテーブルを書き込めない: 別プロセスがディスクを使用中でないか確認し、必要なら –force を使用する。
  • mdadm による再追加で同期が走らない: /proc/mdstat の状態を確認し、dmesg にエラーがないか確認する。
  • ブートしなくなった: GRUB を正しいデバイスにインストールしたか確認し、必要ならライブCD/USBから修復する。

代替アプローチ

  • dd でパーティションテーブルの先頭セクタ(512バイト)を直接コピーする方法。シンプルだがパーティション配置の境界が微妙な場合は注意が必要。
  • パーティションを手動で作成してから mdadm –add で追加する方法。自動コピーがうまくいかない場合の保険として有効。
  • LVM を利用している場合は論理ボリューム単位での再構成を検討する。LVM上にRAIDを構築している場合は手順が変わる。

受入基準

  • /proc/mdstat で全ての md デバイスが [UU] になっていること。
  • ファイルシステムに対する読み書きが正常に行えること(簡単な読み書きテストを推奨)。
  • GRUB が両方のディスクにインストールされ、どちらのディスクからもブートできること(可能なら片方を外して起動確認)。

役割別チェックリスト

システム管理者:

  • バックアップの確認
  • メンテナンスウィンドウの確保
  • ハードウェア互換性の確認

オペレーター:

  • コマンド実行ログの保存
  • 進捗(/proc/mdstat)の定期チェック
  • dmesg と syslog の監視

運用ポリシー担当:

  • ロールバック手順の承認
  • 予備ディスクの在庫確認

ミニ手法(方法の要約)

  1. 故障ドライブを取り外す(または mdadm で fail/remove)。
  2. 新ドライブを装着し、/dev/sda のパーティションテーブルを sfdisk でコピー。
  3. mdadm –zero-superblock で古いメタデータを消去。
  4. mdadm -a で RAID に追加。
  5. /proc/mdstat で同期完了を確認。
  6. GRUB を両方のディスクにインストール。

リスクマトリクスと軽減策(定性的)

  • 人的ミス(高): 手順書の用意、チェックリストと複数承認で軽減。
  • データ損失(中): 作業前のバックアップ、同期状態の確認、read-only テスト。
  • ハードウェア障害(中): 予備ディスクの在庫、 SMART チェックの定期実施。

1行用語集

  • RAID1: ディスクをミラーリングして冗長性を確保するRAIDレベル。
  • mdadm: LinuxのソフトウェアRAIDを管理するユーティリティ。
  • sfdisk: パーティションテーブルをバックアップ/復元するツール。
  • superblock: mdadm がディスク上に書き込むRAIDメタデータ。

まとめ

この手順でRAID1の故障ドライブを安全に交換できます。重要なのは事前のバックアップと、同期完了およびブートの復旧確認です。作業は計画的に、ログを取りながら実行してください。

10 リンク

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

類似の素材

Windows検索からフォルダーを除外する方法(10/11)
Windows

Windows検索からフォルダーを除外する方法(10/11)

近くのスマホ間でファイルを簡単に共有する方法
テクノロジー

近くのスマホ間でファイルを簡単に共有する方法

GeForce Experience エラー 0x0003 の直し方
トラブルシューティング

GeForce Experience エラー 0x0003 の直し方

PDFelement for iOS v3.0でスキャンをOCR編集する方法
ソフトウェア

PDFelement for iOS v3.0でスキャンをOCR編集する方法

Outlook に Webex を統合する手順
コラボレーション

Outlook に Webex を統合する手順

Windowsドライブの黄色三角を解消する方法
Windows

Windowsドライブの黄色三角を解消する方法