以前、Sunの Blade 1000 を買った。これにハードディスクを追加して、今システムが入ってる古いディスクとmirror化したい。
状況
先日これにSolaris 10をクリーンインストールして、このときファイルシステムはZFSにした。ちなみに、インストールの参考にしたのは『 はじめてのSolaris 10 』 である。
さて、今日、このマシンにハードディスクを追加した。接続はFC-ALで、サイズは新旧ともに73GBである。物理的な取り付けの方法は Sunのマニュアル に絵入りで書いてある。その通りにした。
認識
取り付けて起動すると、その時点でカーネルはディスクの存在を認識している。 dmesg(1)
を見ると、起動時になにやら追加したディスクのファイバーチャネルWWNが出てきている。ただ、デバイスファイルは自動的には作成されない物らしい。okプロンプトから boot -r
して、 -r
付きで起動すると作成される。
# sync; sync; sync; init 0 ok boot -r
再起動後 /dev/dsk
以下を見るとエントリが増えていて、新しいディスクはc1t2d0s0として認識されている。
% ls /dev/dsk c0t6d0s0@ c0t6d0s2@ c0t6d0s4@ c0t6d0s6@ c1t1d0s0@ c1t1d0s2@ c1t1d0s4@ c1t1d0s6@ c1t2d0s0@ c1t2d0s2@ c1t2d0s4@ c1t2d0s6@ c0t6d0s1@ c0t6d0s3@ c0t6d0s5@ c0t6d0s7@ c1t1d0s1@ c1t1d0s3@ c1t1d0s5@ c1t1d0s7@ c1t2d0s1@ c1t2d0s3@ c1t2d0s5@ c1t2d0s7@
パーティションテーブル
format(1)
で見るには、追加ディスクはUFS形式で使うように既にスライスを切ってあるらしい。
Part Tag Flag Cylinders Size Blocks 0 root wm 0 - 824 4.00GB (825/0/0) 8395200 1 swap wu 825 - 2473 8.00GB (1649/0/0) 16780224 2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312 3 unassigned wm 2474 - 4534 10.00GB (2061/0/0) 20972736 4 unassigned wm 4535 - 6595 10.00GB (2061/0/0) 20972736 5 unassigned wm 6596 - 10717 20.00GB (4122/0/0) 41945472 6 unassigned wm 10718 - 14065 16.25GB (3348/0/0) 34069248 7 unassigned wm 0 0 (0/0/0) 0
一方、今システムが入ってる古いディスクは全部が第0スライスに割り当てられている。
Part Tag Flag Cylinders Size Blocks 0 root wm 0 - 14086 68.35GB (14087/0/0) 143349312 1 unassigned wm 0 0 (0/0/0) 0 2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0
これはSolarisのインストーラーが作成したものだけれども、要はディスク全体をZFS poolに突っ込んでるわけだ。これに従えばいいだろうと思って、新しいディスクも同様の切り方にした。
ZFS
で、できたスライスをZFS poolに追加する。
% sudo /usr/sbin/zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 errors: No known data errors
これが今の状況で、c1t1d0s0と新しいディスク(c1t2d0s0)をミラー化したいので次のようにする。
% sudo /usr/sbin/zpool attach rpool c1t1d0s0 c1t2d0s0 invalid vdev specification use '-f' to override the following errors: /dev/dsk/c1t2d0s0 contains a ufs filesystem.
なんか怒られる。ちょっと恐いけれども、 -f
してみよう。
% sudo /usr/sbin/zpool attach -f rpool c1t1d0s0 c1t2d0s0 Please be sure to invoke installboot(1M) to make 'c1t2d0s0' bootable.
すると、今度はうまくいく。ディスクが同期を始めたらしく、アクセス音がする。状況を見てみると次のようになっている。
% sudo /usr/sbin/zpool status pool: rpool state: ONLINE 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. scrub: resilver in progress for 0h0m, 4.25% done, 0h11m to go config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 c1t2d0s0 ONLINE 0 0 0 526M resilvered errors: No known data errors
そして、しばらく待つと同期が終わったようであった。
% sudo /usr/sbin/zpool status pool: rpool state: ONLINE scrub: resilver completed after 0h11m with 0 errors on Thu Feb 4 20:56:44 2010 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 c1t2d0s0 ONLINE 0 0 0 12.1G resilvered errors: No known data errors
ブート情報
attach
したときに、 zpool
がinstallbootがどうとか言っていた。 このへん かな? そのままだと追加した方のディスクからは起動できないから、いざというときのためにブート情報を書き込むわけね。
案内通り次のようにする。
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t2d0s0
で、一応終わりだと思われる。
参考

はじめてのSolaris 10―オープン・ソースになった最新OSを使いこなす! (IO BOOKS)
- 作者: 今井悟志
- 出版社/メーカー: 工学社
- 発売日: 2006/08
- メディア: 単行本
- 購入: 4人 クリック: 31回
- この商品を含むブログ (3件) を見る