ユーザ用ツール

サイト用ツール


玄箱をnfsサーバ化する

玄箱をNFSサーバ化する

玄箱はNASとはいいながら、提供するアクセスはウィンドウズとMacOS向けのsmb/atalkのみで、NFSは提供していません。せっかくのLinuxマシンなのですから、NFSサーバ機能も提供してほしいところです。

nfsdの導入

玄箱は、実はたくさんの追加パッケージをCD-ROMに収めています。CD-ROMのbinaryというディレクトリの中に、TAR+GZIP形式で数々のパッケージが収録されています。その中に NFS も含まれています。nfs.tar.gzがそれです。なお、NFSサーバを利用するには、このほかに portmap-5beta.tar.gzもインストールする必要があります。

Windows上でCD-ROMからファイルを玄箱にコピーしましょう。デフォルトで、shareという共有名が見えていると思いますので、ここに必要なファイルをドラッグアンドドロップしておけばいいでしょう。面倒な場合は、/binary ディレクトリを丸ごとコピーしてもいいでしょう。

展開したら、玄箱にログインして、スーパーユーザになります。なったらまずはファイルを展開しましょう。

# cd /
# tar -zxf /mnt/share/nfs.tar.gz
# tar -zxf /mnt/share/portmap-5beta.tar.gz
#

展開がすんだら、設定を行ないます。

Port Mapper の設定

特に設定というようなものはないですが、自動起動するようにしておきましょう。chkconfig がないので、手でスタートアップを登録します。/etc/init.d/portmapをのぞくと、

5: # chkconfig: S 41 10

という記述があります。これは、S41portmap/K10portmap というシンボリックリンクをrunlevel Sと必要なところに作れということを意味します。Sについては指定のある Sに作ればいいでしょう。Kは0, 6に作ります。

# ln -s /etc/init.d/portmap /etc/rc.d/rcS.d/S41portmap
# ln -s /etc/init.d/portmap /etc/rc.d/rc0.d/K10portmap
# ln -s /etc/init.d/portmap /etc/rc.d/rc6.d/K10portmap

NFSの設定

NFSも同様に、サーバを自動起動するようにします。NFSは nfs-common(statd)とnfs-user-server(nfsd/mountd)との二つを起動する必要があります。同じように、ファイルを除いてみると、次のようになっています。

nfs-common:5: # chkconfig: 2345 19 81
nfs-user-server:4: # chkconfig: 2345 25 25

Sを2,3,4,5に、Kを0,6に作ります。

# ln -s /etc/init.d/nfs-common /etc/rc.d/rc2.d/S19nfs-common
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc3.d/S19nfs-common
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc4.d/S19nfs-common
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc5.d/S19nfs-common
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc0.d/K81nfs-common
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc6.d/K81nfs-common
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc2.d/S25nfs-user-server
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc3.d/S25nfs-user-server
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc4.d/S25nfs-user-server
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc5.d/S25nfs-user-server
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc0.d/K25nfs-user-server
# ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc6.d/K25nfs-user-server

これで、準備はオッケーです。

exports を作る。

最後に、NFSで提供するディレクトリへのアクセス許可を行ないます。設定は、/etc/exports に記述します。

# exports from kuro-box
/mnt             192.168.0.0/255.255.255.0(rw,no_root_squash)

詳細は、まっとうなLinux マシンで man exportsなどとして調べてほしいが、簡単に書いておくと、/mntというディレクトリを、192.168.0.0/255.255.255.0のクラスCネットワークに対して公開するという指定です。このとき、このディレクトリは読み書き可能(rw)で、NFSクライアント側のrootがアクセスした場合にuidをすり替えないでそのままuid=0としてアクセスすることを許可する(no_root_squash)ように指定しています。 roとすれば読み込み専用にできますし、root_squashとすればrootのアクセスはanonymous(通常は nobodyか?)で置き換えられます。all squash(誰からのアクセスもanonymous扱いにする)とか squash uids=…やsquash gids=…といったuidやgidごとにsquashするかどうかが指定できたりもします。

なお、no_root_squashはある意味危険な許可です。LAN内のマシンを完全に掌握していない限りしないほうがいいでしょう。つける場合は確信をもってやって下さい。

書き換えたら、mountdを再起動するために、nfs-user-server スクリプトを呼び出しておきます。

# /etc/init.d/nfs-user-server restart

これで、リモートからこのディレクトリがマウントできるようになります。

クライアント側の設定(autofsを利用する)

クライアント側では mount コマンドを使って、NFS経由で玄箱のファイルにアクセスできるわけですが、毎度毎度 mount を発行するのも面倒な話です。Linux がクライアントの場合には、autofsを利用することでこの手間を軽減できます。*BSD系の場合はamdで同じことができますが、説明は割愛します。

/etc/auto.master の設定

auto.master は、autofs で管理されたディレクトリの管理元です。多分、ほとんどのディストリビューションはローカルのCD-ROMやFDをマウントするための /misc というエントリを持っていると思います。ここに今回、ネットワーク経由の自動マウントのためのエントリとして /net を加えます。

/misc    /etc/auto.misc  --timeout=60
/net     /etc/auto.net   --timeout=300

加えたら、今度は、/etc/auto.net を作ります。

/etc/auto.net の作成

/etc/auto.net には、マウントするNFSディレクトリを列記します。

kuro-box -rw,soft,intr kuro-box:/mnt

先頭は、/net の下のマウントポイントで、真ん中は mount に渡すオプション、最後はNFSサーバの指定になります。この例では kuro-box:/mnt を /net/kuro-box にマウントすることを指定しています。

automount の再起動

ディストリビューションによって異なりますが、automount を再起動します。Vine ならば、

# /etc/init.d/automount restart

になります。

あとは、/net/kuro-box にアクセスして、きちんとマウントされることを確認します。

$ ls /net/kuro-box

きちんとマウントされていれば、ファイルが見えるはずです。なお、アクセスがなくなって300秒(auto.masterで指定したtimeoutの秒数)が経過すると自動的にアンマウントされます。

Tipsへ戻る。

玄箱をnfsサーバ化する.txt · 最終更新: 2015/04/10 17:27 by 127.0.0.1