概要
ネットワークを介したファイルシステムの公開や共有は、企業内のネットワーク
などでは一般的に行なわれているものです。 NFS
は
電話帳のような機能を提供する NIS
プロトコルと
ともにうまく動作する仕組みです。 LDAP
と
Kerberos を利用した、より機密を保持するプロトコルをお使いになる場合は、
NFSv4
に関する項目をお読みください。
NIS と NFS を同時に稼働させると、ユーザに対してネットワークを透過的に見せる ことができるようになります。 NFS ではネットワークを介して任意のファイル システムを公開することができますので、適切な設定を行なうことにより、利用している 端末にかかわらず同じ環境で作業を行なうことができるようになります。
DNS の必要性 | |
---|---|
原理上、全てのエクスポートは IP アドレスだけを利用して行なわれますが、タイム アウトを防ぐ目的から、 DNS システムを動作させる必要があります。また、 mountd では逆引きの参照を行なうため、ログ用途でも必要となります。 |
YaST モジュールでは、下記のような用語を使用します。
NFS サーバで 公開 されているディレクトリ。 クライアント側では、システムの一部として組み込むことができます。
NFS クライアントは、 NFS サーバの提供するサービスを利用する側の システムを指します。 Linux カーネルには最初から TCP/IP プロトコルが 統合されてるため、追加のソフトウエアをインストールする必要はありません。
NFS サーバは、クライアントに対して NFS サービスを提供する側です。
サーバとして動作するには、それぞれ下記のデーモンを起動する必要が
あります: nfsd
(ファイル公開),
idmapd
(ユーザとグループの
名前を ID に、もしくはその逆の処理を行なう),
statd
(ファイルの施錠 (ロック)),
mountd
(マウント要求用)
NFS サーバのソフトウエアは、既定のインストールには含まれていません。
18.3項 「NFS サーバの設定」 の手順に従って設定を行なうと、
必要なパッケージをインストールするように自動的に促されます。また、 YaST や
zypper を利用して、 nfs-kernel-server
パッケージをインストールしてもかまいません。
NIS と同様に、 NFS もクライアント/サーバ型のシステムです。ただし、 1 台の マシンで両方を同時に実行、つまりネットワークを介してファイルシステムを提供 (エクスポート) しながら、かつ他のホストのファイルシステムを取り込む (インポート) ことができます。
NFS サーバの設定は YaST から実施することができるほか、手作業でも実施 できます。また、認証については Kerberos と組み合わせることもできます。
YaST では、お使いのホストをネットワーク内の NFS サーバとして動作させることが できます。 NFS サーバとは、アクセス権を設定したホストに対してディレクトリや ファイルを共有 (エクスポート) するということです。これにより、アプリケーションを 各ホストのローカルにインストールすることなく、グループ内の全メンバーに提供する ことができるようになります。サーバの設定は下記のようにして行ないます:
YaST を起動して 図18.1「NFS サーバ設定ツール」 のようなダイアログが表示されます。
+ を選択します。 すると、ダイアログが表示されたら、まずは
のラジオ ボタンを選択してから、 に 入力を行ないます。サーバに対して機密を保持する接続を行ないたい場合は、
を選択します。これを行なうには、お使いの ドメインにあらかじめ Kerberos をインストールし、サーバとクライアントの両方で Kerberos の設定を行なっておく必要があります。設定を完了したら を押します。次に上半分のテキストフィールドでは、エクスポートするディレクトリを入力します。 下半分のテキストフィールドでは、それらへのアクセスを許可するホストを指定します。 詳しくは 図18.2「YaST を利用した NFS サーバの設定」 をご覧ください。
この図では以前のダイアログで NFSv4 を選択した場合のもので、
バインドマウントのターゲット
が右側に表示されています。
詳しくは左側に表示されるヘルプをお読みください。
ダイアログの下半分では、各ホストに対して下記の 4 種類のオプションを設定すること
ができます: single host
, netgroups
,
wildcards
, IP networks
。これらのオプション
について、詳しくは exports
のマニュアルページをお読みください。
設定を完了するには、
ボタンを押します。自動的なファイアウオール設定 | |
---|---|
お使いのシステムでファイアウオール (SuSEfirewall2) が動作している場合、
|
NFSv4 のクライアントに対応するには、 18.3.1.3項 「v3 と v4 エクスポートの共存」 をお読みください。
を選択します。正しくエクスポートされていれば、 NFSv3 のクライアントからも アクセスできるようになります。詳しくは
NFSv4 を有効にしたあとは、適切なドメイン名を入力してください。なお、入力した
ドメイン名は、 NFSv4 クライアント側にある /etc/idmapd.conf
ファイル内のどこかに存在していることを確認してください。このパラメータは
idmapd サービスが利用するもので、 NFSv4 に対応する場合にサーバおよび
クライアントの両方で必要となります。特に要件がなければ、
localdomain
のままでもかまいません。詳しくは
18.5項 「さらなる情報」 にあるリンクを
ご覧ください。
指定が終わったら
を押します。すると、 2 つのセクション から構成されるダイアログが表示されます。上半分は 2 つの列から構成され、それぞれ と という名前が設定されています。 は直接編集可能な 列で、エクスポートするディレクトリを設定します。クライアントが固定されている場合であれば、 2 種類のディレクトリをエクスポート することができます。 1 つは擬似的なルートファイルシステムとして動作するディレクトリ、 もう 1 つは疑似ファイルシステムのうちの何らかのサブディレクトリとしてバインド するものとしてエクスポートできます。この擬似的なファイルシステムは、同じ クライアントに対してエクスポートする全てのファイルシステムについて、ベース ポイントとして動作するようになります。単一または複数のクライアントに対しては、 サーバ上のいずれか 1 つのディレクトリだけをエクスポート用に設定することができます。 このクライアントの場合は、擬似的なルート内に複数の既存のサブディレクトリを バインドすることで、複数のディレクトリをエクスポートすることができます。
ダイアログの下半分では、各ディレクトリに対するクライアント (ワイルドカード) と エクスポートオプションを設定します。上半分でディレクトリを追加した後であれば、 クライアントとエクスポートオプションを設定する追加ダイアログが自動で表示されます。 後から新しいクライアント (クライアントセット) を追加したい場合は、
を押してください。
開いた小さいダイアログでは、まずホストのワイルドカードを指定します。各ホストに
対して、 4 種類の方法でワイルドカードを指定することができます: 単一ホスト
(ホスト名または IP アドレス), ネットグループ, ワイルドカード
(*
を指定した場合は全てのマシンを意味します), IP ネットワーク
の 4 種類です。次に の項目では、
疑似ルートディレクトリを作成する場合は fsid=0
を含めて
カンマ区切りのリストを作成します。また設定中のディレクトリが、既に設定済みの
疑似ルート下にある他のディレクトリに対し、バインドされる必要がある場合は、
bind=/target/path
のような形式でターゲットのバインドパスを
オプション一覧に追加してください。
たとえば /exports
を疑似ルートディレクトリとして選択し、
全てのクライアントに対してサーバへのアクセスを許可する場合を考えます。
上半分ではこのディレクトリを追加し、そのオプションには fsid=0
を設定します。その他のディレクトリ、たとえば /data
を
NFSv4 でエクスポートする必要がある場合も、上半分にディレクトリを追加します。
ただし、このディレクトリに対するオプション入力では、一覧の中に
bind=/exports/data
を設定し、 /exports
以下に /exports/data
というサブディレクトリが存在している
ことを確認してください。 bind=/target/path
オプション内の変更は、追加/変更/削除とも
に反映されます。この列は
直接編集可能ではありませんが、ディレクトリの概要や性質を表わしたものになります。
設定を全て完了したら、 を押してください。
サービスはすぐに利用できるようになります。
最初のダイアログでは、
を押す前に のチェックが付けられていないことを 確認してください。
次のダイアログは 2 つの部分から構成されます。上半分のテキストフィールドには
エクスポートするディレクトリを入力します。下半分ではそれらにアクセスする権利の
あるホストを指定します。各ホストに対して、 4 種類の方法でワイルドカードを指定
することができます: 単一ホスト (ホスト名または IP アドレス), ネットグループ,
ワイルドカード (*
を指定した場合は全てのマシンを意味します),
IP ネットワークの 4 種類です。
ここでのダイアログは 図18.4「NFSv2 と v3 を利用したディレクトリのエクスポート」 に示されている とおりです。これらのオプションについて、詳しい説明は man exports をお読みください。 を押すと設定を完了します。
NFSv3 と NFSv4 のエクスポートは、サーバ内で共存させることができます。設定
ダイアログの冒頭で NFSv4 を有効に設定したあとは、オプション内に
fsid=0
や bind=/target/path
が記述されていないものが v3 エクスポートと判断されます。
図18.2「YaST を利用した NFS サーバの設定」 にある
設定例から /data2
のような他のディレクトリを
追加する場合は、 を押してオプション
内に fsid=0
や
bind=/target/path
を含めないようにして設定すると、
そのエクスポートを v3 エクスポートとして利用できるようになります。
自動的なファイアウオール設定
お使いのシステムでファイアウオール (SuSEfirewall2) が動作している場合、
|
NFS のエクスポートサービスで利用する設定ファイルは、
/etc/exports
と /etc/sysconfig/nfs
です。これらのファイルに加え、 NFSv4 サーバの設定には
/etc/idmapd.conf
ファイルが必要です。また、サービスを
開始したり再起動したりするには、 rcnfsserver restart
コマンドを実行します。このコマンドでサービスを起動すると、
/etc/sysconfig/nfs
で NFSv4 を設定している場合、
rpc.idmapd
についても起動を行ないます。なお、 NFS
サーバを起動するには RPC portmapper が動作している必要があります。
そのため、 rcrpcbind restart を実行して、 portmapper
サービスについても起動または再起動を行なってください。
NFSv4 は openSUSE における最新の NFS プロトコルバージョンです。 NFSv4 でディレクトリをエクスポートするための設定は、従来の NFS バージョンの設定とは少し異なります。
/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:/
をマウントするだけでそのディレクトリが
見えるようになります。
/etc/sysconfig/nfs
ファイルには、 NFSv4 サーバ
デーモンの動作を決定するいくつかのパラメータが含まれています。なお、
NFS4_SUPPORT
パラメータで yes
を設定しなければならないことに注意してください。
と設定することです。 NFS4_SUPPORT
により、
NFS サーバが NFSv4のエクスポートとクライアントに対応するかどうかが決定されます。
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
より詳しい参照先として、 idmapd
と idmapd.conf
の各マニュアルページがあります。それぞれ man idmapd
,
man idmapd.conf
コマンドでお読みください。
/etc/exports
や /etc/sysconfig/nfs
を変更したあとは、 rcnfsserver restart を実行し、
NFS サーバサービスを開始または再起動してください。
/etc/idmapd.conf
ファイルを変更した場合は、
killall -HUP rpc.idmapd コマンドで設定ファイルを
再読み込みさせてください。
NFS サービスをシステムの起動時に開始させたい場合は、 chkconfig nfsserver on コマンドを実行してください。
この章では、 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 サーバサービスを開始または再起動してください。
NFS の認証として Kerberos を利用するには、まず GSS セキュリティを有効に しなければなりません。これを行なうには、 YaST NFS サーバの最初のダイアログで、
を選択してください。 なお、この機能を利用するには、あらかじめ動作する Kerberos サーバを用意 しておく必要があります。 YaST ではサーバを設定することはできず、 その機能を利用することしか行なうことができません。 YaST の設定に加えて Kerberos の認証を利用したい場合は、 NFS の設定を行なう前に少なくとも下記の 手順を実施しておいてください:
まずサーバとクライアントの両方で、同じ Kerberos ドメインを設定している
ことを確認します。これは、サーバとクライアントの両方で同じ KDC
(鍵配布センター) を利用し、 krb5.keytab
ファイル
(既定ではどのマシンでも /etc/krb5.keytab
内に
存在します) を共有しなければならないことになります。 Kerberos について、
詳しくは 第6章 Kerberos を利用したネットワーク認証 (↑セキュリティガイド) をお読みください。
クライアント側で rcgssd start コマンドを実行し、 gssd サービスを起動します。
さらに rcsvcgssd start コマンドを実行し、サーバ上で svcgssd サービスを起動します。
NFS を Kerberos 化するための設定について、詳しい情報は 18.5項 「さらなる情報」 にある それぞれのリンクを参照してください。
お使いのホストを NFS クライアントとして動作するように設定するに あたっては、特に追加のソフトウエアをインストールする必要はありません。 必要なすべてのパッケージは既定でインストールされます。
権限を与えられたユーザであれば、 YaST NFS クライアントモジュールを利用して NFS サーバからディレクトリをマウントすることができます。これは YaST のモジュールで ある
を利用して行なうことができます。モジュールを 起動してから を押し、 NFS サーバのホスト名とインポートする ディレクトリ、そしてどのディレクトリにつなげるかをそれぞれ指定してください。これらの 変更は、最初のダイアログで ボタンを押した時に実施されます。
また、 localdomain
になっています。
最後に設定を保存するため、 図18.5「YaST を利用した NFS クライアント設定」 をご覧ください。
を押します。
設定ファイルは /etc/fstab
に書き込まれ、指定したファイルシステム
がマウントされます。後から YaST 設定モジュールを起動したときには、このファイルから
既存の設定を読み込みます。
手作業でファイルシステムをマウントするには、事前に RPC portmapper を起動しておく必要があります。
RPC portmapper は root
から
rcrpcbind start
と入力することで
起動することができます。起動が完了したら、リモート側のエクスポート済みファイル
システムは、下記のようにハードディスクをマウントするのに似たコマンドラインで
マウントできるようになります:
mountホスト
:リモート側のパス
ローカル側のパス
たとえば nfs.example.com
マシン上のユーザディレクトリを
インポートしたい場合は、下記のようなコマンドを入力します:
mount nfs.example.com:/home /home
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 を
実行して再起動を行なわなければなりません。
/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
オプションを指定しない場合は、システムの起動時にこれらの
ファイルシステムが処理され、マウントされるようになります。
exports, nfs, mount
の各マニュアルページに加え、 NFS サーバやクライアントを設定するための
情報が /usr/share/doc/packages/nfsidmap/README
ファイルに存在しています。さらなる文書については、それぞれ下記の
Web ドキュメントにあります:
SourceForge: オンラインでの詳細な技術文書 (英語)
NFS バージョン 4 オープンソース参照実装: Kerberos 化した NFS を設定するための手順 (英語)
Linux NFSv4 よくある質問 (Frequently Asked Questions): NFSv4 について何らかの質問がある場合の参照先。