Sunのワークステーションにハードディスク追加

以前、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

弾さんも言ってた けど、ZFSはメッセージが丁寧だね。

そして、しばらく待つと同期が終わったようであった。

% 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)

はじめてのSolaris 10―オープン・ソースになった最新OSを使いこなす! (IO BOOKS)