FreeBSD: ad0 HDD 交換

先日から、サーバーの ATAインタフェースが DMA の 書き込みTIMEOUT エラーで操作不能になってしまっていた件ですが、夜間ジョブを止めてから操作不能になる症状は発生しないものの、今度はATAインタフェースからの読み込み時にリトライが発生しているようなメッセージが時々ログに残るようになりました。

kernel: ad0: TIMEOUT - WRITE_DMA retrying (1 retry left) LBA=575
kernel: ad0: TIMEOUT - READ_DMA retrying (1 retry left) LBA=1824447
kernel: ad0: TIMEOUT - READ_DMA retrying (1 retry left) LBA=2196415

まだ、しばらくは大丈夫だろうと思うものの、HDDからと思われるモーターの異音も聞こえてくるようになったため、HDDに完全アクセスが出来る今のうちにと考えて、本日 ad0 をリプレースを行いました。

基本的に前回のサーバーリプレースと同じ作業ですが、1台のHDDを交換するだけなので簡単。ただし、バックアップ中とHDDの交換、レストアを行っていた時間はダウンタイムが発生しました。

  1. dump コマンドによる約2.5GBのバックアップが45分くらい。
  2. PCを停止してHDDを交換するのに15分くらい。
  3. livefs CDから起動して、データをレストアするのに20分くらい。
  4. 動作確認を行い、PCを元に戻すのに10分くらい。

という、約1時間半の作業でした。
私のサーバーは複数HDDで運用しており、/ , /usr, /home が物理的に別々のHDDになっているため、(ダウンタイムは発生するものの)こういうメンテナンス作業がすごく楽です。 / や /usr ディスクの調子が悪くなる場合は、/home に dump して、壊れたHDD を交換、livefs で fixit, restore すれば終了。/home の調子が悪くなる場合は、/ やネットワークドライブにバックアップした後でHDDを交換し、バックアップからレストアすれば終了。私の場合、シングルドライブで運用すると、調子が悪くなった場合、全データを外部バックアップしてレストアする必要があるため、ダウンタイムが長時間になりやすいと言えます。それにHDD丸ごと交換するなら、OS自体を入れ直したくなってしまい、そこで別問題にハマる傾向にあります。

どのように運用するにせよ、長期間使うとハードウェア故障は必ず発生するため、重要なデータのバックアップだけは行っておくことが重要です。

今回は、不具合要因がログに残るタイプのエラーで良かったです。

メンテナンスは簡単でしたが、今年はすでに2度も大きなメンテナンスを行っているので、あと1年くらいは出来ることならPCを開けたくないな~と感じているところです。

Comments

  1. HDD交換で問題解決したはずの、DMA retry エラーですが、交換した後のHDDでも一度発生しました。
    これは絶対おかしい。HDD側の問題ではないかもしれない!と、一度HDD関係の信号ケーブルと電源ケーブルを全て外して取り付け直してみました。

    接触不良が発生していたのかどうかは不明ですが、その後DMA retry エラーは発生していません。季節が変わり室温が下がったためという可能性もあります。
    4ピンの電源プラグがイマイチ信用できないため、個人的には電源ピンの一部に接触不要が出ていたんじゃないだろうかと疑っています。

コメントを残す