HOME / コンピュータTips / Solaris / zfs / ディスクの交換(非冗長化ディスクをアップグレード)
事例:ワーク用のHDDが足りないので付け替え †
私のThinkpadT61は当然ベアメタルでOpenSolarisがインストールされておりますが、 rpool(ブート、その他のメイン用)として高速なディスクが、それ以外のストレージとしてdpoolを作っています。
dpoolは200G程あるのですが、RAIDもミラーもされておらず、実はrpoolのバックアップがzfs send / zfs recvでファイルシステム単位でコピーされているだけでなく、いろんなデータのisoイメージや、DimensionPlusのアーカイブ等々がギガ単位で消えていくので、あっという間に無くなっていってしまいます。
というわけで200Gのちょっと高速なHDD(7200rpm)から、 500Gの安価なHDD(5400rpm)に置き換えてみました。
今回のミッションは
- ウルトラベイ(SATA)につけている200GのHDDを500GBに置き換える。 です。
移行プラン †
- 移行後の500GB HDDをUSBに接続する
- zpool replaceを利用し、ベイの200GBとUSBの500GBを取り替える
- どちらのHDDもexportし、ベイに500GのHDDを入れる。
ZFSはディスクの取り替えも簡単 †
まずは現在の状況を見ます。
zpool status
プール: dpool 状態: ONLINE 状態: このプールはディスク上の古い形式を使用してフォーマットされています。 プールは引き続き使用できますが、一部の機能は利用できません。 アクション: 'zpool upgrade' を使用してプールをアップグレードします。この操作を実行すると、 以前のバージョンのソフトウェアからプールにアクセスできなくなります。 スクラブ: 何も要求されませんでした 構成: NAME STATE READ WRITE CKSUM dpool ONLINE 0 0 0 c3d0p0 ONLINE 0 0 0 エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c4t0d0s0 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,0 1. c4t0d0 <DEFAULT cyl 15586 alt 2 hd 255 sec 63> /pci@0,0/pci17aa,20a7@1f,2/disk@0,0 2. 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が追加されたディスクなんですな。
つまり、
- c3d0p0と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 CKSUM dpool ONLINE 0 0 0 replacing ONLINE 0 0 0 c3d0p0 ONLINE 0 0 0 c7t0d0 ONLINE 0 0 0 388M resilvered エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成:
NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c4t0d0s0 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 CKSUM dpool ONLINE 0 0 0 replacing ONLINE 0 0 0 c3d0p0 ONLINE 0 0 0 c7t0d0 ONLINE 0 0 0 154G resilvered エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c4t0d0s0 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 CKSUM dpool ONLINE 0 0 0 c7t0d0 ONLINE 0 0 0 165G resilvered エラー: 既知のデータエラーはありません プール: rpool 状態: ONLINE スクラブ: 何も要求されませんでした 構成: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c4t0d0s0 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添付ファイル:


