FileSystem環境となるように構築しました。NotesFreeBSDはさくらのVPSでZFS環境を作って使ってはいましたが、自身でインストールメディアからインストールするのははじめてというレベルの初心者です。FileSystemとして構築するだけであれば、それほど苦労せず出来ました。資料に記されている手順をもとに構築を行いました。[PDF]以下に実施した手順をまとめましたので記載致します。ESXi上に作成したゲストOSへ行いました。記載していた手順に不備がありましたので修正しました。"OS起動時に読み込まれる各コンフィグファイルを修正する"の項目でrc.conf作成先PATHの誤りを修正しました。勉強会の資料を基に、大まかに以下の順序で作成を行いました。現状のFreeBSDのインストーラはZFSでのインストールに対応していないので、CUIで設定を行っていきます。9.1-RELEASEカーネル類を展開するOS起動時に読み込まれる各コンフィグファイルを修正するzpool.cacheを明示的に作成するストレージプール/データセットにプロパティを指定するZFSでブート可能かチェックを行うシステムを再起動し、設定を確認するゲストOS環境インストールする仮想マシンのスペックは以下です。ZFSを利用するにはメモリリソースやディスクの本数など構成に不足があると思いますが、ここではZFS環境構築を優先しています。※SCSコントローラに準仮想化を選択したいところでしたが、非推奨となっており認識されませんでした。9.1では認識されませんでした。)からブートさせます。[Enter]を押下して、通常ブートさせます(シングルユーザモードでも構いません)。[Install]を選択します[YES]を押下して、キーボードの設定を行います。使っているキーボードのタイプに合わせて指定します。106を指定しました。ホスト名を設定します。インストールするコンポーネントを指定します。パーティションの設定を行います。ここで[Shell]を選択します。ここから以下のようにCUIに切り替わりますので、先に記載した資料をもとにZFSの設定を行います。GPTパーティションを作成する新規にGPTパーティションを作成します。SASのデバイス名は/dev/da0でしたが、ここは環境に合わせて読み替えてください。created最初のパーティションにブートパーティションfreebsd-bootを作成します。ここには/boot/pmbr(約512B)と/boot/gptzfsboot(約40KB)が読み込まれることになるため、その分だけ確保しておけば良いのですが、念のため64KB確保しています。34としています(省略可)。added2番目のパーティションにスワップパーティションfreebsd-swapを作成します。スワップサイズは1GBとしておきます。added3番目のパーティションはZFSファイルシステムパーティションfreebsd-zfsとして作成します。addedブートローダーへの書き込みを行います。GPTでは、FreeBSDのブートシーケンスはBIOS→pmbr→gptzfsboot(ZFSの場合)/gptufsboot(UFSの場合)→/boot/loader→kernelとなっているようなので、-bオプションでブートストラップコードを含むファイル/boot/pmbrを指定し、-pオプションでパーティションに書き込まれるブートストラップコード/boot/gptzfsbootを指定し、-iオプションの引数で最初のパーティションに書き込むように指定します。※パーティション作成の手順に失敗した場合は、以下の手順でディスクパーティション情報を削除できます。destroyedZFSストレージプールとデータセットを作成するZFSストレージプールを作成します。メディアからブートしているため/には書き込めないので、代替ルートディレクトリとして/mediaを指定します。これにより、プール内のすべてのマウントポイントの先頭にこのディレクトリが付加されます。/dev/gpt/disk0メモリ搭載量が4GB以下の場合はZFSのプリフェッチ機能がデフォルトで無効になっている旨のメッセージと、ZFSファイルシステム、ストレージプールのバージョンが表示されます。ZFSのプリフェッチ機能とは、ファイル読み取りパターンから一部のファイル読み取りを予測することでIO待ち時間を削減する機能です。vfs.zfs.prefetch_disable=0を追加してください。25データセットを作成します。ここではSolaris10のようなデータセット構成にするため、以下のようなデータセットにしています。他にも必要なデータセットがあれば、作成します。rpool/ROOT/FreeBSDブートに利用するデータセット(ZFSファイルシステム)を設定します。ここではrpool/ROOT/FreeBSDを設定します。ここで設定したデータセットがZFSルートファイルシステムとなります。rpool現時点での各データセットとそのマウントポイントは以下のようになっております。/mediaを代替ルートディレクトリとしていますので、すべてのマウントポイントの先頭に/mediaが付与されています。ルートファイルシステムのマウントポイントである/media/ROOT/FreeBSD配下へ展開します。/media/ROOT/FreeBSDOS起動時に読み込まれる各コンフィグファイルを設定するカーネルバイナリを展開後、/media/ROOT/FreeBSD配下にFreeBSDの各ディレクトリが作成されますので、ZFS用にコンフィグファイルを設定していきます。システム起動時にZFS関連モジュールを読み込むように、loader.confにzfs_load="YES"を設定します。vfs.root.mountfromにはZFSルートファイルシステムとなるデータセットを指定します。/media/ROOT/FreeBSD/boot/loader.confシステム起動時にZFSが有効になるようにrc.confを設定します。/media/ROOT/FreeBSD/etc/rc.confZFS管理ではないswapデバイスの設定を/etc/fstabに記載します。/media/ROOT/FreeBSD/etc/fstabzpool.cacheを明示的に作成するZFSファイルシステムを一度アンマウントします。-a作成したpoolをexportし、再度importします。zpool.cacheはOS起動時に読み込まれ、ストレージプールを認識するために利用されるファイルで、import時にはzpool.cacheファイルを/tmp上に作成するように指定します。これは、本来/boot/zfs配下へ作成されるこのファイルが、この時点では該当ディレクトリに書き込めないため、暫定的に/tmpへ作成するようにしています。rpool/tmp/zpool.cacheファイルをコピーします。/media/ROOT/FreeBSD/boot/zfs/ストレージプール/データセットにプロパティを指定するストレージプールと同名のデータセットrpoolはマウントしないようにし、その配下のデータセットrpool/ROOTをlegacyへ、rpool/ROOT/FreeBSDを/へマウントするようにマウントポイントを指定します。※他にもデータセットを作成している場合は、ここで全てマウントポイントを指定します。rpool/ROOT/FreeBSD指定したマウントポイントを確認します。localZFSでブート可能かチェックを行う。※これは飛ばしても構いません。9.1より、ZFSでブートが可能かをチェックするスクリプトが導入されたようですので、それをビルドしてチェックを行います。下記のコマンドでビルドします。install以下のような出力があります。/usr/bin/zfsboottest.shチェックスクリプトを実行します。rpool以下のような、ZFSルートファイルシステムに指定しているデータセットrpool/ROOT/FreeBSDをlegacyにマウントするようにメッセージが出ます。"legacy".legacyは従来通り/etc/fstabで管理を行う設定で、FreeBSDでZFSを使う場合、ZFSの自動マウントが制御できないなどの問題回避のためにルートファイルシステムをlegacyでマウントすることが推奨されているようです。今回はSolaris10のようなデータセット構成としてルートファイルシステムを/にするため、この作業は飛ばします。実施しなくても手順に誤りがなければ問題なく起動します。(チェックスクリプト実行時の出力メッセージの通りにrpool/ROOT/FreeBSDのマウントポイントをlegacyへ変更)システムを再起動し、設定を確認するリブートし、OSが正常に起動することを確認します。nowログインし、パーティションやストレージプール、データセットを見ると以下のようになっております。FileSystem環境が構築できました。※続いて、OSの設定を行う必要がありますが、ここでは割愛します。Root環境の構築は完了です。ARCやZIL、ミラー、RAID-ZといったZFSの機能を生かす設定などは全然出来ておらず、FreeBSDもまだまだ初心者ですが、これからいろいろ触れていきたいと思います。