web-dev-qa-db-ja.com

障害が発生する前にRAIDハードドライブを交換する(3歳!)

私のレイドセットアップで賢明なことは、ドライブが故障し始める前に、そしてドライブが古くなり始める前にドライブを交換することだと思っています...私は本当に多くのクラウドバックアップスペースを買う余裕がないので、摩耗によるドライブの最終的な故障が保証されていることに飛びつきます。

GPT、grub、小さなシステムraid1パーティション、および大きなraid5ホームパーティションを備えた2TBドライブが3つあります。 ArchLinuxを使用しています。

ドライブを1つずつ交換するつもりでした。私は自分の行動計画を投稿して、それがうまくいかない理由を誰かが考えられるかどうか、またはそれを行うためのより良い方法があるかどうかを確認したいと思いました。

ステップ1:

物理的にプラグを抜き、/dev/sdaをチェックして、失敗した/proc/mdstatを見つけることにより、交換するデバイス(つまり、/dev/sdx)を特定します。

ステップ2:

プラグを差し直し、sfdiskを使用してパーティションテーブルをコピーします

sfdisk -d /dev/sdx > partition.layout

ステップ3:

同じサイズの新しい物理ドライブを挿入します

ステップ4:

sfdisk /dev/sdx < partition.layout

ステップ5:

Arch wikiの指示に基づいて、mdadmを使用して、新しいドライブをアレイに追加します。

mdadm --add /dev/md0 /dev/sdx1
mdadm --add /dev/md1 /dev/sdx2

ステップ6:

Grubを再インストールしますか?再同期が完了するのを待ってから、他の2つのドライブでプロセス全体を繰り返しますか?

私の質問はほとんどのようだと思います、これはうまくいくでしょうか?足りないものはありますか?明らかなことを見逃して、すべてのデータを失いたくありません。

どんな援助/洞察にも感謝します。

編集:

同じ場所で議論の結果を把握するために、mdadmとsmartmontools(smartd)を監視し、ハードドライブに問題が発生した場合はメールで通知する方法を見つけたと言いたいと思います。携帯電話に同期したGmailアカウントでssmtpを設定しました。

私はすでに新しいドライブを購入しているので、それらを保管し、状況が悪化したときに交換します。最終的にすべてのハードドライブに障害が発生することは私の理解です。 (アレイを劣化させることなく)それを行う方法についての提案とアドバイスをありがとう。アップグレードの余裕ができたら、ECCマザーボード/メモリなどでZFSを使用します。そして、その方向のヒントに感謝します。どうもありがとうございました:D

5
Eveready

RAIDを故意に劣化させており、再同期が予期せず失敗する可能性があるため、これは悪い考えです。新しいディスクをシステムに接続して(つまり、n+1ディスクがある)、mdadm --replaceを使用して同期することをお勧めします。これにより、RAIDが途中で劣化することはありません。

どれがどれであるかを見つけるために、ドライブを故障/取り外す必要はありません。デバイスの役割番号はmdadm --examineで確認でき、mdstatの出力では[UUU]の役割番号は[012]です。ドライブのシリアル番号をhdparmまたはsmartctlで確認し、ドライブ自体のステッカーと比較できます。

パーティションの場合、MSDOSの代わりにGPTを使用する方がよいかもしれません。ディスクを交換するだけでなく、サイズをアップグレードする場合、MSDOSパーティションはほとんど2TBで停止するため、他に選択肢がない可能性があります。

個人的にはこれは一切しません。では、ディスクが3年前の場合はどうなるでしょうか。ディスクはそれよりもはるかに長持ちし、新しいディスクはすべて同じように消滅します。

ディスクを定期的に(自動化されて)テストし、最初の保留中/修正不可能/再割り当てされたセクター、セルフテストでの読み取りエラー、またはその他の問題が発生したら、ディスクを交換することがはるかに重要です。

さらに重要なのは、失いたくないデータのバックアップをとることです。

冗長性を高めるためにRAID6に切り替えることもできますが、エラーを積極的にチェックしている限り、2つのディスクが同時に停止することはほとんどありません。再構築を数年ぶりの読み取りテストにしないでください。

11
frostschutz

最初のステップは不要ですが、それでも/dev/sdXが常に安定している(つまり、同じデバイスを指している)という保証はありません。最悪の場合、再度接続すると、長時間実行される再同期操作がトリガーされます。

より優れた信頼性の高いアプローチは、ドライブのシリアル番号(S/N、SN)を操作することです。それらはドライブに印刷されており、システムから照会できます。

たとえば、ランダムシステムを見ると:

# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sda2[0] sdb2[2]
      976245464 blocks super 1.2 [2/2] [UU]
      bitmap: 1/8 pages [4KB], 65536KB chunk

次に、次の方法でsdaのシリアル番号を取得できます。

# hdparm -i /dev/sda

/dev/sda:

 Model=SAMSUNG HD103UJ, FwRev=1AA01113, SerialNo=S13PJ0123456789

(実際のシリアル番号を編集しました)

/dev/disk/by-idの下のシンボリックリンクを見て、シリアル番号を取得することもできます。

# ls -l /dev/disk/by-id | grep 'sda$'
lrwxrwxrwx. 1 root root  9 2016-08-05 09:49 ata-SAMSUNG_HD103UJ_S13PJ0123456789 \
  -> ../../sda

したがって、交換するドライブのシリアル番号を書き留め、システムの電源を切り、ドライブを一致するシリアル番号(ドライブラベルに印刷されている)と交換することができます。

ヒント1:新しいドライブを追加するときは、追加のラベルにシリアル番号を記入し、直接見える側(コネクタ側など)にそのラベルを貼ります。

/dev/disk/by-id/...リンクは、新しいデバイスをRAIDに追加するときにも役立ちます。

ProTip#2:ドライブを不均一に選択します。つまり、 独立したメーカー のモデル、すでに異なる電源オン時間のドライブなどを使用します。したがって、体系的な問題が原因で複数の障害が発生する可能性が低くなります。

ProTip#3:BTRFSやZFSなどのチェックサムファイルシステムを使用します。チェックサムの利点に加えて、最初にドライブを取り外すことなくドライブを交換することもサポートします。

5
maxschlepzig

いいえ、HDDを先制的に交換することはありません。

あなたの場合、専用のRAIDファイルシステムに切り替えることをお勧めします。私の個人的な最愛の人はZFSですが、BTRFSも同様に機能すると思います。

ZFSを使用すると、新しいHDDをインストールし、ホットスペアとしてプールに追加し、ZFSにHDDを定期的に「スクラブ」(エラーの自動チェック)させ、スクラブでエラーが発生したときにホットスペアをアクティブにします。その後、ZFSはそれを自動的に初期化し、それが完了すると、欠陥のあるものをリッピングできます。プール内のHDDが同じメーカー/実行でない限り、それらが同時に正しく故障しないことを合理的に確信できます(もちろん、パラノイアのレベルによって異なります)。

次回は、HDDを取り付けるときにラベルを付けて、HDDを取り外さなくても見つけられるようにする必要があることは言うまでもありません...;)

これらすべてを既存のソリューションと並行して実行すると(ケースに2台の追加HDD用の十分なスペースがある場合)、将来に備えることができます。すべてのデータを新しいディスクに移行してから、古いディスクを将来のホットスペアとして使用できます。

(注:ここで例として使用したZFSにアクセスする場合は、「zfs ecc」をグーグルで検索し、賢明に選択してください)。

1
AnoE