
ネットワーク上でファイルシステムを分散して共有することは、企業環境では一般的なタスクです。十分に実績のあるネットワークファイルシステム (NFS)は、NIS (Yellow Pagesプロトコル)と連携して機能します。LDAPと連携して機能し、Kerberosも使用できるより安全なプロトコルについては、NFSv4をチェックしてください。pNFSとの組み合わせで、パフォーマンスのボトルネックをなくすことができます。
NFSをNISと連携して使用すると、ネットワークをユーザに対して透過的にすることができます。NFSでは、ネットワーク経由で任意のファイルシステムを分散できます。適切なセットアップを行えば、現在どの端末を使用しているかに係わりなく、常に同じ環境で作業できます。
原則として、すべてのエクスポートはIPアドレスのみを使用して実行できます。タイムアウトを回避するには、機能するDNSシステムが必要です。mountdデーモンは逆引きを行うので、少なくともログ目的でDNSは必要です。
以下の用語は、YaSTモジュールで使用されています。
NFSサーバによってエクスポートされ、クライアントがシステムに統合できるディレクトリ。
NFSクライアントは、ネットワークファイルシステムプロトコルを介してNFSサーバからのNFSサービスを使用するシステムです。TCP/IPプロトコルはLinuxカーネルにすでに統合されており、追加ソフトウェアをインストールする必要はありません。
NFSサーバは、NFSサービスをクライアントに提供します。nfsd(ワーカー)、idmapd (IDへのユーザおよびグループ名のマッピングと、その逆のマッピング)、statd(ファイルのロック)、およびmountd (マウント要求)。
NFSv3はバージョン3の実装で、クライアント認証をサポートする「古い」ステートレスなNFSです。
NFSv4は、Kerberosによるセキュアなユーザ認証をサポートする新しいバージョン4の実装です。NFSv4で必要なポートは1つのみであるため、NFSv3よりもファイアウォール環境に適しています。
プロトコルはhttp://tools.ietf.org/html/rfc3530で指定されています。
パラレル NFS。NFSv4のプロトコル拡張。 任意のpNFSクライアントは、NFSサーバ上のデータに直接アクセスできます。
NFSサーバソフトウェアは、デフォルトインストールの一部ではありません。26.3項 「NFSサーバの設定」に従ってNFSサーバを設定すると、必要なパッケージのインストールを自動的に求められます。別の方法として、YaSTまたはZypperでパッケージnfs-kernel-serverをインストールします。
NIS同様、NFSはクライアント/サーバシステムです。ただし、ファイルシステムをネットワーク経由で提供し(エクスポート)、同時に他のホストからファイルシステムをマウントすることができます(インポート)。
エンタープライズクラスのすべてのLinuxシステムの場合と同様に、NFSボリュームのエクスポート元サーバへのローカルマウントは、SUSE Linux Enterpriseシステムではサポートされていません。
NFSサーバの設定は、YaSTを使用するか、または手動で完了できます。認証のため、NFSをKerberosと組み合わせることもできます。
YaSTを使用して、ネットワーク上のホストをNFSサーバにすることができます。NFSサーバとは、アクセスを許可されたすべてのホスト、またはグループのすべてのメンバーに、ディレクトリやファイルをエクスポートするサーバのことです。これにより、サーバは、ホストごとにアプリケーションをローカルインストールせずにアプリケーションを提供することもできます。
そのようなサーバをセットアップするには、次の手順に従います。
YaSTを起動し、 › の順に選択します(図26.1「NFSサーバ設定ツール」を参照してください)。追加のソフトウェアをインストールするよう求められることがあります。
ラジオボタンをオンにします。
システム(SuSEfirewall2)でファイアウォールが有効になっている場合は、をオンにします。YaSTは、nfsサービスを有効にすることによってNFSサーバの設定を適用します。
を選択するかどうかを決定します。NFSv4を無効にした場合、YaSTでサポートされるのはNFSv3およびNFSv2のみになります。
NFSv4を選択した場合は、追加で適切なNFSv4ドメイン名を入力します。
ここで指定する名前は、このサーバにアクセスするNFSv4クライアントの/etc/idmapd.confファイルで指定された名前にする必要があります。このパラメータは、NFSv4サポートに必要なidmapdデーモンが使用します(サーバとクライアントの両方で)。特に必要のない限り、そのままlocaldomain(デフォルト)を使用してください。
サーバに安全にアクセスするには、をクリックします。この手順の前提条件として、ドメインにKerberosをインストールし、サーバとクライアントの両方でKerberosを有効にしておく必要があります。をクリックして、次の設定ダイアログに進みます。
ディレクトリをエクスポートするには、ダイアログの上半分にあるをクリックします。
許可されるホストをまだ設定していない場合は、自動的に別のダイアログが表示されるので、クライアント情報およびオプションを入力します。ホストを示すワイルドカードを入力します(通常はデフォルト設定のまま使用できます)。
4種類の方法でホストを指定することができます。1台のホスト(名前またはIPアドレス)(single host)、ネットグループ( netgroups)、ワイルドカード(すべてのコンピュータがサーバにアクセスできることを示す*など)( wild cards)、およびIPネットワーク(IP networks)です。
これらのオプションの詳細については、exportsのマニュアルページを参照してください。
をクリックして設定を完了します。
NFSエクスポートサービスの環境設定ファイルは、/etc/exportsと/etc/sysconfig/nfsです。NFSv4サーバ環境設定には、これらのファイルに加えて/etc/idmapd.confも必要です。サービスを起動または再起動するには、systemctl restart nfsserver.serviceコマンドを実行します。これにより、NFSv4が/etc/sysconfig/nfsで設定されている場合は、rpc.idmapdも起動します。NFSサーバは、RPCポートマッパーに依存しています。したがって、ポートマッパーサービスも起動または再起動してください。
NFSv4は、SUSE Linux Enterprise Serverで利用できる最新版のNFSプロトコルです。NFSv3と同じ方法で、NFSv4でのエクスポート用にディレクトリを設定できるようになりました。
以前のSUSE Linux Enterprise Server 11バージョンでは、/etc/exportsのバインドマウントが必須でした。これは引き続きサポートされていますが、非推奨になりました。
/etc/exportsファイルには、エントリのリストが含まれています。各エントリはそれぞれ共有するディレクトリと共有方法を示します。/etc/exports中の一般的なエントリは、次の項目から成り立っています。
/shared/directory host(option_list)
たとえば、次のような指定内容です。
/export/data 192.168.1.2(rw,sync)
ここでは、許可されたクライアントを識別するためにIPアドレス192.168.1.2が使われています。ホスト名、ホストを表すワイルドカード、または(*.abc.comや*など)ネットグループ(@my-hosts)を使用できます。
すべてのオプションとそれらの意味の詳細については、exportsのマニュアルページを参照してください(man exports)。
/etc/sysconfig/nfsファイルには、NFSv4サーバデーモンの動作を決定する小数のパラメータが含まれています。NFS4_SUPPORTパラメータをyesに設定することが重要です。NFS4_SUPPORTは、NFSサーバがNFSv4エクスポートとクライアントをサポートするかどうかを決定します。
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
詳細については、idmapdおよびidmapd.confのマニュアルページを参照してください(man idmapdおよびman idmapd.conf)。
/etc/exportsまたは/etc/sysconfig/nfsを変更したら、NFSサーバサービスを起動/再起動します。
systemctl restart nfsserver.service
/etc/idmapd.confを変更したら、設定ファイルを再ロードします。
killall -HUP rpc.idmapd
NFSサービスをブート時に起動する必要がある場合は、次のコマンドを実行します。
systemctl enable nfsserver.service
NFSでKerberos認証を使用するには、GSSセキュリティを有効にする必要があります。最初のYaST NFSサーバのダイアログで、を選択します。ただし、この機能を使用するには、機能するKerberosサーバが必要です。YaSTはKerberosサーバの設定は行いません。その提供機能を使用するだけです。YaST環境設定に加えて、Kerberos認証も使用する場合は、NFS設定を実行する前に、少なくとも次の手順を完了してください。
サーバとクライアントの両方が、同じKerberosドメインにあることを確認します。つまり、クライアントとサーバが同じKDC(Key Distribution Center)サーバにアクセスし、krb5.keytabファイル(the default location on any machine is /etc/krb5.keytab)を共有していなければなりません。Kerberosの詳細については、Chapter 7, Network Authentication with Kerberos, Security Guideを参照してください。
クライアントでsystemctl start gssd.serviceコマンドを実行して、gssdサービスを起動します。
サーバでsystemctl start svcgssd.serviceコマンドを実行して、svcgssdサービスを起動します。
Kerberos化されたNFSの設定の詳細については、26.5項 「詳細情報」のリンクを参照してください。
ホストをNFSクライアントとして設定する場合、他のソフトウェアをインストールする必要はありません。必要なすべてのパッケージは、デフォルトでインストールされます。
認証されたユーザは、YaST NFSクライアントモジュールを使用して、NFSディレクトリをNFSサーバからローカルファイルツリーにマウントできます。次の手順に従います。
YaST NFSクライアントモジュールを起動します。
タブでをクリックします。NFSサーバのホスト名、インポートするディレクトリ、およびこのディレクトリをローカルでマウントするマウントポイントを入力します。
NFSv4を使用する場合は、タブでを選択します。また、に、NFSv4サーバが使用する値と同じ値が入力されている必要があります。デフォルトドメインは、localdomainです。
NFSでKerberos認証を使用するには、GSSセキュリティを有効にする必要があります。を選択します。
ファイアウォールを使用しており、リモートコンピュータのサービスにアクセスを許可する場合は、タブでをオンにします。チェックボックスの下には、ファイアウォールのステータスが表示されます。
をクリックして変更内容を保存します。
設定は/etc/fstabに書かれ、指定されたファイルシステムがマウントされます。後でYaST設定クライアントを起動した時に、このファイルから既存の設定が取得されます。
NFSサーバからファイルシステムを手動でインポートするには、RPCポートマッパーが実行していることが前提条件です。RPCポートマッパーを適切に起動するのはnfs.serviceです。そのため、rootとして「systemctl start nfs.service」を入力し、RPCポートマッパーを起動します。次に、mountを使用して、ローカルパーティションと同様に、リモートファイルシステムをファイルシステムにマウントできます。
mount host:remote-pathlocal-path
たとえば、nfs.example.comマシンからユーザディレクトリをインポートするには、次の構文を使用します。
mount nfs.example.com:/home /home
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としてsystemctl start autofs.serviceを実行して設定を有効にします。この例で、server1の/dataディレクトリの/nfsmounts/localdataはNFSでマウントされ、server2の/nfsmounts/nfs4mountはNFSv4でマウントされます。
autofsの実行中に/etc/auto.masterファイルを編集した場合、変更を反映するには、systemctl restart autofs.serviceで自動マウント機能を再起動する必要があります。
/etc/fstabの手動編集 #
/etc/fstab内の典型的なNFSv3マウントエントリは、次のようになります:
nfs.example.com:/data /local/path nfs rw,noauto 0 0
NFSv4マウントの場合は、3番目の列でnfsの代わりにnfs4を使用します。
nfs.example.com:/data /local/pathv4 nfs4 rw,noauto 0 0
noautoオプションを使用すると、起動時にファイルシステムが自動マウントされません。対応するファイルシステムを手動でマウントする場合は、マウントポイントのみを指定してmountコマンドを短くできます。
mount /local/path
ただし、noautoオプションを入力しないと、起動時に、システムのinitスクリプトによって、それらのファイルシステムがマウントされます。
NFSは、1980年代に開発された、もっとも古いプロトコルの1つです。そのため、小さなファイルを共有したい場合は、通常、NFSで十分です。しかし、大きなファイルを送信したい場合や多数のクライアントがデータにアクセスしたい場合は、NFSサーバがボトルネックとなり、システムのパフォーマンスに重大な影響を及ぼします。これは、ファイルのサイズが急速に大きくなっているのに対し、Ethernetの相対速度が追い付いていないためです。
「通常の」NFSサーバにファイルを要求すると、サーバはファイルのメタデータを検索し、すべてのデータを収集して、ネットワークを介してクライアントに送信します。しかし、ファイルが小さくても大きくてもパフォーマンスのボトルネックが問題になります。
小さいファイルでは、メタデータの収集に時間がかかる.
大きいファイルでは、サーバからクライアントへのデータ送信に時間がかかる
pNFS(パラレルNFS)は、ファイルシステムメタデータをデータの場所から分離することによって、この制限を克服します。このため、pNFSには2種類のサーバが必要です。
データ以外のすべてのトラフィックを扱う「メタデータ」または「制御サーバ」
データを保持する1つ以上の「ストレージサーバ」
メタデータサーバとストレージサーバによって、単一の論理NFSサーバが構成されます。クライアントが読み込みまたは書き出しを行う場合、メタデータサーバがNFSv4クライアントに対して、ファイルのチャンクにアクセスするにはどのストレージサーバを使用すればよいかを指示します。クライアントはサーバのデータに直接アクセスできます。
SUSE Linux Enterpriseはクライアント側でのみpNFSをサポートします。
手順26.2「NFSディレクトリのインポート」に従って進めます。ただし、チェックボックスをクリックし、オプションでをクリックします。YaSTが必要な手順をすべて実行し、必要なすべてのオプションを/etc/exportsファイルに書き込みます。
26.4.2項 「ファイルシステムの手動インポート」を参照して開始します。ほとんどの設定はNFSv4サーバによって行われます。pNFSを使用する場合に異なるのは、minorversionオプションおよびメタデータサーバMDS_SERVERをmountコマンドに追加することだけです。
mount -t nfs4 -o minorversion=1 MDS_SERVER MOUNTPOINT
デバッグを支援するために、/procファイルシステムの値を変更します。
echo 32767 > /proc/sys/sunrpc/nfsd_debug echo 32767 > /proc/sys/sunrpc/nfs_debug
NFSサーバとクライアントの設定情報は、exports、nfs、およびmountのマニュアルページのほか、/usr/share/doc/packages/nfsidmap/READMEからも入手できます。オンラインドキュメンテーションについては、次のWebサイトを参照してください。
詳細な技術ヘルプについては、SourceForge (http://nfs.sourceforge.net/)を参照してください。
NFSでのKerberosの設定方法は、NFS Version 4 Open Source Reference Implementation (http://www.citi.umich.edu/projects/nfsv4/linux/krb5-setup.html)を参照してください。
Linux NFSv4 (http://www.citi.umich.edu/projects/nfsv4/linux/faq/)には、NFSv4に関するFAQが用意されています。