2007.03.22 ZFSメンテナンスの日々 #1 といっても作ってるわけではないですが。日々メンテナンスという ことで。最近 tegge 氏のファイルシステム回りの修正により, 2007-03-04 (あるいは2007-03-03)版の ZFS が動かなくなりました。 http://lists.freebsd.org/pipermail/cvs-src/2007-March/075539.html 具体的には panic するわけですが, pjd 氏の p4 リポジトリでは 修正が行われているため, 下記アーカイブを作成しました。 http://blog.ninth-nine.com/archives/zfs_20070321-nork.tar.bz2 jail (zfs jail)対応のコードが入ってたりしますが, 使い方がよ ーわからんので試していません。TODO 見ると NFSv4 ACL サポート と chflags サポート, 後パフォーマンスチューニングというとこ ろまで作り込んだようです。NFSv4 ACL サポートは TrustedBSD の 成果を取り込んだ後…といったところのようです。 さて, このバージョン(2007-03-21版)の使用感はどうでしょうか。 基本的には 2007-03-04 版とは変わらない感じです。運用上の注意 点といいますか, 今まで取り上げていた疑問点やら何やらを整理し なおします。 1. /boot/loader.conf に zfs_loader="YES" すると起動しない。 本家 Solaris でもそうですが, ZFS は root ファイルシステム として使えないこともあり, これがサポートされることは当分 なさそうです。実際ローダーいじったり大変なことになるでしょ うから 2. 特別なカーネルコンフィギュレーション不要。 その昔, INVARIANTS と INVARIANTS_SUPPORT が必要と言いまし たが, 今では完全に不要です。また memset 関数が見付からない 問題は zfs module 作成時のコンパイラ最適化オプションを -O1 にして回避しています。同様に ZFS をカーネルに組み込むこと はできません。やろうと思えばできますが, 1 の結果が得られる だけでしょう:-)。 3. FreeBSD 管理ツールとの整合性は高いが…。 /etc/fstab に記述することや mount -a が機能するという意味 では従来の管理システムとの整合性が高くなっていますが, ZFS の運用方法を考慮すると, もはやどうでもいいや。って感じに なります。というのも 100 個も 200 個もパーティション作っ たとして, それを一々, /etc/fstab に書くのは苦痛と言わざる を得ません。というわけで zfs mount -a という使い方に移行 しよう。 4. /etc/zfs ディレクトリを作ろう。 mount, umount 前に zfs import, zfs export しなさいとあり ましたか, /etc/zfs/zpool.cache に記録されていれば, 自動 的に zfs import される(kldload zfs 時)ようになります。ま ぁこういうお節介するために, 1 が機能しないわけですが。。 # install -d -o root -g wheel -m 0700 /etc/zfs 5. カーネルメモリは多めに。 ZFS は大量のメモリを要求します。システム(OS)だけで 512MB, 推奨 1GB とのことですから, そのままでは動きません。 /boot/loader.conf に vm.kmem_size=671088640 を追加しまし ょう。カーネルメモリはディフォルトで 320MB に制限されて いますが, これを 640MB 程度まで増やす必要があります。ち なみに, これを 768MB まで増やすと起動時に panic します。 この中間で調整する必要があります。後は KVA_PAGES を調整 となりますが, 今のところ, そこまでの調整は不要です。よっ て 2 につながると(特殊な設定不要)。 6. /etc/rc.conf.d ディレクトリ作って mountlate ファイルを。 /etc/rc.conf.d/mountlate - - - - - - - - - - - - - - - - - - - - - - zfsinit () { kldstat -q -m zfs || kldload zfs } zfsmount () { zfs mount -a } zfsunmount () { zfs unmount -a } start_precmd=zfsinit start_postcmd=zfsmount stop_precmd=zfsunmount /etc/rc.conf.d/mountlate - - - - - - - - - - - - - - - - - - - - - - 7. マニュアルはインストールされない。 とりあえず, zfs コマンド, zpool コマンドを実行すれば usage が表示されるのでそれでなんとか。より正確には SUN のドキュメ ントを参照してください。 http://docs.sun.com/app/docs/doc/819-6260 とりあえず, インフラ(?)な話は, ほぼ出尽くした上に, 飽きて来た 感があるので:-), 今度は運用系(zfs snapshot 等)についてまとめ ます(後日)。 参考文献 http://blog.ninth-nine.com/diary/20061216.txt http://blog.ninth-nine.com/diary/20061212.txt http://blog.ninth-nine.com/diary/20061223.txt http://blog.ninth-nine.com/diary/20070304.txt http://blog.ninth-nine.com/diary/20070307.txt http://blog.ninth-nine.com/diary/20070313.txt Written by 重村法克