第18章 NFS でのファイル共有

目次

18.1. 用語
18.2. NFS サーバのインストール
18.3. NFS サーバの設定
18.4. クライアントの設定
18.5. さらなる情報

概要

ネットワークを介したファイルシステムの公開や共有は、企業内のネットワーク などでは一般的に行なわれているものです。 NFS は 電話帳のような機能を提供する NIS プロトコルと ともにうまく動作する仕組みです。 LDAP と Kerberos を利用した、より機密を保持するプロトコルをお使いになる場合は、 NFSv4 に関する項目をお読みください。

NIS と NFS を同時に稼働させると、ユーザに対してネットワークを透過的に見せる ことができるようになります。 NFS ではネットワークを介して任意のファイル システムを公開することができますので、適切な設定を行なうことにより、利用している 端末にかかわらず同じ環境で作業を行なうことができるようになります。

[Important]DNS の必要性

原理上、全てのエクスポートは IP アドレスだけを利用して行なわれますが、タイム アウトを防ぐ目的から、 DNS システムを動作させる必要があります。また、 mountd では逆引きの参照を行なうため、ログ用途でも必要となります。

18.1. 用語

YaST モジュールでは、下記のような用語を使用します。

エクスポート

NFS サーバで 公開 されているディレクトリ。 クライアント側では、システムの一部として組み込むことができます。

NFS クライアント

NFS クライアントは、 NFS サーバの提供するサービスを利用する側の システムを指します。 Linux カーネルには最初から TCP/IP プロトコルが 統合されてるため、追加のソフトウエアをインストールする必要はありません。

NFS サーバ

NFS サーバは、クライアントに対して NFS サービスを提供する側です。 サーバとして動作するには、それぞれ下記のデーモンを起動する必要が あります: nfsd (ファイル公開), idmapd (ユーザとグループの 名前を ID に、もしくはその逆の処理を行なう), statd (ファイルの施錠 (ロック)), mountd (マウント要求用)

18.2. NFS サーバのインストール

NFS サーバのソフトウエアは、既定のインストールには含まれていません。 18.3項 「NFS サーバの設定」 の手順に従って設定を行なうと、 必要なパッケージをインストールするように自動的に促されます。また、 YaST や zypper を利用して、 nfs-kernel-server パッケージをインストールしてもかまいません。

NIS と同様に、 NFS もクライアント/サーバ型のシステムです。ただし、 1 台の マシンで両方を同時に実行、つまりネットワークを介してファイルシステムを提供 (エクスポート) しながら、かつ他のホストのファイルシステムを取り込む (インポート) ことができます。

18.3. NFS サーバの設定

NFS サーバの設定は YaST から実施することができるほか、手作業でも実施 できます。また、認証については Kerberos と組み合わせることもできます。

18.3.1. YaST を利用したファイルシステムのエクスポート

YaST では、お使いのホストをネットワーク内の NFS サーバとして動作させることが できます。 NFS サーバとは、アクセス権を設定したホストに対してディレクトリや ファイルを共有 (エクスポート) するということです。これにより、アプリケーションを 各ホストのローカルにインストールすることなく、グループ内の全メンバーに提供する ことができるようになります。サーバの設定は下記のようにして行ないます:

  1. YaST を起動して ネットワークサービス+NFS サーバ を選択します。 すると、 図18.1「NFS サーバ設定ツール」 のようなダイアログが表示されます。

    図18.1 NFS サーバ設定ツール

    NFS サーバ設定ツール

  2. ダイアログが表示されたら、まずは 開始 のラジオ ボタンを選択してから、 NFSv4 ドメイン名 に 入力を行ないます。

  3. サーバに対して機密を保持する接続を行ないたい場合は、 GSS セキュリティを有効にする を選択します。これを行なうには、お使いの ドメインにあらかじめ Kerberos をインストールし、サーバとクライアントの両方で Kerberos の設定を行なっておく必要があります。設定を完了したら 次へ を押します。

  4. 次に上半分のテキストフィールドでは、エクスポートするディレクトリを入力します。 下半分のテキストフィールドでは、それらへのアクセスを許可するホストを指定します。 詳しくは 図18.2「YaST を利用した NFS サーバの設定」 をご覧ください。

    図18.2 YaST を利用した NFS サーバの設定

    YaST を利用した NFS サーバの設定

    この図では以前のダイアログで NFSv4 を選択した場合のもので、 バインドマウントのターゲット が右側に表示されています。 詳しくは左側に表示されるヘルプをお読みください。 ダイアログの下半分では、各ホストに対して下記の 4 種類のオプションを設定すること ができます: single host, netgroups, wildcards, IP networks 。これらのオプション について、詳しくは exports のマニュアルページをお読みください。

  5. 設定を完了するには、 完了 ボタンを押します。

[Important]自動的なファイアウオール設定

お使いのシステムでファイアウオール (SuSEfirewall2) が動作している場合、 ファイアウオールでポートを開く を選択すると、 YaST は nfs サービスを有効化することで ファイアウオールの NFS サーバ向け設定を実施します。

18.3.1.1. NFSv4 クライアント向けのエクスポート

NFSv4 のクライアントに対応するには、 NFSv4 を有効にする を選択します。正しくエクスポートされていれば、 NFSv3 のクライアントからも アクセスできるようになります。詳しくは 18.3.1.3項 「v3 と v4 エクスポートの共存」 をお読みください。

NFSv4 を有効にしたあとは、適切なドメイン名を入力してください。なお、入力した ドメイン名は、 NFSv4 クライアント側にある /etc/idmapd.conf ファイル内のどこかに存在していることを確認してください。このパラメータは idmapd サービスが利用するもので、 NFSv4 に対応する場合にサーバおよび クライアントの両方で必要となります。特に要件がなければ、 localdomain のままでもかまいません。詳しくは 18.5項 「さらなる情報」 にあるリンクを ご覧ください。

指定が終わったら 次へ を押します。すると、 2 つのセクション から構成されるダイアログが表示されます。上半分は 2 つの列から構成され、それぞれ ディレクトリバインドマウントのターゲット という名前が設定されています。 ディレクトリ は直接編集可能な 列で、エクスポートするディレクトリを設定します。

クライアントが固定されている場合であれば、 2 種類のディレクトリをエクスポート することができます。 1 つは擬似的なルートファイルシステムとして動作するディレクトリ、 もう 1 つは疑似ファイルシステムのうちの何らかのサブディレクトリとしてバインド するものとしてエクスポートできます。この擬似的なファイルシステムは、同じ クライアントに対してエクスポートする全てのファイルシステムについて、ベース ポイントとして動作するようになります。単一または複数のクライアントに対しては、 サーバ上のいずれか 1 つのディレクトリだけをエクスポート用に設定することができます。 このクライアントの場合は、擬似的なルート内に複数の既存のサブディレクトリを バインドすることで、複数のディレクトリをエクスポートすることができます。

図18.3 NFSv4 を利用したディレクトリのエクスポート

NFSv4 を利用したディレクトリのエクスポート

ダイアログの下半分では、各ディレクトリに対するクライアント (ワイルドカード) と エクスポートオプションを設定します。上半分でディレクトリを追加した後であれば、 クライアントとエクスポートオプションを設定する追加ダイアログが自動で表示されます。 後から新しいクライアント (クライアントセット) を追加したい場合は、 ホストの追加 を押してください。

開いた小さいダイアログでは、まずホストのワイルドカードを指定します。各ホストに 対して、 4 種類の方法でワイルドカードを指定することができます: 単一ホスト (ホスト名または IP アドレス), ネットグループ, ワイルドカード (* を指定した場合は全てのマシンを意味します), IP ネットワーク の 4 種類です。次に オプション の項目では、 疑似ルートディレクトリを作成する場合は fsid=0 を含めて カンマ区切りのリストを作成します。また設定中のディレクトリが、既に設定済みの 疑似ルート下にある他のディレクトリに対し、バインドされる必要がある場合は、 bind=/target/path のような形式でターゲットのバインドパスを オプション一覧に追加してください。

たとえば /exports を疑似ルートディレクトリとして選択し、 全てのクライアントに対してサーバへのアクセスを許可する場合を考えます。 上半分ではこのディレクトリを追加し、そのオプションには fsid=0 を設定します。その他のディレクトリ、たとえば /data を NFSv4 でエクスポートする必要がある場合も、上半分にディレクトリを追加します。 ただし、このディレクトリに対するオプション入力では、一覧の中に bind=/exports/data を設定し、 /exports 以下に /exports/data というサブディレクトリが存在している ことを確認してください。 bind=/target/path オプション内の変更は、追加/変更/削除とも バインドマウントのターゲット に反映されます。この列は 直接編集可能ではありませんが、ディレクトリの概要や性質を表わしたものになります。 設定を全て完了したら、 完了 を押してください。 サービスはすぐに利用できるようになります。

18.3.1.2. NFSv3 と NFSv2 のエクスポート

最初のダイアログでは、 次へ を押す前に NFSv4 を有効にする のチェックが付けられていないことを 確認してください。

次のダイアログは 2 つの部分から構成されます。上半分のテキストフィールドには エクスポートするディレクトリを入力します。下半分ではそれらにアクセスする権利の あるホストを指定します。各ホストに対して、 4 種類の方法でワイルドカードを指定 することができます: 単一ホスト (ホスト名または IP アドレス), ネットグループ, ワイルドカード (* を指定した場合は全てのマシンを意味します), IP ネットワークの 4 種類です。

ここでのダイアログは 図18.4「NFSv2 と v3 を利用したディレクトリのエクスポート」 に示されている とおりです。これらのオプションについて、詳しい説明は man exports をお読みください。 完了 を押すと設定を完了します。

図18.4 NFSv2 と v3 を利用したディレクトリのエクスポート

NFSv2 と v3 を利用したディレクトリのエクスポート

18.3.1.3. v3 と v4 エクスポートの共存

NFSv3 と NFSv4 のエクスポートは、サーバ内で共存させることができます。設定 ダイアログの冒頭で NFSv4 を有効に設定したあとは、オプション内に fsid=0bind=/target/path が記述されていないものが v3 エクスポートと判断されます。 図18.2「YaST を利用した NFS サーバの設定」 にある 設定例から /data2 のような他のディレクトリを 追加する場合は、 ディレクトリの追加 を押してオプション 内に fsid=0bind=/target/path を含めないようにして設定すると、 そのエクスポートを v3 エクスポートとして利用できるようになります。

[Important]

自動的なファイアウオール設定

お使いのシステムでファイアウオール (SuSEfirewall2) が動作している場合、 ファイアウオールでポートを開く を選択すると、 YaST は nfs サービスを有効化することで ファイアウオールの NFS サーバ向け設定を実施します。

18.3.2. 手作業でのファイルシステムのエクスポート

NFS のエクスポートサービスで利用する設定ファイルは、 /etc/exports/etc/sysconfig/nfs です。これらのファイルに加え、 NFSv4 サーバの設定には /etc/idmapd.conf ファイルが必要です。また、サービスを 開始したり再起動したりするには、 rcnfsserver restart コマンドを実行します。このコマンドでサービスを起動すると、 /etc/sysconfig/nfs で NFSv4 を設定している場合、 rpc.idmapd についても起動を行ないます。なお、 NFS サーバを起動するには RPC portmapper が動作している必要があります。 そのため、 rcrpcbind restart を実行して、 portmapper サービスについても起動または再起動を行なってください。

18.3.2.1. NFSv4 を利用したファイルシステムのエクスポート

NFSv4 は openSUSE における最新の NFS プロトコルバージョンです。 NFSv4 でディレクトリをエクスポートするための設定は、従来の NFS バージョンの設定とは少し異なります。

18.3.2.1.1. /etc/exports

/etc/exports ファイルには項目の一覧が書かれて います。それぞれの項目には、共有されるディレクトリと、それをどのように 共有するかを記述します。 /etc/exports ファイル での一般的な設定は下記の形式で記述します:

/共有する/ディレクトリ   ホスト(オプション)

たとえば、下記のように記述します:

/export   192.168.1.2(rw,fsid=0,sync,crossmnt)
/export/data   192.168.1.2(rw,bind=/data,sync)

ここで、 IP アドレス 192.168.1.2 は利用を許す クライアントを識別するために使用しています。ホスト名を使用することも できますし、ワイルドカードを利用してホストの集合を指定することも できます (*.abc.com* などのようになります) し、ネットグループを 指定することもできます (@my-hosts) 。

また、 fsid=0 を指定したディレクトリは特別な ディレクトリで、エクスポートされるファイルシステムの根幹 (ルート) を形成するものです。これは擬似ルートファイルシステムとも呼ばれ、 NFSv4 で正しく動作するには、 crossmnt オプションも あわせて設定しなければなりません。 NFSv4 経由でエクスポートされる その他全てのディレクトリは、このポイント以下にマウントされなければ なりません。この擬似ルート以下に存在していないディレクトリを エクスポートしたい場合は、エクスポート済みのツリーに結びつける方法を とらなければなりません。このような結びつけは、 bind= 文法によって行ないます。

たとえば上記の例では /data/export 以下には存在していませんが、これを エクスポートしたい場合は /export/data としてエクスポートし、そのエクスポート位置に /data を結びつけて (バインドして) エクスポートしてください。 なお /export/data ディレクトリは存在していなければ ならず、通常は中には何も存在しないディレクトリであるべきものです。

クライアントからこのサーバにマウントを行なう場合は、 servername:/export ではなく servername:/ としてマウントを行ないます。 なお、 servername:/data をマウントする必要はなく、 servername:/ をマウントするだけでそのディレクトリが 見えるようになります。

18.3.2.1.2. /etc/sysconfig/nfs

/etc/sysconfig/nfs ファイルには、 NFSv4 サーバ デーモンの動作を決定するいくつかのパラメータが含まれています。なお、 NFS4_SUPPORT パラメータで yes を設定しなければならないことに注意してください。 と設定することです。 NFS4_SUPPORT により、 NFS サーバが NFSv4のエクスポートとクライアントに対応するかどうかが決定されます。

18.3.2.1.3. /etc/idmapd.conf

Linux マシンにおいて、各ユーザには名前と ID が割り当てられています。 idmapd はサーバに対して NFSv4 リクエストが届いた場合に、名前から ID への変換を行ない、クライアントに応答する仕組みを備えています。 NFSv4 では名前だけで通信を行なう都合から、サーバとクライアントの両方で 動作していなければなりません。

なお、 NFS を利用してファイルシステムの共有を行なうマシン間では、 ユーザ名と ID (uid) が共通化されるように設定してください。 NIS や LDAP などの方法や、それ以外のドメイン認証の仕組みをお使いの環境で利用する ことで、これを設定することができます。

また、 /etc/idmapd.confファイル内の Domain パラメータは、サーバとクライアントで 同じになるように設定してください。よくわからない場合は、 サーバとクライアントで両方とも既定の localdomain ドメインのままにしておいてください。設定ファイルは、たとえば下記のように なります:

[General] 

Verbosity = 0 
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nobody

より詳しい参照先として、 idmapdidmapd.conf の各マニュアルページがあります。それぞれ man idmapd, man idmapd.conf コマンドでお読みください。

18.3.2.1.4. サービスの起動と停止

/etc/exports/etc/sysconfig/nfs を変更したあとは、 rcnfsserver restart を実行し、 NFS サーバサービスを開始または再起動してください。 /etc/idmapd.conf ファイルを変更した場合は、 killall -HUP rpc.idmapd コマンドで設定ファイルを 再読み込みさせてください。

NFS サービスをシステムの起動時に開始させたい場合は、 chkconfig nfsserver on コマンドを実行してください。

18.3.2.2. NFSv2 と NFSv3 を利用したファイルシステムのエクスポート

この章では、 NFSv3 と NFSv2 でのエクスポートについて扱っています。 NFSv4 の場合は、 18.3.1.1項 「NFSv4 クライアント向けのエクスポート」 をお読みください。

NFS 経由でのファイルシステムのエクスポートを行なうには、 2 つの設定 ファイルを編集する必要があります。 1 つは /etc/exports で、もう 1 つは /etc/sysconfig/nfs です。 /etc/exports ファイルでの一般的な設定は 下記の形式で記述します:

/共有する/ディレクトリ   ホスト(オプション)

たとえば下記のようになります:

/export   192.168.1.2(rw,sync)

上記の例では、ディレクトリ /export はホスト 192.168.1.2 に対して公開され、オプションとして rw,sync が指定されています。上記の IP アドレスは クライアントのホスト名で書くこともできますし、ワイルドカードを利用した指定 (たとえば *.abc.com) やネットグループを利用する方法でも指定 することができます。

全てのオプションとそれらの意味について、詳しくは exports のマニュアルページをお読みください (man exports コマンド で表示することができます) 。

/etc/exports/etc/sysconfig/nfs を変更したあとは、 rcnfsserver restart を実行し、 nfs サーバサービスを開始または再起動してください。

18.3.3. Kerberos を利用する場合の NFS 設定

NFS の認証として Kerberos を利用するには、まず GSS セキュリティを有効に しなければなりません。これを行なうには、 YaST NFS サーバの最初のダイアログで、 GSS セキュリティを有効にする を選択してください。 なお、この機能を利用するには、あらかじめ動作する Kerberos サーバを用意 しておく必要があります。 YaST ではサーバを設定することはできず、 その機能を利用することしか行なうことができません。 YaST の設定に加えて Kerberos の認証を利用したい場合は、 NFS の設定を行なう前に少なくとも下記の 手順を実施しておいてください:

  1. まずサーバとクライアントの両方で、同じ Kerberos ドメインを設定している ことを確認します。これは、サーバとクライアントの両方で同じ KDC (鍵配布センター) を利用し、 krb5.keytab ファイル (既定ではどのマシンでも /etc/krb5.keytab 内に 存在します) を共有しなければならないことになります。 Kerberos について、 詳しくは 第6章 Kerberos を利用したネットワーク認証 (↑セキュリティガイド) をお読みください。

  2. クライアント側で rcgssd start コマンドを実行し、 gssd サービスを起動します。

  3. さらに rcsvcgssd start コマンドを実行し、サーバ上で svcgssd サービスを起動します。

NFS を Kerberos 化するための設定について、詳しい情報は 18.5項 「さらなる情報」 にある それぞれのリンクを参照してください。

18.4. クライアントの設定

お使いのホストを NFS クライアントとして動作するように設定するに あたっては、特に追加のソフトウエアをインストールする必要はありません。 必要なすべてのパッケージは既定でインストールされます。

18.4.1. YaST を利用したファイルシステムのインポート

権限を与えられたユーザであれば、 YaST NFS クライアントモジュールを利用して NFS サーバからディレクトリをマウントすることができます。これは YaST のモジュールで ある NFS クライアント を利用して行なうことができます。モジュールを 起動してから 追加 を押し、 NFS サーバのホスト名とインポートする ディレクトリ、そしてどのディレクトリにつなげるかをそれぞれ指定してください。これらの 変更は、最初のダイアログで 完了 ボタンを押した時に実施されます。

また、 NFS 設定 のタブでは、リモートのコンピュータが提供する サービスに対してアクセスを許可するため、 ファイアウオールでポートを開く を選択することができます。ファイアウオールの状態はチェックボックスの下に表示されます。 NFSv4 を利用する場合は、 NFSv4 を有効にする のチェックが 入っているかどうかを確認し、 NFSv4 ドメイン名 に NFS サーバ と同じ設定を入力してください。既定ではドメイン名は localdomain になっています。

最後に設定を保存するため、 OK を押します。 図18.5「YaST を利用した NFS クライアント設定」 をご覧ください。

設定ファイルは /etc/fstab に書き込まれ、指定したファイルシステム がマウントされます。後から YaST 設定モジュールを起動したときには、このファイルから 既存の設定を読み込みます。

図18.5 YaST を利用した NFS クライアント設定

YaST を利用した NFS クライアント設定

18.4.2. 手作業でのファイルシステムのインポート

手作業でファイルシステムをマウントするには、事前に RPC portmapper を起動しておく必要があります。 RPC portmapper は root から rcrpcbind start と入力することで 起動することができます。起動が完了したら、リモート側のエクスポート済みファイル システムは、下記のようにハードディスクをマウントするのに似たコマンドラインで マウントできるようになります:

mount ホスト:リモート側のパスローカル側のパス

たとえば nfs.example.com マシン上のユーザディレクトリを インポートしたい場合は、下記のようなコマンドを入力します:

mount nfs.example.com:/home /home

18.4.2.1. automount サービスの利用

autofs デーモンは、リモートのファイルシステムを自動でマウントするのに使用する ことができます。これを行なうには、お使いの /etc/auto.master ファイルに対し、下記のような設定を行ないます:

/nfsmounts /etc/auto.nfs

上記の設定を行ない、 auto.nfs ファイルでの設定を行なうと、 /nfsmounts ディレクトリは全 NFS クライアント側マウントの ルートとして動作するようになります。 auto.nfs という ファイル名にしたのは単に利便性を考慮しただけのもので、任意の名前を設定することが できます。上記で指定したファイル (上記の例では auto.nfs) に は下記のような項目を記入します:

localdata -fstype=nfs server1:/data
nfs4mount -fstype=nfs4 server2:/

あとは root から rcautofs start を実行すると、設定を 反映させることができます。この例では /nfsmounts/localdata ディレクトリに server1/data ディレクトリを NFS でマウントし、 server2/nfsmounts/nfs4mount ディレクトリを NFSv4 でマウントします。

autofs が動作している状態で /etc/auto.master を編集した場合は、 automounter に変更を反映させるため、 rcautofs restart を 実行して再起動を行なわなければなりません。

18.4.2.2. /etc/fstab の手作業での編集

一般的な NFSv3 マウントの場合、 /etc/fstab には 下記のように設定します:

nfs.example.com:/data /local/path nfs rw,noauto 0 0

NFSv4 マウントについても /etc/fstab に設定 することができます。 NFSv4 のマウントの場合は、 3 つめの列を nfs ではなく、 nfs4 と設定し、リモート 側のファイルシステムの指定である 1 列目の nfs.example.com: の後が / になっていることを確認してください。 一般的な NFSv4 マウントの場合、 /etc/fstab は下記のように なります:

nfs.example.com:/ /local/pathv4 nfs4 rw,noauto 0 0

noauto オプションは、システムの起動時に自動でファイルシステム をマウントしないようにする設定です。上記のようなファイルシステムを手作業でマウント する場合は、マウント時に下記のようなコマンドでマウントポイントだけを指定することで、 マウントを行なうことができます:

mount /local/path

noauto オプションを指定しない場合は、システムの起動時にこれらの ファイルシステムが処理され、マウントされるようになります。

18.5. さらなる情報

exports, nfs, mount の各マニュアルページに加え、 NFS サーバやクライアントを設定するための 情報が /usr/share/doc/packages/nfsidmap/README ファイルに存在しています。さらなる文書については、それぞれ下記の Web ドキュメントにあります:


openSUSE リファレンス 13.1