HOME / コンピュータTips / Solaris / zfs / ディスクの交換(非冗長化ディスクをアップグレード)
Date: 2009/06/18 | | Tags: Solaris, OpenSolaris, zfs, zpool, replace, ディスク, 交換, アップグレード, 容量違い
私のThinkpadT61は当然ベアメタルでOpenSolarisがインストールされておりますが、rpool(ブート、その他のメイン用)として高速なディスクが、それ以外のストレージとしてdpoolを作っています。
dpoolは200G程あるのですが、RAIDもミラーもされておらず、実はrpoolのバックアップがzfs send / zfs recvでファイルシステム単位でコピーされているだけでなく、いろんなデータのisoイメージや、DimensionPlusのアーカイブ等々がギガ単位で消えていくので、あっという間に無くなっていってしまいます。
というわけで200Gのちょっと高速なHDD(7200rpm)から、500Gの安価なHDD(5400rpm)に置き換えてみました。
今回のミッションは
まずは現在の状況を見ます。
zpool status
プール: dpool 状態: ONLINE 状態: このプールはディスク上の古い形式を使用してフォーマットされています。
プールは引き続き使用できますが、一部の機能は利用できません。
アクション: 'zpool upgrade' を使用してプールをアップグレードします。この操作を実行すると、
以前のバージョンのソフトウェアからプールにアクセスできなくなります。
スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUMdpool ONLINE 0 0 0c3d0p0 ONLINE 0 0 0
エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUMrpool ONLINE 0 0 0c4t0d0s0 ONLINE 0 0 0
エラー: 既知のデータエラーはありません
置き換えるのは、c3d0p0です。
追加したデバイスの確認をします。
pfexec format
Searching for disks...done AVAILABLE DISK SELECTIONS:
0. c3d0 <drive type unknown>/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,01. c4t0d0 <DEFAULT cyl 15586 alt 2 hd 255 sec 63>/pci@0,0/pci17aa,20a7@1f,2/disk@0,02. c7t0d0 <DEFAULT cyl 60799 alt 2 hd 255 sec 63>/pci@0,0/pci17aa,20ab@1d,7/storage@1/disk@0,0
Specify disk (enter its number): ^C
なるほど、c7t0d0が追加されたディスクなんですな。
つまり、
現在の状況を見ます。
zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT dpool 186G 165G 20.9G 88% ONLINE - rpool 119G 93.3G 25.7G 78% ONLINE -
rpoolがシステム用で今回は無視するところ。dpoolが拡張用ストレージ(通称掃きだめ)です。もはや、いっぱいいっぱいになりつつあります。
では取り替えおまじない・・・
pfexec zpool replace dpool /dev/dsk/c3d0p0 /dev/dsk/c7t0d0
簡単すぎる・・・すぐ終わります。ジョブが投げられた状態なので普通にdpoolにこの後もアクセスが可能です。
再びリストをとります。
pfexec zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT dpool 186G 165G 20.9G 88% ONLINE - rpool 119G 93.3G 25.7G 78% ONLINE -
かわりません。
ステータスを見てみます。
pfexec zpool status プール: dpool 状態: ONLINE 状態: 1 つまたは複数のデバイスの再同期化が進行中です。
プールはおそらく縮退状態で動作を継続します。
アクション: 再同期化が完了するまでお待ちください。 スクラブ: resilver in progress for 0h0m, 0.23% done, 4h40m to go 構成:
NAME STATE READ WRITE CKSUMdpool ONLINE 0 0 0replacing ONLINE 0 0 0c3d0p0 ONLINE 0 0 0c7t0d0 ONLINE 0 0 0 388M resilvered
エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUMrpool ONLINE 0 0 0c4t0d0s0 ONLINE 0 0 0
エラー: 既知のデータエラーはありません
おお!
上記、ここがポイントです
状態: 1 つまたは複数のデバイスの再同期化が進行中です。
プールはおそらく縮退状態で動作を継続します。
アクション: 再同期化が完了するまでお待ちください。 スクラブ: resilver in progress for 0h0m, 0.23% done, 4h40m to go
スクラブをしており、今、0.23%しかすんでいないことがわかります。
裏ではこんな勢いです。
iostat -Yn 1
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 468.6 0.0 19387.4 0.0 1.2 0.8 2.5 1.7 29 45 c3d0 0.0 2.0 0.0 8.0 0.0 0.0 0.0 0.8 0 0 c4t0d0 0.0 513.8 0.0 19522.6 11.6 2.9 22.6 5.7 96 99 c7t0d0
見ての通り20MB/SEC程度でコピー中。USB2だとまぁこんなもんです。
途中はこんな感じ・・・・
pfexec zpool status
プール: dpool 状態: ONLINE 状態: 1 つまたは複数のデバイスの再同期化が進行中です。
プールはおそらく縮退状態で動作を継続します。
アクション: 再同期化が完了するまでお待ちください。 スクラブ: resilver in progress for 2h15m, 93.31% done, 0h9m to go 構成:
NAME STATE READ WRITE CKSUMdpool ONLINE 0 0 0replacing ONLINE 0 0 0c3d0p0 ONLINE 0 0 0c7t0d0 ONLINE 0 0 0 154G resilvered
エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUMrpool ONLINE 0 0 0c4t0d0s0 ONLINE 0 0 0
エラー: 既知のデータエラーはありません
もりもりやってますね。後もう少し!
pfexec zpool status
プール: dpool 状態: ONLINE 状態: このプールはディスク上の古い形式を使用してフォーマットされています。
プールは引き続き使用できますが、一部の機能は利用できません。
アクション: 'zpool upgrade' を使用してプールをアップグレードします。この操作を実行すると、
以前のバージョンのソフトウェアからプールにアクセスできなくなります。
スクラブ: resilver completed after 2h26m with 0 errors on Wed Jun 17 22:25:20 2009 構成:
NAME STATE READ WRITE CKSUMdpool ONLINE 0 0 0c7t0d0 ONLINE 0 0 0 165G resilvered
エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUMrpool ONLINE 0 0 0c4t0d0s0 ONLINE 0 0 0
エラー: 既知のデータエラーはありません
おわったぁ!
結局2時間半程度で終わりました。早いですね。
ディスクは増えてるんでしょうか?
zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT dpool 465G 165G 300G 35% ONLINE - rpool 119G 93.0G 26.0G 78% ONLINE -
増えています!
ディスクを取り外します。
pfexec zpool export
無事取り外したら、ベイに付け替えます。
pfexec zpool import dpool
確認します。
zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT dpool 465G 165G 300G 35% ONLINE - rpool 119G 93.0G 26.0G 78% ONLINE -
以上、とっても簡単にディスクの取り替え作業が終わりました。
以上、基本は下記のコマンドだけでした。
pfexec zpool replace dpool /dev/dsk/c3d0p0 /dev/dsk/c7t0d0