2008年8月31日日曜日

FreeBSD-stable 20080830 でzfsが遅い

本日 2008/08/30 にFreeBSD 7-stableに挙げたら、システムがえらい遅くなった。
# DTraceを使ってみたくて、アップデートしたのです。

ZFS(IO)が遅いみたい。

自分の環境は/がUFS。/usr,/var,/homeがZFSという環境なのです。
ちょっと大きなファイルをコピーしたりすると、CPUが100%になって、loadaverageがえらく(8ぐらいまで)上昇する。もとに戻そうか検討中です。

2008年8月27日水曜日

jail下準備用のzfs環境作成

jail配置用filesystemの作成

zfs create -o mountpoint=/jail zfspool/jail
zfs create zfspool/jail/0

jailのおおもとの環境を/jail/0に作成

cd /usr/src
make installworld DESTDIR=/jail/0
cd etc
make distribution DESTDIR=/jail/0


/jail/0は保存しておいて、/jail/1に実環境を構築
その為に/jail/0から/jail/1にsend/receive。
ちなみに、installworldでインストールされるファイルは、ハードリンクを使用している為、
普通にcpコマンドでファイルをコピーすると、使用容量はかなり大きくなります。
なので、zfsのsend/receiveを使用しています。

zfs snapshot /jail/0@today
zfs send /jail/0@today | zfs receive /jail/1
zfs destroy /jail/1@today
diff -qr /jail/0 /jail/1

zfs

zfsなんか便利なんだけど、いまひとつ用語がわからない。。。

(1) zfsのvolumeとfilesystemの違いが良くわからないので、manを確認。

どうもzfsのvolumeは、ブロックデバイスで管理された領域みたい。デバイスとして使いたいときに使うのかな? create -V で作成する。

普通にzfs createで作成されるのは、filesystemのようだ。

(2) snapshotやclone
jail用に環境を複製しようと思いcloneを使用してみた。cloneで作成される領域はsnapshotに引っついている為、snapshotを消そうとするとcloneも消してと言われる。で、勝手に誤解してpromoteで独立した領域になるのかなと思ったら、違う結果になった。manにそのまま書いてあるけど、promoteは、snapshotととったfilesystemとの交換とのこと。
同じ内容の領域を作成するには、send/receiveが必要みたい。

http://docs.sun.com/app/docs/doc/819-6260 に日本語の情報が一杯あった。