ttt

getttyent

ただいまZFSの特訓中

2009-12-15 23:59:00 | デジタル・インターネット

最近、FreeBDS 8.0-RELEASE、amd64、メモリ4GBな環境で、ZFSを使い始めました。

「一度に2つ以上の変更をしてはいけない」といった原則がありますが、スピードの早い時代、そんな悠長なこともやってられません。
今回は

  • 新しいパソコン
  • はじめて使う64bit環境(amd64)
  • リリースされたばかりの新バージョンのOS (8.0-RELEASE)
  • はじめて使うZFS

ということで、新しいことづくめ。そんな要因からか、kernel panicがあったり、よくわかんない不調があったりと、ZFSが原因かどうかはわからないのですが、なかなかの駄々っ子ぶり。

まずは、ハードディスクの障害を疑って、smartctl -t long /dev/ad6 といったコマンドで、ハードディスクの自己診断テストを実行。
まったくエラーは無し。

つぎにチューニングすればいいのかな?と思い、ドキュメントを見ていて気がつきました。

では、/boot/loader.confになにやら追加してましたが、これは、amd64版の場合、FreeBSD 7.2以降から不要だと書いてありました。だから、削除。
そして、なんとなく/etc/sysctl.confに以下を追加。

kern.maxvnodes=400000

そしてその場でsysctl kern.maxvnodes=400000を実行。たしかデフォルトは100000だったかな?

あとはこれまでと同じ、動作テストを実行。
ZFSなところをNFS exportして、クライアントからどんどこファイルを書き込んだり、make buildworldしてみたり。

なんだか、今回は調子がよくて、まったくびくともしません。当たり前のように動いています。buildworld、buildkernel、installworld、installkernelすべてできました。

1つ気になるのは、vfs.numvnodesの値。

動作テスト実行中に、こんなperlスクリプトで、vfs.numvnodesの値を5秒間隔で記録しつづけてみました。

#! /usr/bin/perl
use strict;

my $LOG = "/var/log/numvnodes.log";

open( my $fp, ">$LOG" ) || die "open $LOG";

while (1) {
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
      localtime();
    my $n = `sysctl vfs.numvnodes`;
    $n =~ s/.*: //;
    my $tmp = sprintf("%02d:%02d:%02d %d\n", $hour,$min,$sec,$n);
    printf $fp $tmp;
    print $tmp;
    sleep 5;
}

値が、ほぼ常に、増加し続けるんですね。そういうものなんでしょうか。

20091215

これがある程度いったところで、また調子悪くなるとかだったら、いやだなぁ。

■ 関連記事