NFSとAutofsの設定 - How to set up NFS and Autofs

索引へ戻る
  1. 必要なソフトとカーネル設定 - Software pre-requisite and Kernel setup
  2. NFS サーバーの設定 - How to set up an NFS server
  3. NFSサーバーの始動(笑) - Getting NFS started :-)
  4. NFSクライアントの設定 - How to set up an NFS client
  5. Autofsの設定 - How to set up Autofs
  6. NFSの最適化 - Optimizing NFS performance

ファイルシステムを自動でマウント/アンマウントするautomountには、 amdautofsの2種類があります。前者はSUNOSのamdのポートでuser spaceに実装されています。一方、autofsは、linux カーネルに組み込まれており、カーネルの知っているファイルシステムをsupportします。つまり、ext2は当然のこととして、nfs, iso9660, msdos等でもOKです。

ここでは、私が実際に使っているautofsを用いてnfsによるnetwork経由で他のmachineのdiskをautomountする方法CD-ROMのautomountについて書きます。とっても便利です。

私の環境はこちら
NFSのモトネタは
Linux NFS-HOWTO
Autofsのモトネタは
Autofs Automounter HOWTO
Automounter mini-Howto

1. 必要なソフトとカーネル設定 - Software pre-requisite and Kernel setup

まず、NFSに必要なソフトを取って来ます。どうせやるならnfs3にしましょう。(^^) こっちの方が最適化できる範囲が大きいですから

nfs-utils-3.1SourceForge Project Page からdownloadして、compileしinstallしてください。これが面倒だと言う方は、linuxppc-jpでご活躍の福井さんの労作、 HotPPCLinux から、nfs-utils-0.3.1-x.ppc.rpmを取って来てinstallして下さい。
mount-2.10mより新しいものも必要です。おなじく、 HotPPCLinux から、mount-2.10r-x.ppc.rpmを取って来て下さい。

Autofsも、どうせなら、autofs4にしちゃいましょう。
autofs-4.0.0-0.8mdk.ppc.rpm を作ったので、持ってって下さい。

次に、kernelのcompile optionですが、私の場合は、make menuconfigをやって、まず最初に、 Main Menu --> Code maturity level options (一番最初の項目)で、

[*] Prompt for development and/or incomplete code/drivers 

と、設定しました。これをやっておかないと、autofsの設定が出て来ません。

次に、Main Menu --> File systems --> Network File Systemsで、下記のように設定しました。 NFSv3を選んでいるのがミソです。

< > Coda file system support (advanced network fs)              
<*> NFS file system support                                        
[*]   Provide NFSv3 client support   <--- ここ                                 
<*> NFS server support                                           
[*]   Provide NFSv3 server support   <--- ここ                                 
<*> SMB file system support (to mount Windows shares etc.)          
[ ]    Use a default NLS                                            
< > NCP file system support (to mount NetWare volumes)   

さらにMain Menu --> File systemsで autofsの設定もしておきます。どうせなら、これも新しいv4を選びましょう。

[ ] Quota support                                                     
<M> Kernel automounter support                                        
<M> Kernel automounter version 4 support (also supports v3) 

v3も選びmoduleにしました。こうすれば、v4がうまくいかなくてもv3に戻れますから.......(^^;;;;;

念のために.configを見ておきましょう。

#
# File systems
#
# CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=m             <---
CONFIG_AUTOFS4_FS=m            <---

-------------------------------

#
# Network File Systems
#
# CONFIG_CODA_FS is not set
CONFIG_NFS_FS=y                 <--- 
CONFIG_NFS_V3=y                 <---
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=y                   <---
CONFIG_NFSD_V3=y                <---
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_SMB_FS=y

あとは、make dep; make vmlinux; make modules; make modules_install でおしまい。なお、 上記のソフトとカーネルはNFS server(PM8500/120)とNFS client(iMac revB)の両方に入れておきました。

トップへ戻る

2. NFS サーバーの設定 - How to set up an NFS server

これについては、そこらにある本の中にいくらでも書いてあるのでそちらを見て下さい。----- では、あんまりなので(笑)、それと、nfsv3ではv2とちょっと違うので、簡単に書いておきます。

Server (hoge.hoge.com) : 192.168.10.1 
Client (fuga.fuga.com) : 192.168.10.2

とすると、まず、

/etc/exportsをserverに下記のように作りましょう。

/usr/ 192.168.10.2(rw,root_squash)
/home/ 192.168.10.2(rw,root_squash)

次は、/etc/hosts.denyです。


portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

ALL:ALLの方がより安全なのでしょうが、そうすると新しいサービスを導入した時にいちいち書き込まないといけないので、不精者の私は、 Linux NFS-HOWTOに従って上記のようにしました。

最後に/etc/hosts.allowです。


portmap: 192.168.10.2
lockd: 192.168.10.2
rquotad: 192.168.10.2
mountd: 192.168.10.2
statd: 192.168.10.2
トップへ戻る

3. NFSサーバーの始動(笑) - Getting NFS started :-)

上記のnfs-utils-0.3.1-x.ppc.rpmをinstallしておけば、


/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock

などの起動スクリプトが、入っているはずです。NFSサーバーであるhoge.hoge.comで調べてみましょう。


$ /sbin/chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off

となってればOKです。もし、万一、こうなってなければ、


$ su
# /sbin/chkconfig nfs on
# /sbin/chkconfig nfslock on

とやって、NFS サービスが起動するようにしましょう。

一応、念のために再起動してから(上記のスクリプトを使って開始する方がスマートですけど)、rpcinfoを使って確かめてみます。


$ /usr/sbin/rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    895  status
    100024    1   tcp    897  status
    100011    1   udp    618  rquotad
    100011    2   udp    618  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs     <--- 
    100021    1   udp   1026  nlockmgr
    100021    3   udp   1026  nlockmgr
    100021    4   udp   1026  nlockmgr
    100005    1   udp   1027  mountd
    100005    1   tcp   1024  mountd
    100005    2   udp   1027  mountd
    100005    2   tcp   1024  mountd
    100005    3   udp   1027  mountd
    100005    3   tcp   1024  mountd

矢印で示したように、NFS version 3があれば、OKです。

あと、おまけとしては、/etc/exportsを書き換えた時


# /usr/sbin/exportfs -ra

とやれば、強制的にnfsdに/etc/exportsを読みなおさせることができ便利です。

トップへ戻る

4. NFSクライアントの設定 - How to set up an NFS client

こちらは簡単です。上記の設定を使って、NFS clientのfuga.fuga.comにNFS serverのhoge.hoge.comの/homeをマウントしてみましょう。NFS clientのfuga.fuga.comで以下のようにやってみます。


# cd /mnt
# mkdir home
# mount hoge.hoge.com:/home /mnt/home

これで、/mnt/homeにNFS serverのhoge.hoge.comの/homeがマウントされるはずです。って言うか、私はされました(笑)。アンマウントは勿論、


# umount /mnt/home

で、OKです。でも、これだけでは面白くありません。やっぱり、自動的にマウント、アンマウントされるようにしたいものです。そこで、Autofsの出番です。

トップへ戻る

5. Autofsの設定 - How to set up Autofs

最初の方に書きましたが、既に autofs-4.0.0-0.8mdk.ppc.rpm がinstallされていれば、autofsの起動スクリプトである/etc/rc.d/init.d/autofsが入っているはずです。上述の例で言うと、NFS clientのfuga.fuga.comで下記のように確かめてみましょう。


$ /sbin/chkconfig --list | grep autofs
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off

こうなっていれば、OKです。もし、万一、こうなってなければ、


$ su
# /sbin/chkconfig autofs on

とやって、Autofs サービスが起動するようにしましょう。このあたりのことは、NFSで書いたことと同じようにすれば良いです。

次に、設定ファイルを記述します。基本設定は/etc/auto.masterです。私の場合は下記のようにしてます。


/auto/hoge      /etc/auto.hoge      --timeout 60
/auto/cd        /etc/auto.cdrom     --timeout 30    

hogeはNFSの項で書いたNFSサーバーです。最初の列はmount pointそのものではなく、mount pointがセットされる場所を示しています。2番目の列は動作を設定するファイルを指定しています。3番目の列はオプションで何秒間使用されなければアンマウントされるかを指定します。
そして、上記で指定した/etc/auto.hogeは下記のようになってます。


home     -fstype=nfs     hoge.hoge.com:/home
usr      -fstype=nfs     hoge.hoge.com:/usr 

最初の列はmount pointを示しています。2番目の列はmountのoptionです。nfsがdefaultなので、あえて、設定する必要はありませんが、念のため書いてます。詳細は、man mountしてみて下さい。3番目の列は、どこのファイルシステムをマウントするかを指定します。

/etc/auto.cdromは下記のようにしました。


0               -fstype=iso9660,ro      :/dev/cdroms/cdrom0

以上より、hoge.hoge.comの/homeはfuga.fuga.comの/auto/hoge/homeにマウントされ、CD-ROMは/auto/cd/0にマウントされるようになるはずです。そうそう、私は、devfsに移行しているので、CD-ROMの設定が上記のようになりますが、まだ移行していない場合は、


cd               -fstype=iso9660,ro      :/dev/cdrom

と言う風にすれば良いかと思います。なお、devfsへの移行については別項で書く予定です。

それから、autofs moduleはversion 4の方を使うようにしておきしましょう。/etc/modules.confに下記を追加して下さい。


alias autofs autofs4

最後に、設定ファイルに記述したautomount用のdirectoryを作っておきます。


$ su
# cd /
# mkdir auto
# cd auto
# mkdir hoge
# mkdir cd

これでおしまい。マシーンを再起動するか、起動スクリプトでautofsを起動するかしてから、以下のように試してみましょう。


$ cd /auto/hoge/home
$ cd /auto/cd/0

さあ、これで、lsしてみた時ちゃんとhogeやCD-ROMの内容が表示されるはずです。私は、メールの読み書きなど、もっぱら、fugaの方でやっていますが、disk容量が少ないので、Mail directoryはhogeのhome directoryに置いています。そして、fugaで、


$ cd /home/watashi
$ ln -s /auto/hoge/home/watashi/Mail /home/watashi/Mail

と、hogeのほうにsymbolic linkを張っています。この環境で、fugaから、メールの取り込み、読み書きなどはnetwork越しであることを全く意識すること無く行えます。また、hogeとfugaの両方が同じMail directoryを使っているのでどちらを使っても同じメール環境になります。とても便利です。

トップへ戻る

6. NFSの最適化 - Optimizing NFS performance

ついでにNFSの最適化を試みてみました。まず、fuga.fuga.comマシーン(iMac revB)の/etc/auto.hogeを以下のように書き換えました。


home   -fstype=nfs,rsize=xxxx,wsize=xxxx   hoge.hoge.com:/home
usr    -fstype=nfs,rsize=xxxx,wsize=xxxx   hoge.hoge.com:/usr 

xxxxのところを、1024〜32768と変えていって、下記のコマンドでfuga.fuga.comaからhoge.hoge.com(PM8500/120)への書き込み及びhoge.hoge.comからの読み込みのスピードを測定しました。そうそう、NFS version 3は32768 bytesまでOKですが、version 2は8192 bytesまでしか扱えないので気をつけましょう。


$ time dd if=/dev/zero of=/auto/hoge/home/watashi/testfile bs=16k count=16384

$ time dd if=/auto/hoge/home/watashi/testfile of=/dev/null bs=16k

これで、256Mbのファイルの書き込み、読み込みのperformanceを見る訳です。(ディスクスペースのあき容量に気をつけましょう (^^)) cachingの影響を避けるために、一回毎に/auto/hoge/home/watashiがアンマウントされるまで待ってから各々の測定を行いました。以下が結果です。

NFS Performance
rsize & wsizewrite time (sec)write speedread timeread speed
1024 bytes8m48.099s485kB/sec8m43.402s489kB/sec
4096 bytes6m53.753s618kB/sec5m20.660s798kB/sec
8192 bytes5m59.601s711kB/sec5m5.108s839kB/sec
32768 bytes5m57.683s715kB/sec4m21.575s977kB/sec

うーむ、1024から8192にすると、書き込みが60%、読み込みが72%速くなると言ったところでしょうか (^^)。意外にも、期待の32768クン(笑)は大したことなかったですな。書き込みは8192と大差ないです。さすがに読み込みは1024の約2倍になってますが。どうせ、小さなファイルのやりとりが多いでしょうから、私は8192を選んでます。それにしても、遅いと言う評判のlinux nfsですが、8192の設定で10Base-T(10Mbps)の58-67%を使用している訳で、なかなかやるじゃあないですか。これは、早いとこ100Base-TXにしたいものだな!!って、今ごろそんなこと言ってるのは私ぐらいかな(^^;;;; 100Mbpsな方の御報告をお待ちしております。(^^)

追加:最近、ようやく、100Base-TXにしました (^o^)。詳細はRTL8139で100Base-TXを御覧下さい。

トップへ戻る

索引へ戻る