LinuxでのSoftwareRAID再構築メモ

自宅のサーバーはSSDでRAID1構成をしているのですが、SSDはたまにゼロライトしてやらないと速度が低下します。RAID1構成なので片方切り離し→ゼロライト→再構築という技が使えるので、その時の操作メモを残しておきます。SoftwareRAIDな為、マシンを停止する事なく再構築を行う事ができます。(ここの操作はリスクが大きいので必ずバックアップを行ってから操作してください。また、正しいという保証もしませんのであらかじめご了承下さい。)

現在自宅のサーバーでは、sda、sdb、sdc、sddがSSD(全て同型の120G)、sde、sdfがHDD(WD 3TB)になっており、[sda2,sdb2]、[sdc1,sdd1]、[sde1、sdf1]という構成でRAID1を3アレイ構成しています。sda1、sdb1は/bootなのですが、このパーテーションはRAIDにしていません。今回は[sdc1,sdd1]で構成されるmd1をゼロライトし再構築してみます。sdcとsddは全く同じパーテーション構成になっており、それを前提に操作を行います。RAIDを構成する物理ハードディスクのパーテーション構成がそれぞれ違う場合は絶対にこの操作は実行しないで下さい。

▲現在のRAID構成


まずはゼロライトするディスクを停止し切り離す操作を行います。mdadmコマンドを使い下記のように操作します。

切り離したらddでゼロライトを行います。ゼロライトする前にfsckでもした方がいいかなと思ったのですが、fsckはRAIDの構成デバイスでは使えないようです。今回はデバイス全体をゼロライトしました。特に起動ドライブをゼロライトする時はリスクが大きいのでパーテーション単位で行うのが無難な気もします…。

デバイスを完全にゼロライトしてしまったのでパーテーションテーブルも消えてしまいます。その為ゼロライトが終わったらRAIDを構成しているもう片方のディスクからMBRをコピーし、partprobeコマンドを実行しパーテーション情報を更新します。

パーテーション情報が更新されたら後は再びRAIDアレイに追加し再構築するだけです。mdadmコマンドでaddするとすぐに再構築が始まります。その様子は/proc/mdstatで確認する事ができます。

再構築が完了すれば操作は完了です。このサーバーの場合30分程度で再構築が完了しました。完了後エラーが出ていない事を確認してもう片方のディスクでも同じ事を実行すればOKです。最後に念のため再起動した方が良いと思います。起動ディスクでゼロライトを実行したら起動しなくなってしまう可能性もあるので…。