第26章 NFS共有ファイルシステム

目次

26.1. 用語集
26.2. NFSサーバのインストール
26.3. NFSサーバの設定
26.4. クライアントの設定
26.5. 詳細情報

概要

ネットワーク上でファイルシステムを分散して共有することは、企業環境では一般的なタスクです。十分に実績のあるネットワークファイルシステム (NFS)は、NIS (Yellow Pagesプロトコル)と連携して機能します。LDAPと連携して機能し、Kerberosも使用できるより安全なプロトコルについては、NFSv4をチェックしてください。

NFSをNISと連携して使用すると、ネットワークをユーザに対して透過的にすることができます。NFSでは、ネットワーク経由で任意のファイルシステムを分散できます。適切なセットアップを行えば、現在どの端末を使用しているかに係わりなく、常に同じ環境で作業できます。

[Important]DNSの必要性

原則として、すべてのエクスポートはIPアドレスのみを使用して実行できます。タイムアウトを回避するには、機能するDNSシステムが必要です。mountdデーモンは逆引きを行うので、少なくともログ目的でDNSは必要です。

26.1. 用語集

以下の用語は、YaSTモジュールで使用されています。

エクスポート

NFSサーバによってエクスポートされ、クライアントがシステムに統合できるディレクトリ。

NFSクライアント

NFSクライアントは、ネットワークファイルシステムプロトコルを介してNFSサーバからのNFSサービスを使用するシステムです。TCP/IPプロトコルはLinuxカーネルにすでに統合されており、追加ソフトウェアをインストールする必要はありません。

NFSサーバ

NFSサーバは、NFSサービスをクライアントに提供します。実行中のサーバは、次のデーモンに依存しています。nfsd(ワーカー)、idmapd (IDへのユーザおよびグループ名のマッピングと、その逆のマッピング)、statd(ファイルのロック)、およびmountd (マウント要求)。

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

NFSサーバソフトウェアは、デフォルトインストールの一部ではありません。NFSサーバソフトウェアをインストールするには、YaSTを起動してから、[ソフトウェア]+[ソフトウェア管理]の順に選択してください。次に[フィルタ]+[パターン]の順に選択して、[ファイルサーバ]を選択するか、または[検索]オプションを使用してNFSサーバを検索します。パッケージのインストールを確認して、インストールプロセスを完了します。

NIS同様、ANFSはクライアント/サーバシステムです。ただし、ファイルシステムをネットワーク経由で提供し(エクスポート)、同時に他のホストからファイルシステムをマウントする(インポート)ことができます。

26.3. NFSサーバの設定

NFSサーバの設定は、YaSTを使用するか、または手動で完了できます。認証の場合は、NFSをKerberosと組み合わせることもできます。

26.3.1. YaSTによるファイルシステムのエクスポート

YaSTを使用して、ネットワーク上のホストをNFSサーバに変更し、そのホストへのアクセスを許可されたすべてのホストに、ディレクトリやファイルをエクスポートすることができます。サーバは、ホストごとにローカルにアプリケーションをインストールしなくても、グループの全メンバーにアプリケーションを提供することもできます。そのようなサーバをセットアップするには、次の手順に従います。

  1. YaSTを起動し、[ネットワークサービス]+[NFSサーバ]の順に選択します(図26.1「NFSサーバ設定ツール」参照)。

    図26.1 NFSサーバ設定ツール

    NFSサーバ設定ツール

  2. [開始]ラジオボタンをオンにして、[ドメイン名]を入力します。

  3. サーバに安全にアクセスするには、[GSSセキュリティを有効にする]をクリックします。この手順の前提条件として、ドメインにKerberosをインストールし、サーバとクライアントの両方でKerberosを有効にしておく必要があります。[次へ]をクリックします。

  4. 上部のテキストフィールドにエクスポートするディレクトリを入力します。下部に、それらのディレクトリへのアクセスを許可するホストを入力します。図26.2「YaSTを使ったNFSサーバの設定;」に示すダイアログボックスが表示されます。

    図26.2 YaSTを使ったNFSサーバの設定;

    YaSTを使ったNFSサーバの設定;

    この図は、前のダイアログでNFSv4を有効にしたシナリオを示しています。右側のペインには、Bindmountターゲットが表示されています。詳細については、[ヘルプ]をクリックします。ダイアログの下部には、各ホストに対して設定できる4種類のオプションsingle hostnetgroupswildcards、およびIP networksがあります。これらのオプションの詳細については、exportsのマニュアルページを参照してください。

  5. [完了]をクリックして設定を完了します。

[Important]自動ファイアウォール設定

システムでファイアウォール(SuSEfirewall2)が有効になっている場合に、[ファイアウォールで開いているポート]を選択すると、YaSTは、nfsサービスを有効にすることでNFSサーバ用にファイアウォール設定を変更します。

26.3.1.1. NFSv4クライアント用のエクスポート

NFSv4クライアントをサポートするには、[NFSv4を有効にする]を有効にします。NFSv3クライアントも、引き続きサーバからエクスポートされているディレクトリにアクセスすることができます(適切にエクスポートされている場合)。この機能については、26.3.1.3項 「NFSv3エクスポートとNFSv4エクスポートの共存」で詳細に説明しています。

NFSv4を有効にしたら、適切なドメイン名を入力します。ここで指定する名前は、このサーバにアクセスするNFSv4クライアントの/etc/idmapd.confファイルで指定された名前にする必要があります。このパラメータは、NFSv4サポートに必要なidmapdサービスが使用します(サーバとクライアントの両方で)。特に必要のない限り、そのままlocaldomain(デフォルト)を使用してください。詳細については、26.5項 「詳細情報」のリンクを参照してください。

[次へ]をクリックします。次のダイアログには、2つのセクションがあります。上部のセクションには、[ディレクトリ][Bind Mount Targets]の2つの列があります。[Directories]には、エクスポートするディレクトリが表示されています。この列は、直接変更することができます。

クライアントに対してエクスポートできるディレクトリには、疑似rootファイルシステムの役割を果たすディレクトリと、疑似ファイルシステムのサブディレクトリにバインドされるディレクトリの2種類があります。疑似ファイルシステムは、同じクライアントに対してエクスポートされたすべてのファイルシステムをまとめる、ルートディレクトリの役割を果たします。クライアントに対しては、サーバ上の1つのディレクトリのみを、エクスポート用の疑似rootディレクトリとして設定できます。このクライアントに複数のディレクトリをエクスポートするには、それらのディレクトリを、疑似root中の既存サブディレクトリにバインドします。

図26.3 NFSv4を使ったディレクトリのエクスポート

NFSv4を使ったディレクトリのエクスポート

このダイアログの下部には、クライアントを入力し(ワイルドカード)、ディレクトリに対するエクスポートオプションを指定します。上部でディレクトリを追加すると、クライアント情報とオプションを入力するためのダイアログが自動的に表示されます。その後、新しいクライアントまたはクライアントのセットを追加するには、[ ホストの追加]をクリックします。

表示される小さなダイアログに、ホストを示すワイルドカードを入力してください。4種類の方法でホストを指定することができます。1台のホスト(名前またはIPアドレス)(single host)、ネットグループ( netgroups)、ワイルドカード(すべてのコンピュータがサーバにアクセスできることを示す*など)( wild cards)、およびIPネットワーク(IP networks)です。[オプション]に、疑似rootにするディレクトリを設定する場合は、カンマ区切り形式のオプションリストにfsid=0を指定します。このディレクトリを、すでに疑似rootとして設定されているディレクトリ下の別のディレクトリにバインドする場合は、オプションリストにターゲットのバインドパスをbind=/target/pathの形式で指定します。

たとえば、サーバにアクセスするすべてのクライアントの疑似ディレクトリとして、/exportsを使用する場合を考えてみましょう。この場合、上部セクションでこのディレクトリを追加して、このディレクトリのオプションにfsid=0を指定します。別に/dataディレクトリもNFSv4を使ってエクスポートする必要がある場合は、このディレクトリも上部のセクションに追加します。このディレクトリに関するオプションを設定する際には、リストにbind=/exports/dataを指定します。また、/exports/dataがすでに/exportsの既存のサブディレクトリとなっていることを確認してください。オプションbind=/target/pathに対する変更(値の追加、削除、または変更)はすべて、[Bindmountターゲット]に反映されます。この列は直接編集可能な列ではなく、ディレクトリとその性質を要約している列です。すべての情報を入力したら、[完了]をクリックして設定を完了します。サービスがただちに利用できるようになります。

26.3.1.2. NFSv3およびNFSv2エクスポート

初期ダイアログで[NFSv4を有効にする]の選択が解除されていることを確認してから、[次へ]をクリックします。

次のダイアログは、2つの部分に分かれています。上部のテキストフィールドに、エクスポートするディレクトリを入力します。下部に、それらのディレクトリへのアクセスを許可するホストを入力します。4種類の方法でホストを指定することができます。1台のホスト(名前またはIPアドレス)(single host)、ネットグループ( netgroups)、ワイルドカード(すべてのコンピュータがサーバにアクセスできることを示す*など)( wild cards)、およびIPネットワーク(IP networks)です。

に示すダイアログボックスが表示されます。図26.4「NFSv2およびNFSv3を使ったディレクトリのエクスポート」これらのオプションの詳細は、man exportsを実行して表示される、マニュアルページを参照してください。[完了]をクリックして設定を完了します。

図26.4 NFSv2およびNFSv3を使ったディレクトリのエクスポート

NFSv2およびNFSv3を使ったディレクトリのエクスポート

26.3.1.3. NFSv3エクスポートとNFSv4エクスポートの共存

1台のサーバ上に、NFSv3エクスポートとNFSv4エクスポートを共存させることができます。初期設定ダイアログでNFSv4サポートを有効にすると、オプションリストにfsid=0bind=/target/pathが指定されていないエクスポートは、NFSv3エクスポートとみなされます。図26.2「YaSTを使ったNFSサーバの設定;」の例を参考に説明します。[ディレクトリの追加]を使って/data2ディレクトリを追加したけれども、そのオプションにfsid=0bind=/target/pathを指定しなかった場合、このエクスポートはNFSv3エクスポートとして処理されます。

[Important]

自動ファイアウォール設定

システムでSuSEfirewall2が有効になっている場合に、[ファイアウォールでポートを開く]を選択すると、YaSTはnfsサービスの有効化により、そのNFSサーバ設定を適応させます。

26.3.2. ファイルシステムの手動エクスポート

NFSエクスポートサービスの環境設定ファイルは、/etc/exports/etc/sysconfig/nfsです。NFSv4サーバ環境設定には、これらのファイルに加えて/etc/idmapd.confも必要です。サービスを起動または再起動するには、rcnfsserver restartを実行します。これにより、NFSv4が/etc/sysconfig/nfsで設定されている場合は、rpc.idmapdも起動します。NFSサーバは、RPCポートマッパーに依存しています。したがって、rcportmap restartコマンドで、ポートマッパーサービスも起動/再起動してください。

26.3.2.1. NFSv4を使ったファイルシステムのエクスポート

NFSv4は、SUSE Linux Enterprise Serverで利用できる最新版のNFSプロトコルです。NFSv4でエクスポートするディレクトリの設定方法は、以前のNFSバージョンと多少異なっています。

26.3.2.1.1. /etc/exports

/etc/exportsファイルには、エントリのリストが含まれています。各エントリはそれぞれ共有するディレクトリと共有方法を示します。/etc/exports中の一般的なエントリは、次の項目から成り立っています。

/shared/directory   host(option_list)

たとえば、次のような指定内容です。

/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:/がマウントされると必ずその下に自動的に表示されるのでマウントする必要はありません。

26.3.2.1.2. /etc/sysconfig/nfs

/etc/sysconfig/nfsファイルには、NFSv4サーバデーモンの動作を決定する小数のパラメータが含まれています。NFS4_SUPPORTパラメータをyesに設定することが重要です。NFS4_SUPPORTは、NFSサーバがNFSv4エクスポートとクライアントをサポートするかどうかを決定します。

26.3.2.1.3. /etc/idmapd.conf

Linuxコンピュータ上の各ユーザには、ユーザ名とIDがあります。idmapdは、サーバへのNFSv4リクエストやクライアントへのNFSv4応答用に、名前とID間のマッピングサービスを提供しています。NFSv4はその通信に名前だけを使用するので、idmapdは、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 idmapdman idmapd.confを実行します。

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

/etc/exportsまたは/etc/sysconfig/nfsを変更したら、rcnfsserver restartコマンドを実行して、NFSサーバサービスを起動/再起動します。/etc/idmapd.confを変更したら、killall -HUP rpc.idmapdコマンドで、環境設定ファイルを再ロードします。

NFSサービスをブート時に開始する必要がある場合は、chkconfig nfsserver onコマンドを実行します。

26.3.2.2. NFSv2とNFSv3を使ったファイルシステムのエクスポート

ここでは、NFSv2エクスポートとNFSv3エクスポートに固有のトピックを取り上げます。NFSv4エクスポートについては、「26.3.1.1項 「NFSv4クライアント用のエクスポート」」を参照してください。

NFSを使ってファイルシステムをエクスポートする場合、/etc/exports/etc/sysconfig/nfsの2つの環境設定ファイルが関わってきます。一般的な/etc/exportsファイルには、各エントリが次のような形式で指定されています。

/shared/directory   host(list_of_options)

たとえば、次のような指定内容です。

/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サーバを起動/再起動します。

26.3.3. NFSでのKerberosの使用

NFSでKerberos認証を使用するには、GSSセキュリティを有効にする必要があります。最初のYaST NFSサーバのダイアログで、[GSSセキュリティを有効にする]を選択します。ただし、この機能を使用するには、機能するKerberosサーバが必要です。YaSTtは、このサーバの設定は行いません。その提供機能を使用するだけです。YaST環境設定に加えて、Kerberos認証も使用する場合は、NFS設定を実行する前に、少なくとも次の手順を完了してください。

  1. サーバとクライアントの両方が、同じKerberosドメインにあることを確認します。つまり、クライアントとサーバが同じKDC(Key Distribution Center)サーバにアクセスし、krb5.keytabファイル(the default location on any machine is /etc/krb5.keytab)を共有していなければなりません。Kerberosの詳細については、第6章 Network Authentication with Kerberos (↑Security Guide (セキュリティガイド))を参照してください。

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

  3. サーバでrcsvcgssd startコマンドを実行して、svcgssdサービスを開始します。

Kerberos化されたNFSの設定の詳細については、26.5項 「詳細情報」のリンクを参照してください。

26.4. クライアントの設定

ホストをNFSクライアントとして設定する場合、他のソフトウェアをインストールする必要はありません。必要なすべてのパッケージは、デフォルトでインストールされます。

26.4.1. YaSTによるファイルシステムのインポート

認証されたユーザは、YaST NFSクライアントモジュールを使用して、NFSディレクトリをNFSサーバからローカルファイルツリーにマウントできます。[追加]をクリックし、NFSサーバのホスト名、インポートするディレクトリ、およびディレクトリをローカルにマウントするマウントポイントを入力します。最初のダイアログで[完了]をクリックすると、変更が反映されます。

[NFS設定]タブで、[ファイアウォールでポートを開く]を有効にし、リモートコンピュータからサービスへのアクセスを許可します。チェックボックスの下には、ファイアウォールのステータスが表示されます。NFSv4を使用する場合は、[NFSv4を有効にする]チェックボックスが選択され、[NFSv4ドメイン名]にNFSv4サーバによって使用される値と同じ値が入力されていることを確認してください。デフォルトドメインは、localdomainです。

OK]をクリックして変更内容を保存します。詳細については、図26.5「YaSTによるNFSクライアント設定」を参照してください。

設定は/etc/fstabに書かれ、指定されたファイルシステムがマウントされます。後でYaST設定クライアントを起動した時に、このファイルから既存の設定が取得されます。

図26.5 YaSTによるNFSクライアント設定

YaSTによるNFSクライアント設定

26.4.2. ファイルシステムの手動インポート

NFSサーバからファイルシステムを手動でインポートするには、RPCポートマッパーが実行していることが前提条件です。「rcrpcbind start」をrootとして入力してインポートを実行します。次に、mountを使用して、ローカルパーティションと同様に、リモートファイルシステムをファイルシステムにマウントできます。

mount host:remote-pathlocal-path

たとえば、nfs.example.comコンピュータからユーザディレクトリをインポートするには、次の構文を使用します。

mount nfs.example.com:/home /home

26.4.2.1. 自動マウントサービスの使用

autofsデーモンを使用して、リモートファイルシステムを自動的にマウントすることができます。/etc/auto.masterファイルに次のエントリを追加します。

/nfsmounts /etc/auto.nfs

これで、/nfsmountsディレクトリがクライアント上のすべてのNFSマウントのルートディレクトリの役割を果たすようになります(auto.nfsファイルが正しく設定されている場合)。ここでは、auto.nfsと言う名前を使用しましたが、任意の名前を選択することができます。auto.nfsで、次のようにしてすべてのNFSマウントのエントリを追加します。

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

rootとしてrcautofs startを実行して、設定をアクティブにします。この例で、server1/dataディレクトリの/nfsmounts/localdataは、NFSでマウントされ、server2/nfsmounts/nfs4mountはNFSv4でマウントされます。

autofsサービスの動作中に/etc/auto.masterファイルを編集した場合、変更内容を反映するには、rcautofs restartで自動マウント機能を再起動する必要があります。

26.4.2.2. /etc/fstabの手動編集

/etc/fstab内の典型的なNFSv3マウントエントリは、次のようになります:

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

/etc/fstabファイルにNFSv4マウントを追加することもできます。これらのマウントの場合、3列目にnfsの代わりにnfs4を指定します。また、1列目のnfs.example.com:の後に、リモートファイルシステムを/として必ず指定してください。たとえば、/etc/fstab内のNFSv4マウント行は、次のようになります。

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

noautoオプションを使用すると、起動時にファイルシステムが自動マウントされません。対応するファイルシステムを手動でマウントする場合は、マウントポイントのみを指定してmountコマンドを短くできます。

mount /local/path

ただし、noautoオプションを入力しないと、起動時に、システムのインストールスクリプトによって、それらのファイルシステムがマウントされます。

26.5. 詳細情報

NFSサーバとクライアントの設定情報は、exportsnfs、およびmountのマニュアルページのほか、/usr/share/doc/packages/nfsidmap/READMEからも入手できます。オンラインドキュメンテーションについては、次のWebサイトを参照してください。