2014年9月上旬

【多分ないまま <| 日記の目次へ |> 2014年9月中旬


2014年9月10日(水) : 自宅鯖HDD交換(4/n) [PC]

(続き)
#今日の記事、当初は番外としたけど、続き物に組み入れ。

一連の顛末からは少し離れ、データ移行の検討。

まず現状の整理。稼働中なのは2TB×4発のraidz1なので、実質データは6TB。作業に際して多少の削減は可能だが、手間と期間を考えると、まずはこのデータをまるっと移行することを考える。構成としてぱっと思いついたものを書き出してみる。

・2TB×4発のraidz1で実質6TB + バックアップ3TB×2 (現状維持)
・3TB×2発のmirrorを2セットで実質6TB (バックアップ無し)
・3TB×4発のraidz2で実質6TB (バックアップ無し)
・3TB×4発のraidz1で実質9TB + バックアップ4TB×2 (バックアップ足らない)

まず前提として、総容量を増やしたい気持ちはほぼ無い、というかむしろ増やしたくない(容量があればあるだけ使ってしまうので、バックアップの手間が増えるだけになってしまう)。また、現在手持ちの使用可能な玉は、現状バックアップ用としている3TB×1と、未開封の2TB×1、3TB×1。あと当然、移行が面倒かどうかも検討材料。

ただ、なかなか決定的な理由もなく、いまだ決められず悩み中…。

(続く)


2014年9月9日(火) : 自宅鯖HDD交換(3/n) [PC]

(続き)

HDD交換の顛末の間に、現状の確認。かなり抜粋。

 yua# atacontrol list | egrep 'ad[0-9]+'
     Slave:   ad1 <INTEL SSDSA2M040G2GC/2CV102HD> SATA revision 2.x
     Master:  ad4 <WDC WD20EARX-00PASB0/51.0AB51> SATA revision 2.x
     Master:  ad6 <WDC WD20EZRX-00DC0B0/80.00A80> SATA revision 2.x
     Master:  ad8 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x
     Master: ad10 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x
 yua# smartctl -a /dev/ad4 | egrep '(Hours|Rate)'
   1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
   7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
   9 Power_On_Hours          0x0032   064   064   000    Old_age   Always       -       26604
 200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       4
 yua# smartctl -a /dev/ad6 | egrep '(Hours|Rate)'
   1 Raw_Read_Error_Rate     0x002f   100   253   051    Pre-fail  Always       -       0
   7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
   9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       44
 200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0
 yua# smartctl -a /dev/ad8 | egrep '(Hours|Rate)'
   1 Raw_Read_Error_Rate     0x002f   199   199   051    Pre-fail  Always       -       2822
   7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
   9 Power_On_Hours          0x0032   057   057   000    Old_age   Always       -       31664
 200 Multi_Zone_Error_Rate   0x0008   192   183   000    Old_age   Offline      -       2332
 yua# smartctl -a /dev/ad10 | egrep '(Hours|Rate)'
   1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       63
   7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
   9 Power_On_Hours          0x0032   057   057   000    Old_age   Always       -       31667
 200 Multi_Zone_Error_Rate   0x0008   200   199   000    Old_age   Offline      -       109

ad8とad10が初期構築時から稼働しているHDDだが、ad8のエラー率が高いのが目立つ。これもういつ壊れてもおかしくなさそうだな。ad10もエラー数は1〜2桁低いけど稼働時間的には同じだから、もはやこの2台は寿命と考えたほうが良さそうかも。
で、今回の再構築中にエラー吐いたのはad4。smart上のエラー率はさらに低いけど、現にエラーを吐いたと言うことは何らかの前兆ではあるわけで、これ結局ad4,ad8,ad10全部(今回入れ換えたad6以外)「置き換えるべき」という結論になっちゃう?

さて、そうなると、いっそ3TB×4台で組み直してしまおうと言う案が現実的に。ZFSプールが健全であれば、現状(2TB×4台)のHDDを1台ずつ順に3TBに入れ換え、再構築、入れ換え、再構築と繰り返す手が使えるそうだが、今回はZFSプールが健全ではないのでたぶん無理。
となると、別途3TB×4のZFSプールを立ててデータ移行ということになるか。幸い、電源だけが死んでいる同筐体のサーバ(CPUは1ランク遅い)があるので、こちらの電源を復帰させて一時的に環境をミラーすれば、データ移行はネットワーク越しでいけそうかな。
ちなみにその予備機みたいなサーバ、実は元々は録画鯖はその旧機材で動いていて、これも2年くらい前に電源が壊れたときの抜け殻だったり。当初は電源だけ差し替えようと思ったんだけど予想以上に難儀しそうだったので、予備機として確保しておいた今の機材にHDD/SSDとPT2を繋ぎ替えたいきさつが。

まぁいずれにしろ、間違って開始してしまった再々構築が終わらないことには…orz。

(続く)


2014年9月9日(火) : 自宅鯖HDD交換(2/n) [PC]

(続き)

…で結局、再構築完了は翌々日、9月9日の早朝。約40時間かかったという結果。まぁ再構築中に何本もTV録画はするし、その録画データの自動エンコード処理も走るし、また月曜を跨いだのでweeklyの処理も走るしで、余計な横槍が山のように入ったから時間が伸びたのは致し方なし。ファイル欠損も、件の1個だけで済んだ様子。

ただ、ファイル欠損があったためか、再構築終了後もアレイはDEGRADED状態からONLINE状態には戻らず、何らかの処理が求められている様子。

 yua# zpool status
   pool: zpool0
  state: DEGRADED
 status: One or more devices has experienced an error resulting in data
         corruption.  Applications may be affected.
 action: Restore the file in question if possible.  Otherwise restore the
         entire pool from backup.
    see: http://illumos.org/msg/ZFS-8000-8A
   scan: resilvered 1.70T in 40h37m with 1 errors on Tue Sep  9 06:22:24 2014
 config:
 
         NAME                        STATE     READ WRITE CKSUM
         zpool0                      DEGRADED     1     0     0
           raidz1-0                  DEGRADED     1     0     0
             ad4                     ONLINE       1     0     0
             replacing-1             OFFLINE      0     0     0
               13108098191878684347  OFFLINE      0     0     0  was /dev/ad6/old
               ad6                   ONLINE       0     0     0
             ad8                     ONLINE       0     0     0
             ad10                    ONLINE       0     0     0
 
 errors: 1 data errors, use '-v' for a list

see:で出てくるURL先を読むと怖いことが書いてあるのだが、action:では欠損ファイルさえ何となればよいという指示が先にあるので、まぁそういうことなのだろう。ただ、こちらとしてはファイル欠損は了承済みなのだが、その先の手順が書いてなくて停滞中。ググってもなかなか情報に行き当たらず、とはいえ手探りで色々試すのも怖い…。

とりあえず試したこと。

 yua# zpool clear zpool0 ad6
何も変わらず。
 yua# zpool online zpool0 ad6
あちゃー。再構築(resilver)がもう一回始まっちゃったよorz。前回実績により、再度2日休み確定だ…。

(続く)


2014年9月7日(日) : 自宅鯖HDD交換(1/n) [PC]

ことの起こりは1か月前に遡り。初期構築時(4年近く前)から使っていたata3(ad6)のHDD、WD20EARSがお亡くなりに。どうやらコントローラ側が逝ったか刺さってしまったようで、アクセスランプ点きっぱなし。

 Aug  8 09:53:41 yua kernel: ata3: port is not ready (timeout 15000ms) tfd = 00000080
 Aug  8 09:53:42 yua kernel: ata3: hardware reset timeout
 Aug  8 09:53:42 yua kernel: unknown: TIMEOUT - FLUSHCACHE48 retrying (1 retry left)
 Aug  8 09:54:06 yua kernel: ata3: port is not ready (timeout 15000ms) tfd = 00000080
 Aug  8 09:54:06 yua kernel: ata3: hardware reset timeout
 Aug  8 09:54:06 yua kernel: unknown: TIMEOUT - FLUSHCACHE48 retrying (0 retries left)
 Aug  8 09:54:31 yua kernel: ata3: port is not ready (timeout 15000ms) tfd = 00000080
 Aug  8 09:54:31 yua kernel: ata3: hardware reset timeout
 Aug  8 09:54:31 yua kernel: unknown: FAILURE - FLUSHCACHE48 timed out

ここからRAIDZ1が縮退(DEGRADED)運転に入るが、夏コミや帰省のバタバタなどで対応は遅れる。初期構築時から使っているHDDは稼働3年半を超えたので、いっそ3TB×4に組み替えてしまおうか、などとも悩み始めてしまうが、結局は移行手順が煩雑になるので断念し、今回は2TB×4の現行維持でいくことで決定。9月に入ってようやく交換用HDDを購入。

ということで、9月7日の午後、HDD入れ換え作業を開始。録画鯖としての機能は止めずに実施するため、できれば再構築中に録画が発生しない日程で作業をしたいところだが、今期は録画予約の無い曜日が無いため無理な相談。強行軍とする。
交換作業自体は、約3年前の記録に沿って実施。ただ、前回はHDDのコントローラは生きていたが、今回はコントローラが刺さっていた(アクセスランプが付きっぱなし)点が違い、はたして新しいHDDを無事認識してくれるか心配だったが、新HDDをattachした時点でバスがリセットされたようで、すんなり回復。
余談だが、ごそごそと作業準備をしていく途中、なぜか今回購入した以外の未開封の2TB HDDも発見されてしまう。記憶を遡っていくと、しばらく前に「HDDのread errorが出た(回復可能errorでDEGRADEまでは至らず)ので交換用HDDを手配はしたけど、交換前に他の理由で再起動したらerrorが消えちゃったので放置したことがあったなぁ」などと思い出す。HDDのLOTも約2年前だったので、記憶は定かじゃないけどその頃の話。放置期間が長いのが気になったけど、今回は古いほう優先ということで発掘したHDDを使用。

交換後は自動的に再構築(resilvering)が始まり、あとは進捗状況を時折確認。…で、25%くらい進んだところでエラー発生。ちなみにこれが、初代TeraStationから始まる自宅RAID歴10年近く、延べ10回前後は実施している再構築で、初めての再構築中のエラー遭遇だったり。

 Sep  7 18:57:23 yua kernel: ad4: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=3098392832
 Sep  7 18:57:26 yua kernel: ad4: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=3098392832

状況を確認すると破損ファイルはエンコード済の動画ファイル(「いつか天魔の黒ウサギ」のどれかの回)1個で、まぁ消えても痛くはないファイルだし、エラーが1回出た後は処理は進んでいる様子。そもそも概ねバックアップは取ってあるので、リストアと再構築が面倒臭いのを除けばほぼ実害は無いのだが、なるべく面倒にはなりたくない…。
ちなみにこの頃、モバマスの響子ちゃんドリフェスの最後の追い込みで走りつつ、再構築の進捗も気にしつつで、心配事が同時進行状態。

(続く)


【多分ないまま <| 日記の目次へ |> 2014年9月中旬

Tosy <tosy@wig.nu>