nfs-utils、autofs インストールメモ #--------------------------------------------------------------------------------------------- # NFS 概要 #--------------------------------------------------------------------------------------------- NFS はUNIX 環境でネットワークを介したファイル共有を行う規約です。NFS では、ネットワーク上のファイルはローカルファイルと同じように扱われるため、透過的なネットワークを構成することができます。 NFS は同じファイルを複数のマシンからアクセスできることから、ディスクスペースの節約や一括管理の簡素化などの利点があるとされています。 NFS サービスにはNFS サーバーとNFS クライアントの存在があり、通常NFS クライアントがNFS サーバーのファイルシステムのうち、許可されているファイルシステムのみを利用することができます。 #--------------------------------------------------------------------------------------------- # NFS のインストール方法 #--------------------------------------------------------------------------------------------- NFS を実現するためには2.2.18 以降のカーネルを用いるべきです。特に、次のいずれかを必要とする場合は2.4.x 系のカーネルを利用した方が幾分安心でしょう。 ・Linux の NFS を他の OS の NFS と混在させたい ・NFS 越しに 信頼性の高いファイルロックを使いたい ・NFS Version 3 を使いたい また、NFS を実際利用する際にはカーネル自体をNFS 対応にコンパイルし直す必要があります。具体的には次の項目をチェックする必要があるでしょう。 > Main Menu --> File systems --> Network File Systems の下記項目 < > 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) さらに、AutoFs によるオートマウントを利用する際には次の項目もチェックする必要があります。 > Main Menu --> Code maturity level options の下記項目 [*] Prompt for development and/or incomplete code/drivers > Main Menu --> File systems の下記項目 [ ] Quota support Kernel automounter support Kernel automounter version 4 support (also supports v3) カーネルのNFS 対応が終わったら、次はNFS バイナリを確認しましょう。NFS を実現するためのバイナリは通常Red Hat Linux 系ディストリビューションでは次の名前でRPM にてインストールされています。 ・portmap パッケージ portmap-4.0-41 等 ・nfs-util パッケージ nfs-util-0.3.3-6.73 等 ・autofs パッケージ autofs-3.1.7-28 等 NFS とオートマウントを実現するには上記パッケージが必要です。なお、NFS 関連のパッケージは頻繁にセキュリティーホールが確認されています。利用する際は常に最新のパージョンを利用するようにしましょう。 #--------------------------------------------------------------------------------------------- # NFS サーバーの設定 #--------------------------------------------------------------------------------------------- NFS サーバーがNFS クライアントにサービスを提供するには、下記のサービスが起動している必要があります。これらは全てnfs-util パッケージによって提供されています。 ・portmapper ・nfsd ・mountd また、NFS サーバーを運用するに当たり必要なファイルは次の3ファイルです。 ・/etc/exports | 共有するファイルシステムがどのように共有されるかを定義する ・/etc/hosts.allow | 共有を許可するNFS クライアントのIP 情報 ・/etc/hosts.deny | 共有を許可しないNFS クライアントのIP 情報 ● /etc/exports ファイル 「/etc/exports」には、共有するファイルシステムがどのように共有されるかを定義します。例えば次の様な設定を行った場合は、”/home”ディレクトリ以下は”test.spicy-islands.com”ホストからのみ読み専用でアクセスを許可し、全てのユーザーからのディレクトリアクセスはNFS サーバー上では”nobody”ユーザーが行ったものとして処理されます。 /home test.spicy-islands.com(ro,all_squash) 通常「/etc/exports」の書式は以下に帰属します。 [ファイルシステム] [アクセスを許可するホスト](オプション)、... オプションには次の文字列が指定できます。 ro | ファイルの読み込みのみを許可する rw | 読み書きを許可する root_squash | クライアントからのROOT からのアクセスを”nobody”からのアクセスとして扱う no_root_squash | クライアントからのROOT からのアクセスを”root”からのアクセスとして扱う all_squash | クライアントからの全てのアクセスを”nobody”からのアクセスとして扱う anonuid=[UID] | クライアントからの全てのアクセスを”UID”からのアクセスとして扱う anongid=[UID] | クライアントからの全てのアクセスを”GID”からのアクセスとして扱う ※ 注意 ) 「/etc/exports」をNFS サーバー起動後に編集した場合は次のコマンドを実行することで、NFS サーバー再起動なしに設定を読み直すことができます。 # exportfs -ra ● /etc/hosts.allow、/etc/hosts.deny ファイル このファイルは通常、NFS サーバーをネットワーク越しに利用する際に特に設定が必要とされています。NFS クライアントがNFS サーバーにアクセスする際に最初に起動されるデーモンはポートマッパ(portmapper) です。 このデーモンの仕ことは、基本的には要求をよこしたクライアントにシステム上の様々なNFS サービスへの接続先を伝えることだけです。最終的に、ポートマッパへのアクセス制限は直接NFS 経由でシステムへ進入しようとする者に対する最適な防御となります。 「/etc/hosts.deny」は”ALL:ALL”としておき、/etc/hosts.allow ファイルに許可するサービスを記述する書き方が一般的とされています。よって、NFS サーバーで許可すべきデーモンに対する許可を「/etc/hosts.allow」に記載します。具体的には下記の記述を「/etc/hosts.allow」に追加して下さい。 portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL ※ 実際、”ALL”の部分はアクセス制限ポリシーに従って設定して下さい。 上記全ての設定が終わり次第、NFS サービスを順次起動します。大体のディストリビューションは既に起動スクリプトが用意されています。Red Hat Linux 系ディストリビューションの場合、下記のコマンドにてサービスを起動します。 # /etc/rc.d/init.d/portmap start # /etc/rc.d/init.d/nfs start ※ portmap は必ずnfs の前に起動して下さい。 最後に、NFS サーバーが動作していることを確認してみましょう。”rpcinfo -p”コマンドは、NFS サーバーによってどんなサービスが提供されているかを調べます。出力結果に”nfs”と”mountd”の文字列があれば、間違いなくNFS サーバーは起動しています。 # rpcinfo -p #--------------------------------------------------------------------------------------------- # NFS クライアントの設定 #--------------------------------------------------------------------------------------------- NFS クライアントは、NFS サーバーによって共有に出されたファイルシステムを利用するコンピューターを指します。通常はNFS サーバーの共有を許可されたファイルシステムに対してmount 作業を行うことで利用します。 NFS クライアントを利用する際は次の点に注意します。 ・Version 3 NFS を使う場合はmount-2.10m 以上のmount プログラムが必要 ・NFS クライアントマシン上ででポートマッパが動いていること ・NFS でファイルロックを使うには、statd とlockd とをNFS クライアントとNFS サーバの両方で動かす 必要がある ● NFS クライアントで共有ディレクトリを利用する 上記確認が取れた時点で、NFS クライアントの設定を行います。”nfserv.spicy-islands.com”サーバーの”/home”ディレクトリを”test1.spicy-islands.com”クライアントの”/export/home”で共有する場合は”test1.spicy-islands.com”クライアント上で、次のコマンドをroot で実行して下さい。 # mkdir -p /export/home # mount -o hard,intr nfserv.spicy-islands.com:/home /export/home もしマウント作業を自動で行いたい場合は、「/etc/fstab」に記述することでブート時に自動マウントさせることができます。詳細はインターネットで調べて下さい。 ※ 注意 ) NFS を利用してリモートサーバーのディレクトリを共有する際は次の問題に直面します。 ・NFS クライアントにてマウントしたが、マウント後NFS サーバーが死んでしまった。この時のNFS クラ イアントの動作はどうなるのか? この問題を解決するには、マウントする際に”-o”オプションにて”hard,intr”オプションを追加して下さい。そうすることで、死んでしまったNFS サーバーにアクセス中のNFS クライアントを「CTL+DEL」にて強制終了させることができます。 ● NFS クライアントで共有ディレクトリの利用を解除する 先の例で、”test1.spicy-islands.com”クライアント上で”nfserv.spicy-islands.com”サーバー上の”/home”ディレクトリの共有を解除する場合は次のコマンドを”test1.spicy-islands.com”クライアント上でroot で実行します。 # umount /export/home #--------------------------------------------------------------------------------------------- # AutoFS の設定 #--------------------------------------------------------------------------------------------- AutoFS パッケージはNFS クライアントではあるが、NFS 要求がユーザーからあった時のみにマウントを行います。要求時のみマウントするので、常にマウント状態にあるNFS クライアントよりかは、NFS サーバーがダウンした際に受ける影響も最小限に留めることができます。 ● /etc/auto.master ファイル 基本設定ファイルは「/etc/auto.master」です。このファイルはマウントポイントと動作を指定するファイルを指定します。次の例では、”/mnt”をマウントポイントとしてAutoFS が監視し、アクセスがあった場合は「/etc/auto.autofs」にて指定した動作を行います。その後、60 秒間アクセスが無い場合はマウントを解除します。 /mnt /etc/auto.autofs --timeout=60 通常「/etc/auto.master」の書式は以下に帰属します。 [マウントポイント] [動作を指定するファイル] なお、”動作を指定するファイル”の部分にはNIS の指定もできますが、ココでは割愛します。 ● /etc/auto.autofs ファイル 「/etc/auto.autofs」は、「/etc/auto.master」中の”動作を指定するファイル”を指します。このファイルにて下記の指定がされていた場合、”/mnt/datas”にアクセスがあったと同時に”nfserv.spicy-islaands.com”サーバー上の”/home”ディレクトリを”/mnt/datas”に共有します。なお、「/etc/auto.autofs」に記載された全てのディレクトリに対して、60 秒間アクセスが無い場合はマウントを解除します。これは「/etc/auto.masater」の記述に依存します。 datas -fstype=nfs nfserv.spicy-islands.com:/home 上記全ての設定が終わり次第、AutoFS サービスを起動します。大体のディストリビューションは既に起動スクリプトが用意されています。Red Hat Linux 系ディストリビューションの場合、下記のコマンドにてサービスを起動します。 # /etc/rc.d/init.d/authfs start