さて、前のエントリでグラタンをセットアップしたので、今度はファイルサーバとして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/
ファイル名の文字コードを変換するには
こんな感じでとりあえず一週間、元気に運用してます。