さて、前のエントリでグラタンをセットアップしたので、今度はファイルサーバとしてNFS,fstab,sambaの設定をする。

3月15日の時点のshokai.orgネットワーク構成も参照。

普段はWindowsのノートPCを持ち歩き、家にはVineLinuxのサーバが動いている。また、たまにWindowsデスクトップを使って発表資料を作ったりもする。

という事でデータのバックアップ・同期がかなり複雑になってきていて、ソースコードや資料が飛んだら本当にヤバイので、グラタンのRAIDミラーリング機能(HDD2台に同じデータを書き込んで、片方が死んでも復旧出来る)を使ってファイルサーバを作ることにした。

グラタンでsambaを使うことで、Windows機なら家の中ならファイルが取り出せる。

VineLinuxのサーバは/home/shoディレクトリそのものをグラタンに置いて、マウントする。家の外からはこいつにSSHでログインしてファイルを読み書きしたりもする。

グラタンは設定を済ませたらデータを守る事+内向きのサービスに専念してもらって、SSHでログインする事はない。外向きはVineの方に任せる。

これで、Windowsのエクスプローラでローカルにあるのと同じように画像編集して、xyzzyでPerl書いて保存したら即実行できたり…とかなり便利な環境になった。

Windows-グラタン間のファイル同期は俺が1年の春に奥出先生の授業で同じグループになった吉本社長のRealSyncが便利。LAN内でフォルダ間の同期が取れるシンプルなソフト。

というわけで、

・NFSでのmountの設定

・sambaの設定

をメモる。



■NFSでのmountの設定

fsの/export 以下を blossomの /exportにマウントする。

fs:/exportの下に home と wwwがあって、それぞれblossomのhomeディレクトリとApacheでの公開ディレクトリになる。実は奥出研のネットワークと同じだったりする。

基本的にサーバが増えても同じ要領でマウントしていけば、データの共有が取れる。

(fs側)

NFSのインストール

# apt-get install nfs-kernel-server nfs-common

/etc/exports を編集

/export blossom(rw,no_root_squash)

fsの/exportがblossomから読み書き自由、rootアクセス可能になる

(blossom側)

マウントポイント作って

# mkdir /export

/etc/fstab を編集

fs:/export /export nfs rsize=8192,wsize=8192,hard,intr,nolock 0 0

んで

# mount -a

してエラーが出なければok

/exportにデータを置くと、fs側の/exportにもデータが保存されているはず。

一応再起動してみる。

# reboot

ちゃんと/export に自動でマウントされていた。(VineLinuxは起動時にmount -aが行われる)

データはfsに置くようにする。blossom側のホームディレクトリもマウント+シンボリックリンクに変更する

(fs側)

# mkdir /export/home

# mkdir /export/www

データ移行、シンボリックリンク

# mv /home/sho /export/home/sho

# ln -s /export/home/sho /home/sho

一度ログアウトして、再ログイン。/home/ でlsすると @sho になってればシンボリックリンクになっている。

これで、/home/sho以下にファイルを保存すると実際は/export/home/shoに保存される。

同じように /home/httpd に置いてたwwwのデータも、 /export/www/にするとグラタンのRAIDに守られる。

実はまだ問題がある。

fs側とblossom側で ls -l すると、片方ではファイルの所持ユーザ・所属グループがsho shoになっているのに 片方では 1000 1000になっていたりする事がある。

これはUNIXがuidNumberとgidNumberというのとユーザ名・グループ名を対応付けている為で、実際のファイルにはuidNumberとかつまり数字しか書かれていない。

これを解決するには、両方のマシンで番号を同期させれば良い。

方法は

1.手動でやる

2.LDAPで同期させる

手動でやる事にした。

LDAPの設定が面倒なのと、LDAPサーバが動いているマシンが死ぬと他のマシンでもパスワード認証がかかってしまう為。ちなみに奥出研ネットワークはOpenLDAPで同期してる。

同期する。

(fs側)

# usermod -u 500 sho

# groupmod -g 500 sho

これだけ。/exportで同期してて、普段使うユーザはroot,adm,sho だけで、普通rootとadmは同じ番号だから。

■sambaの設定

全部fs側で運用する。これでblossom(VineLinux)を再セットアップしたり、別のOSに変えたりするのも結構気軽に出来る。

# su でrootになってから

sambaインストール

# apt-get install samba swat inetd

日本Sambaユーザ会 – Sambaで始めるWindowsファイルサーバー入門

が参考になる。

/etc/samba/smb.conf の

最後の行のあたり、

#swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

のコメント(#)を外す。

inetを再起動する。

# /etc/init.d/inet restart

これでwebブラウザから http://192.168.1.201:901 でswatからsambaの設定が行える様になった。

rootで入る。パスワードはSSHと共通。

/etc/hosts.allow を編集してswatへのアクセスを制限しておくとなお良し

swat : 192.168.1.

と書いておくとLAN内からしかアクセスできなくなる。

samba用のパスワードを作る

# smbpasswd -a sho

swatで「share」のページを適当に修正。

fsの/home/sho以下が見えてもしょうがないので、削除。

代わりにhomedirというshareを作って、

path を /export/home/%U/ に

read onlyをYes→Noに変更。

あとcreate mask, force create mode, directory mask, force directory mode

を 0755 にしておくと、cgiをWindowsからLAN越しに書いてもすぐ実行できる。

Commit Changesして、設定を有効にするためsamba再起動

# /etc/init.d/samba restart

これでWindowsマシンの「マイネットワーク」から /home/sho の中身がsambaから見れる。

■sambaの日本語ファイル名設定

sambaで共有かけたグラタンに日本語のファイルを保存すると、blossom側から見ると文字化けしてしまったりするので、設定する。

(fs側)

#/etc/samba/smb.conf を編集

[global]に

dos charset = cp932

unix charset = eucJP-ms

display charset = eucJP-ms

を書くと、Windowsで見る時はcp932(Shift_JIS)で表示され、実際にUNIXにはEUC-JPで保存される。

sambaを再起動して設定有効化

# /etc/init.d/samba restart

VineLinux3.2じゃない人とかはミラクル・リナックス Samba国際化プロジェクト: Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法などを参照。

また、何かのはずみでファイル名がえらい事になってしまっても、

(fs側)convmvをインストールして

# apt-get install convmv

UTF8からEUC-JPに変換できた。

convmv -r -f utf8 -t euc-jp * –notest

http://j3e.de/linux/convmv/man/

ファイル名の文字コードを変換するには

こんな感じでとりあえず一週間、元気に運用してます。