一昨日からdegrade動作に入っていた内向きサーバ(HP ProLiant MicroServer)のZFSプールだが、注文しておいたHDDが届いたので、早速交換することにする。一時的になら止めても全然構わないサーバなので一旦電源を落として交換するのがセオリーだが、ここはひとつアグレッシブに、ホットスワップに挑戦してみる。一応メーカー(HP)公式的にはホットスワップには非対応ということになっているが、材料的には対応しているはずだし、いくつか事例も見付かるので。
結果的には、とりあえず交換には成功。あまりに簡単に進みすぎているのでこれが正しい手順かどうかは分からないが、記録として残しておく。
ちなみに、今回のような交換時に楽できるよう、HDDにはパーティションは切らず、全領域をzpoolに割り当てている。副産物として、AFT(4KB/sector)の制約もうまく乗り越えている模様。
まずは状況調査。ステータスを見るとad4のHDDが死んでいる模様。別途S.M.A.R.T.情報なども読み取れている(温度監視が出来ている)ので、コントローラは生きてるっぽい。# zpool status pool: zpool0 state: DEGRADED status: One or more devices are faulted in response to persistent errors. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the faulted device, or use 'zpool clear' to mark the device repaired. scan: none requested config: NAME STATE READ WRITE CKSUM zpool0 DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 ad4 FAULTED 0 130 0 too many errors ad6 ONLINE 0 0 0 ad8 ONLINE 0 0 0 ad10 ONLINE 0 0 0 errors: No known data errors # atacontrol list ATA channel 0: Master: no device present Slave: ad1 <INTEL SSDSA2M040G2GC/2CV102HD> SATA revision 2.x ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x Slave: no device present ATA channel 3: Master: ad6 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x Slave: no device present ATA channel 4: Master: ad8 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x Slave: no device present ATA channel 5: Master: ad10 <WDC WD20EARS-00MVWB0/51.0AB51> SATA revision 2.x Slave: no device present
ここでまででad4のHDDがシステム的に切り離されたので、物理的にHDDを交換(ホットスワップ)。特に明記は無かった気がするが常識的に順番に並んでいるはずなので、ドライブベイ1番のHDDを交換。ドライブを取り違えないか最も緊張する一瞬。# zpool offline zpool0 ad4 # atacontrol detach ata2
型番が微妙に違うので、微妙な容量差で弾かれたら痛いところだったが、無事にreplaceされる。zpool replaceコマンドを打った時点で自動的にresilverが始まる。最初のうちは残り時間が長く出る傾向がある感じ(上記ログは、ある程度時間が経ってからのもの)。# atacontrol attach ata2 Master: ad4 <WDC WD20EARX-00PASB0/51.0AB51> SATA revision 2.x Slave: no device present # zpool replace zpool0 ad4 # zpool status pool: zpool0 state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Aug 24 21:54:50 2011 259G scanned out of 5.16T at 74.8M/s, 19h6m to go 64.7G resilvered, 4.90% done config: NAME STATE READ WRITE CKSUM zpool0 DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 replacing-0 OFFLINE 0 0 0 ad4/old OFFLINE 0 130 0 ad4 ONLINE 0 0 0 (resilvering) ad6 ONLINE 0 0 0 ad8 ONLINE 0 0 0 ad10 ONLINE 0 0 0 errors: No known data errors
今回は約12時間でresilverが完了。だいたい31MB/sくらいで処理されたようで、理論値には遠く及ばないけどまぁ許せる範囲かな。そのまま自動的に定常状態に復帰。# zpool status pool: zpool0 state: ONLINE status: The pool is formatted using an older on-disk format. The pool can still be used, but some features are unavailable. action: Upgrade the pool using 'zpool upgrade'. Once this is done, the pool will no longer be accessible on older software versions. scan: resilvered 1.29T in 12h0m with 0 errors on Thu Aug 25 09:55:12 2011 config: NAME STATE READ WRITE CKSUM zpool0 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ad4 ONLINE 0 0 0 ad6 ONLINE 0 0 0 ad8 ONLINE 0 0 0 ad10 ONLINE 0 0 0 errors: No known data errors