経緯

一週間前くらいに、md0のうち1台がI/O errorを出してDegradedArrayになっていた。

容量的にもう手狭なのと、Recovery中にもう1台クラッシュするのを避けるため、
Recoveryはせず、新しくArrayを組んでコピーすることにした。

買ったのは下記の3台。タイの洪水で割高なタイミングになってしまった。

  • WD20EARX \9890
  • ST2000DL003 \9965
  • ST2000DM001 \11375

構築

アセンブルしたら、このうちST2000DM001がI/O errorを出した。
SATAポートをPCIeのボードから、オンボードのポートに変えたら動くようになった。

データコピー

DegradedArrayに負荷を掛けないように、
まずはシーケンシャルリードでディスクイメージをコピー

# mount -o remount,ro /dev/md0
# dd if=/dev/md0 of=/home/data2/md0_image bs=4M

ディスクイメージをマウント

# mount /home/data2/md0_image /home/data2/_md0 -t xfs -o loop,ro,nouuid

ディスクイメージからファイルコピー
パーミッションやタイムスタンプの保持を忘れずに

# cp --archive /home/data2/_md0/* /home/data2

元のアレイが更新されている部分を追加でコピー

# mount -o remount,ro /dev/md0
# cp --archive --update /home/data/* /home/data2/

念のため、旧アレイのHDDはしばらく上書きせずに寝かせておく
微妙な容量だし、そのまま実家に持っていってバックアップにしてもいいかも

次回やるときは、素直にumountしてからddでパーティションごとコピー、
その後ファイルシステム拡張のほうが楽かも