GLAN TANK - 導入編
先週末にGLAN TANK(いわゆる新白箱)を秋葉で購入。
この一週間でやったことをメモ。
一緒に買ったハードディスク
Western DigitalのWD3200JBを二つ。計640GB。
ミラーリングではなく、スパニングモードでインストール。
デフォルトだと、/bootとスワップ以外は一つのパーティションになってしまうのが少し気になるが、早く使いたかったのでとりあえずそのまま。。
Jumbo Frameの設定
事前にネットワークスイッチとクライアントマシンはギガ化してあったので、Jumbo Frameを設定。スイッチが7kまで対応なので、7kに。
とりあえずは、
# ifconfig eth0 mtu 7000
で、設定可。
設定を保存するためには、/etc/network/interfaces の末尾に
up ifconfig eth0 mtu 7000
を追加。
NFSサーバの導入
- インストール
- 公開ディレクトリの設定
/etc/exportsに公開ディレクトリを追記。
ほんとはNISなどでクライアント側とuid,gidの同期を取るべきだが、面倒だし、録画サーバからは1ユーザしかアクセスしないので、すべて特定のuid,gidにマッピングするように設定。
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/share 192.168.1.111(rw,all_squash,anonuid=1001,anongid=1001,async)
- クライアント(録画サーバ)からmount
バッファサイズをrsize=8192,wsize=8192にすると良いらしい(man nfs)。
Jumbo Frameの値と一緒にチューニングするともっと良いのかも?
mount -o rsize=8192,wsize=8192 192.168.1.222:/share /mnt/glantank
Sambaの導入 apt-get
# apt-get install samba
でSamba 3.0.14aがインストールできた。
自宅でdebianを使うのは初めてだが、apt-getでの一発インストールはやっぱ便利。
以下、設定項目。
- 日本語対応
EUC-JP-MS対応のglibcが入っていたので、
/etc/samba/smb.confの[global]セクションに
を追加して、日本語対応は完了。
- 共有ディレクトリ
[home]セクションが最初から設定済みなので、特に共有の設定を追加することなくホームディレクトリを共有可。
- 性能チューニング
sendfileを使うようにするとreadが少し早くなる。
use sendfile = yes
Sambaの導入 最新版3.0.21b
せっかくのNAS専用機なので(?)、Sambaの最新版をインストールしてみた。
3.0.14aより多少性能が良く、バグフィックスもかなり入ってるはず。
- 開発環境のインストール
とりあえずこの辺を参考に基本的な開発環境をapt-getでインストール。
http://eggplant.ddo.jp/www/pukiwiki/index.php?%B3%AB%C8%AF%B4%C4%B6%AD%20(debian26%C8%C7)
# apt-get install dpkg-dev binutils gcc g++ make libncurses5-dev
あと、他にもSambaのビルドに必要なパッケージがソースアーカイブのpackaging/Debian/README に書かれているので、インストールされていないものはapt-get install。
- ビルド
# tar xvzf samba-3.0.21b.tar.gz
# cd samba-3.0.21b
# cp -a packaging/Debian/debian-sarge/ debian
# ./debian/rules binary
で、ビルドをはじめると、debianパッチの適用で何箇所かrejectされ、最後のパッケージング段階でもエラーで終わってしまう。changelogのバージョンが3.0.20bのままだったので、パッケージングファイルはそれ以降メンテされていないようだ。
なので、以下のように修正。ついでにkernel oplocksとkernel change notifyとkernel share modeの機能も有効にした。
samba-3.0.21b/packaging/Debian/debian-sargeに対するパッチ。
[追記2/11] samba本家の修正を見てみたら、2/9付けのコミットで直されてました。http://websvn.samba.org/cgi-bin/viewcvs.cgi?rev=13411&view=rev
diff -uNr packaging/Debian/debian-sarge.org/changelog packaging/Debian/debian-sarge/changelog --- packaging/Debian/debian-sarge.org/changelog 2005-11-10 03:29:06.000000000 +0900 +++ packaging/Debian/debian-sarge/changelog 2006-02-10 19:12:15.049831000 +0900 @@ -1,6 +1,6 @@ -samba (3.0.20b-1) stable; urgency=low +samba (3.0.21b-1) stable; urgency=low - * samba 3.0.20b Samba Team Release + * samba 3.0.21b Samba Team Release -- Simo Sorce <idra@samba.org> Sun, 23 Oct 2005 11:58:30 +0200 diff -uNr packaging/Debian/debian-sarge.org/config.cache packaging/Debian/debian-sarge/config.cache --- packaging/Debian/debian-sarge.org/config.cache 2005-11-10 03:29:04.000000000 +0900 +++ packaging/Debian/debian-sarge/config.cache 2006-02-10 19:10:03.109831000 +0900 @@ -34,9 +34,9 @@ # These are options which are supported on 2.4 kernels, but not on 2.2 # kernels. -samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no} -samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no} -samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=no} +samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes} +samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes} +samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes} # These are present in 2.2 kernels, but not in 2.0... diff -uNr packaging/Debian/debian-sarge.org/patches/VERSION.patch packaging/Debian/debian-sarge/patches/VERSION.patch --- packaging/Debian/debian-sarge.org/patches/VERSION.patch 2005-11-10 03:29:05.000000000 +0900 +++ packaging/Debian/debian-sarge/patches/VERSION.patch 2006-02-10 19:10:20.789831000 +0900 @@ -1,8 +1,9 @@ --- samba-3.0.0rc2/source/VERSION.orig 2003-09-02 21:56:11.000000000 -0400 +++ samba-3.0.0rc2/source/VERSION 2003-09-02 21:56:30.000000000 -0400 -@@ -78,4 +78,4 @@ +@@ -78,5 +78,5 @@ # e.g. SAMBA_VERSION_VENDOR_SUFFIX=vendor_version() # # -> "CVS 3.0.0rc2-VendorVersion" # ######################################################## -SAMBA_VERSION_VENDOR_SUFFIX= +SAMBA_VERSION_VENDOR_SUFFIX="Debian" + SAMBA_VENDOR_PATCH= diff -uNr packaging/Debian/debian-sarge.org/patches/fhs.patch packaging/Debian/debian-sarge/patches/fhs.patch --- packaging/Debian/debian-sarge.org/patches/fhs.patch 2005-11-10 03:29:05.000000000 +0900 +++ packaging/Debian/debian-sarge/patches/fhs.patch 2006-02-10 19:10:20.809831000 +0900 @@ -155,9 +155,9 @@ --- samba-3.0.10.orig/source/lib/account_pol.c 2004-12-17 03:50:08.000000000 -0800 +++ samba-3.0.10/source/lib/account_pol.c 2004-12-17 03:55:29.000000000 -0800 @@ -35,7 +35,7 @@ - - if (tdb) return True; + } + - tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600); + tdb = tdb_open_log(state_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600); if (!tdb) { @@ -449,25 +449,29 @@ pstrcat(printdb_path, ".tdb"); diff -uNr samba-3.0.20b.orig/source/registry/reg_db.c samba-3.0.20b/source/registry/reg_db.c ---- samba-3.0.20b.orig/source/registry/reg_db.c 2003-07-02 23:26:47.000000000 -0500 -+++ samba-3.0.20b/source/registry/reg_db.c 2003-07-02 23:19:02.000000000 -0500 -@@ -198,13 +198,13 @@ - if ( tdb_reg ) - return True; - +--- samba-3.0.20b.orig/source/registry/reg_db.c 2005-10-18 11:45:06.000000000 +0900 ++++ samba-3.0.20b/source/registry/reg_db.c 2006-02-08 00:44:33.164370000 +0900 +@@ -205,9 +205,9 @@ + if ( tdb_reg ) + return True; + - if ( !(tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) ) + if ( !(tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) ) - { + { - tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600); + tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600); - if ( !tdb_reg ) { - DEBUG(0,("init_registry: Failed to open registry %s (%s)\n", -- lock_path("registry.tdb"), strerror(errno) )); -+ state_path("registry.tdb"), strerror(errno) )); - return False; - } - - DEBUG(10,("init_registry: Successfully created registry tdb\n")); + if ( !tdb_reg ) { + DEBUG(0,("regdb_init: Failed to open registry %s (%s)\n", + lock_path("registry.tdb"), strerror(errno) )); +@@ -252,7 +252,7 @@ + + become_root(); + +- tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600); ++ tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600); + if ( !tdb_reg ) { + result = ntstatus_to_werror( map_nt_error_from_unix( errno ) ); + DEBUG(0,("regdb_open: Failed to open %s! (%s)\n", diff -uNr samba-3.0.10.orig/source/rpc_server/srv_srvsvc_nt.c samba-3.0.10/source/rpc_server/srv_srvsvc_nt.c --- samba-3.0.10.orig/source/rpc_server/srv_srvsvc_nt.c 2004-12-17 03:50:09.000000000 -0800 +++ samba-3.0.10/source/rpc_server/srv_srvsvc_nt.c 2004-12-17 03:55:31.000000000 -0800 diff -uNr packaging/Debian/debian-sarge.org/rules packaging/Debian/debian-sarge/rules --- packaging/Debian/debian-sarge.org/rules 2005-11-10 03:29:04.000000000 +0900 +++ packaging/Debian/debian-sarge/rules 2006-02-10 19:11:22.549831000 +0900 @@ -229,7 +229,7 @@ # The smbwrapper package is not being generated anymore, so we must # delete the related man pages. - rm $(DESTDIR)/usr/share/man/man1/smbsh.1 + #rm $(DESTDIR)/usr/share/man/man1/smbsh.1 # We're not providing findsmb (should we?) so let's remove the man # pages.