ZFS Boot

Solaris Nevada build 90 が出ました。 これでようやくインストーラが ZFS root ファイルシステムの作成に対応して、ZFS でのインストールと起動が簡単にできるようになりました。

ただし GUI のインストーラはまだ対応していません。 GUI のインストーラは使用していないので個人的には問題ないのですが。

インストーラがどのように対応したのか、気になっていたところを確認しました。
Solaris Interactive Text (Console session) を使用して初期インストールをする場合です。 いつも自分が使用している方法です。

まずはファイルシステムのタイプを選択するようになっています。

次は既存のパーティションから残しておきたいものを選択するところです。

この例は元々

/          c0d0s0
/var       c0d0s1
swap       c0d0s3
ZFS Pool   c0d0s7

このようなパーティションに分けて使用していた場合です。
この中で残しておきたい ZFS 用に使用していた c0d0s7 の部分だけを選択しました。

次は新たに作成する ZFS Pool の設定です。

ここで指定した内容で ZFS root 用の Pool やファイルシステムが作成されます。
ここでは /var を分けて作成するように指定しました。

インストールが完了すると ZFS root はこのようにできています。

# zfs list
NAME                    USED  AVAIL  REFER  MOUNTPOINT
rpool                  1.67G  9.16G  35.5K  /rpool
rpool/ROOT              683M  9.16G    18K  legacy
rpool/ROOT/snv_90       683M  9.16G   669M  /
rpool/ROOT/snv_90/var  13.9M  9.16G  13.9M  /var
rpool/dump              512M  9.16G   512M  -
rpool/export             37K  9.16G    19K  /export
rpool/export/home        18K  9.16G    18K  /export/home
rpool/swap              512M  9.16G  13.1M  -

容量は参考にしないでください。 試すために最低限のものしかインストールしていません。
/var は分けるように指定したのでこのようにできています。
dump と swap のサイズは自動的に RAM 容量の 1/2 になるようです。

元々 c0d0s7 に存在していた ZFS の pool1 を使えるようにするには次のようにします。

# zpool import -f pool1
 
# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool1  4.91G   168K  4.91G     0%  ONLINE  -
rpool    11G  1.18G  9.82G    10%  ONLINE  -

これで、rpool の方は新しい OS を上書きするため用として、pool1 の方は残しておきたいものを置いておくため用として使い分ける事ができるようになります。


その他の関連

# swap -l
swapfile                  dev    swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 182,2        8  1048568  1048568
 
# dumpadm
      Dump content: kernel pages
       Dump device: /dev/zvol/dsk/rpool/dump (dedicated)
Savecore directory: /var/crash/
  Savecore enabled: yes
 
# cat /etc/vfstab
#device         device   mount             FS       fsck  mount   mount
#to mount       to fsck  point             type     pass  at boot options
#
fd              -        /dev/fd           fd       -     no      -
/proc           -        /proc             proc     -     no      -
/dev/zvol/dsk/
     rpool/swap -        -                 swap     -     no      -
/devices        -        /devices          devfs    -     no      -
sharefs         -        /etc/dfs/sharetab sharefs  -     no      -
ctfs            -        /system/contract  ctfs     -     no      -
objfs           -        /system/object    objfs    -     no      -
swap            -        /tmp              tmpfs    -     yes     -
#見やすくなるように加工してあります
 
/rpool/boot/grub/menu.lst の内容
title Solaris Express Community Edition snv_90 X86
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
 
title Solaris failsafe
findroot (pool_rpool,0,a)
kernel /boot/platform/i86pc/kernal/unix -s -B $ZFS-BOOTFS
module /boot/x86.miniroot-safe

HDD を2台使うようにすると自動的にミラーの Pool にしてくれます。

自分がやりたい事は問題なくできるようなので安心しました。 Caiman インストーラの方はシンプルすぎてやりたい事ができないので...。

VMware Fusion 2.0 Beta1 で試したところでは、メモリが足りないとインストーラが途中でハングするようでした。 どのくらい必要なのかはわかりませんが、512MB ではだめなようです。 1GB では最低限のインストールはできましたが、全体をインストールしようとすると途中でカーネルパニックが起きて再起動してしまいます。 2.0 Beta1 で試しているからなのかもしれませんが...。

ところで、Mac OS X への ZFS 実装は進展してほしいですね。 WWDC で何か出てこないだろうか...