<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Air</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Air"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Air"/>
	<updated>2026-05-30T10:17:41Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NFS&amp;diff=13069</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NFS&amp;diff=13069"/>
		<updated>2018-06-08T07:08:29Z</updated>

		<summary type="html">&lt;p&gt;Air: /* systemd/タイマー */ timer-&amp;gt;timersで自動起動するようにする&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[Category:ネットワーク共有]]&lt;br /&gt;
[[ar:NFS]]&lt;br /&gt;
[[cs:NFS]]&lt;br /&gt;
[[de:Network File System]]&lt;br /&gt;
[[en:NFS]]&lt;br /&gt;
[[es:NFS]]&lt;br /&gt;
[[fr:NFS]]&lt;br /&gt;
[[it:NFS]]&lt;br /&gt;
[[ru:NFS]]&lt;br /&gt;
[[zh-hans:NFS]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NFS/トラブルシューティング}}&lt;br /&gt;
{{Related|Avahi}}&lt;br /&gt;
{{Related|ディスクレスシステム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Network File System|Wikipedia]] より:&lt;br /&gt;
: &#039;&#039;Network File System (NFS) はローカルストレージにアクセスするのと同じようにネットワーク上のファイルにクライアントコンピュータでアクセスできるようにする分散ファイルシステムおよびそのプロトコルである。1984年に Sun Microsystems によって開発された。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
*NFS は暗号化されません。機密情報を扱うときは [[Kerberos]] や [[Tinc]] などの暗号化プロトコルを使って NFS をトンネル化してください。&lt;br /&gt;
*[[Samba]] とは異なり、NFS にはデフォルトでユーザー認証がありません。クライアントのアクセスは IP アドレスや[[ホストネーム]]で制限します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
クライアントとサーバーどちらでも必要なのは {{Pkg|nfs-utils}} パッケージの[[pacman|インストール]]だけです。&lt;br /&gt;
&lt;br /&gt;
{{Note|クライアント・サーバーの時計を一致させるために全てのノードで時刻同期デーモンを使うことが強く推奨されます。全てのノードで時計が正確でないと、NFS は望ましくない遅延を生じさせる可能性があります。[[Network Time Protocol daemon|NTP]] システムを使ってサーバーとクライアントの両方をインターネット上の正確な NTP サーバーに同期させることが推奨されています。}}&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
===サーバー===&lt;br /&gt;
&lt;br /&gt;
NFS サーバーにはエクスポート (共有ディレクトリ) のリストが必要で、{{ic|/etc/exports}} に定義します。{{ic|/etc/exports}} に定義する NFS 共有はいわゆる NFS ルートからの相対パスになります。セキュリティ上、NFS ルートを定義するときはサーバーのルートファイルシステム下の専用のディレクトリツリーを使用して、ユーザーからマウントポイントへのアクセスを制限すると良いでしょう。バインドマウントを使用して共有マウントポイントから実際のファイルシステム上のディレクトリにリンクします。&lt;br /&gt;
&lt;br /&gt;
下の例では以下の設定を使用します:&lt;br /&gt;
# NFS ルートは {{ic|/srv/nfs}}。&lt;br /&gt;
# エクスポートは {{ic|/srv/nfs/music}} で {{ic|/mnt/music}} にバインドマウントする。&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /srv/nfs/music /mnt/music&lt;br /&gt;
 # mount --bind /mnt/music /srv/nfs/music&lt;br /&gt;
&lt;br /&gt;
サーバーを再起動してもマウントされるように、バインドマウントを [[fstab]] に追加:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|/mnt/music /srv/nfs/music  none   bind   0   0}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NFS にはサーバーのファイルシステムのパーミッションが適用されるため、接続するユーザーに適当な権限があることを確認してください。&lt;br /&gt;
* [[ZFS]] ファイルシステムの場合、バインドマウントの使い方が特殊です。[[ZFS#バインドマウント]]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
CIDR によるアドレス指定またはホストネームを使ってマウントを許可するクライアントマシンを制限するには {{ic|/etc/exports}} に以下のように共有ディレクトリを追加:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/exports|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/srv/nfs       192.168.1.0/24(rw,fsid=root,crossmnt)&lt;br /&gt;
/srv/nfs/music 192.168.1.0/24(rw) # Use whatever export options you see fit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
サーバー実行中に {{ic|/etc/exports}} を変更した場合は再度エクスポートしないと変更が適用されないので注意してください:&lt;br /&gt;
 # exportfs -rav&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションについて詳しくは {{man|5|exports}} を参照してください。&lt;br /&gt;
{{Tip|IP の範囲を CIDR 表記に変換するツールとして [http://ip2cidr.com/ ip2cidr] が存在します。}}&lt;br /&gt;
{{Note|エクスポート先が tmpfs ファイルシステムの場合、{{ic|1=fsid=1}} オプションが必要です。}}&lt;br /&gt;
&lt;br /&gt;
==== サーバーを起動する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|nfs-server.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== その他 ====&lt;br /&gt;
&lt;br /&gt;
===== 任意のサーバー設定 =====&lt;br /&gt;
&lt;br /&gt;
高度な設定オプションは {{ic|/etc/nfs.conf}} で設定できます。単純な構成の場合はファイルを編集する必要はありません。&lt;br /&gt;
&lt;br /&gt;
===== 特定のインターフェイスあるいは IP からのアクセスに NFS を制限 =====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは {{ic|nfs-server.service}} を起動すると {{ic|/etc/exports}} とは関係なく全てのネットワークインターフェイスから接続を待機します。待機する IP あるいはホストネームを定義することで挙動を変更できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nfs.conf|2=&lt;br /&gt;
[nfsd]&lt;br /&gt;
host=192.168.1.123&lt;br /&gt;
# Alternatively, you can use your hostname.&lt;br /&gt;
# host=myhostname&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|nfs-server.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
===== NFSv4 の ID マッピングが有効になっていることを確認 =====&lt;br /&gt;
&lt;br /&gt;
idmapd が動作していても、マッピングが完全には有効になっていないことがあります。{{ic|/sys/module/nfsd/parameters/nfs4_disable_idmapping}} が {{ic|N}} になっている場合、以下のコマンドを実行することで有効にできます:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;N&amp;quot; | sudo tee /sys/module/nfsd/parameters/nfs4_disable_idmapping&lt;br /&gt;
&lt;br /&gt;
変更を永続化するには[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]]で設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nfsd.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
options nfsd nfs4_disable_idmapping=0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===== NFSv3 の固定ポート =====&lt;br /&gt;
NFSv3 クライアントのサポートが必要な場合、固定ポートを使うのが良いでしょう。デフォルトでは NFSv3 による {{ic|rpc.statd}} や {{ic|lockd}} の制御にはランダムな一時ポートが使われます。ファイアウォールを通して NFSv3 の制御ができるようにするには固定ポートを定義する必要があります。{{ic|/etc/sysconfig/nfs}} を編集して {{ic|STATDARGS}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysconfig/nfs|2=&lt;br /&gt;
STATDARGS=&amp;quot;-p 32765 -o 32766 -T 32803&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|rpc.mountd}} は {{ic|/etc/services}} を読み込んで通常の状態では同じ固定ポート 2048 に bind されます。しかしながら、明示的に定義する必要があるときは {{ic|/etc/sysconfig/nfs}} を編集して {{ic|RPCMOUNTDARGS}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysconfig/nfs|2=&lt;br /&gt;
RPCMOUNTDARGS=&amp;quot;-p 20048&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の変更を加えたら、複数のサービスを再起動してください。最初に設定オプションを {{ic|/run/sysconfig/nfs-utils}} (参照: {{ic|/usr/lib/systemd/scripts/nfs-utils_env.sh}}) に書き出して、二番目に新しいポートで {{ic|rpc.statd}} を再起動し、最後に新しいポートで {{ic|lockd}} (カーネルモジュール) をリロードします。次のサービスを[[再起動]]してください: {{ic|nfs-config}}, {{ic|rpcbind}}, {{ic|rpc-statd}}, {{ic|nfs-server}}。&lt;br /&gt;
&lt;br /&gt;
再起動後、サーバーで {{ic|rpcinfo -p}} を使って固定ポートが思い通りにいってるか確認してください。クライアントから {{ic|rpcinfo -p &amp;lt;server IP&amp;gt;}} を使えば本当に同じ固定ポートを使っているか明らかになります。&lt;br /&gt;
&lt;br /&gt;
===== NFSv2 との互換性 =====&lt;br /&gt;
&lt;br /&gt;
NFSv2 を使用するクライアント (例えば U-Boot) のサポートが必要な場合、{{ic|/etc/sysconfig/nfs}} に {{ic|1=RPCNFSDARGS=&amp;quot;-V 2&amp;quot;}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
===== ファイアウォール設定 =====&lt;br /&gt;
&lt;br /&gt;
ファイアウォールを通過してアクセスできるようにするには、デフォルト設定の場合 tcp と udp のポート 111, 2049, 20048 を開放する必要があります。{{ic|rpcinfo -p}} を使ってサーバーで使用しているポートを確認してください。この設定を [[iptables]] でするには、{{ic|/etc/iptables/iptables.rules}} を編集して以下の行を含めるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iptables/iptables.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 20048 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m udp --dport 111 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m udp --dport 20048 -j ACCEPT&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
NFSv3 と、上記の {{ic|rpc.statd}} や {{ic|lockd}} の固定ポートを使用している場合は、それらも設定に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iptables/iptables.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 32765 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 32803 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m udp --dport 32765 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m udp --dport 32803 -j ACCEPT&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
v4 以上だけを使う構成の場合、開く必要があるのは tcp ポート 2049 だけです。したがって、必要な行は一行だけになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iptables/iptables.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するために、{{ic|iptables}} サービスを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== クライアント ===&lt;br /&gt;
&lt;br /&gt;
NFSv4 で [[Kerberos]] を使用するばあい、{{ic|nfs-client.target}} も[[起動]]・[[有効化]]する必要があります。{{ic|rpc-gssd.service}} が起動します。しかしながら、glibc のバグ ({{Bug|50663}}) が原因で、現在 {{ic|rpc-gssd.service}} は起動に失敗します。サービスに &amp;quot;-f&amp;quot; (foreground) フラグを追加することで起動できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# systemctl edit rpc-gssd.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/sbin/rpc.gssd -f&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Linux からマウントする ====&lt;br /&gt;
&lt;br /&gt;
NFSv3 の場合、次のコマンドを使ってサーバーのエクスポートされたファイルシステムを表示:&lt;br /&gt;
 $ showmount -e servername&lt;br /&gt;
&lt;br /&gt;
NFSv4 の場合、root NFS ディレクトリをマウントして利用できるマウントを確認:&lt;br /&gt;
 # mount server:/ /mountpoint/on/client&lt;br /&gt;
&lt;br /&gt;
そしてサーバーの NFS エクスポートルートは省略してマウント: &lt;br /&gt;
 # mount -t nfs -o vers=4 servername:/music /mountpoint/on/client&lt;br /&gt;
&lt;br /&gt;
マウントが失敗する場合はサーバーのエクスポートルートを含めて見て下さい (Debian/RHEL/SLES では必須、ディストリビューションによっては {{ic|-t nfs}} ではなく {{ic|-t nfs4}}):&lt;br /&gt;
 # mount -t nfs -o vers=4 servername:/srv/nfs/music /mountpoint/on/client&lt;br /&gt;
&lt;br /&gt;
{{Note|サーバーの名前は (IP アドレスではなく) ホストネームを指定する必要があります。それ以外だとリモート共有がハングアップします。}}&lt;br /&gt;
&lt;br /&gt;
===== /etc/fstab を使う =====&lt;br /&gt;
&lt;br /&gt;
クライアントを立ち上げたときにいつでも NFS 共有が使えるように、常に稼働させているサーバーでは [[fstab]] を利用すると便利です。{{ic|/etc/fstab}} ファイルを編集して、設定に合わせて適切な行を追加してください。また、サーバーの NFS エクスポートルートは省略します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
servername:/music  /mountpoint/on/client  nfs   rsize=8192,wsize=8192,timeo=14,_netdev 0 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|マウントオプションについては {{man|5|nfs}} や {{man|8|mount}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
マウントオプションの説明は以下の通り:&lt;br /&gt;
&lt;br /&gt;
; rsize と wsize: {{ic|rsize}} はサーバーから読み込むときに使用されるバイト数の値です。{{ic|wsize}} はサーバーに書き込むときのバイト数の値です。どちらもデフォルトは 1024 ですが、8192 などと値を高く設定することでスループットを改善できます。この値は汎用ではありません。値を変更した後にテストを行うことを推奨します、[[#パフォーマンスチューニング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
; timeo: {{ic|timeo}} は RPC タイムアウトの後に再送信を行うまで待機する時間の値です (10分の1秒単位)。最初にタイムアウトした後、再試行する度にタイムアウトの値は2倍になっていき、最大60秒になるか正式なタイムアウトになります。遅いサーバーやトラフィックの多いネットワークに接続する場合、このタイムアウトの値を増やすことでパフォーマンスが改善されるかもしれません。&lt;br /&gt;
&lt;br /&gt;
; _netdev: {{ic|_netdev}} オプションは共有をマウントする前にネットワークが立ち上がるまで待機するようシステムに通知するオプションです。systemd は NFS がこのオプションを使うことを想定していますが、どんな形式のネットワークファイルシステムであれ、このオプションを使うことはグッドプラクティスと言えます。&lt;br /&gt;
&lt;br /&gt;
; minorversion: NFS バージョン 4.1 の Windows Server 2012 (Essentials) の共有をマウントするときは {{ic| &amp;lt;nowiki&amp;gt;minorversion=1&amp;lt;/nowiki&amp;gt;}} を使います。&lt;br /&gt;
&lt;br /&gt;
{{Note|6番目のフィールド ({{ic|fs_passno}}) をゼロ以外の値に設定すると予期しない挙動が発生することがあります。例えば systemd で自動マウントしたときにチェックの待機が行われなくなります。}}&lt;br /&gt;
&lt;br /&gt;
===== systemd で /etc/fstab を使う =====&lt;br /&gt;
&lt;br /&gt;
systemd の {{ic|automount}} サービスを使う方法もあります。接続が遮断されたり、復帰した時に素早くネットワークデバイスを再マウントするため、{{ic|_netdev}} よりも好ましいと思われます。さらに、autofs の問題も解決します、下の例を見て下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/fstab|2=&lt;br /&gt;
servername:/home  &#039;&#039;/mountpoint/on/client&#039;&#039;  nfs  noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,x-systemd.idle-timeout=1min 0 0   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
systemd が fstab の変更に気づくようにクライアントを再起動する必要があります。もしくは、systemd を[[Systemd#ユニットを使う|リロード]]して {{ic|&#039;&#039;mountpoint-on-client&#039;&#039;.automount}} を再起動して {{ic|/etc/fstab}} の設定を再読み込みしてください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 上記の {{ic|noauto}} はアクセスされるまで NFS 共有をマウントしません: いますぐに利用できるようにしたいときは {{ic|auto}} を使って下さい。&amp;lt;br&amp;gt;ネットワークが立ち上がってなかったり利用できないことが理由でマウントが失敗する問題が発生するときは、{{ic|NetworkManager-wait-online.service}} を [[systemd#ユニットを使う|有効]]にします: このサービスは有効化される前に {{ic|network.target}} の全てのリンクが利用可能になることを保証します。&lt;br /&gt;
* {{ic|users}} マウントオプションはユーザーによるマウントを許可しますが、{{ic|noexec}} などのオプションも含まれているので注意してください。&lt;br /&gt;
* {{ic|&amp;lt;nowiki&amp;gt;x-systemd.idle-timeout=1min&amp;lt;/nowiki&amp;gt;}} オプションは NFS 共有が1分間使われなかったときに自動的にアンマウントします。ネットワークから突然切断する可能性があるノートパソコンなどで有用です。&lt;br /&gt;
* NFS のせいでシャットダウンや再起動に時間がかかってしまうときは、{{ic|NetworkManager-wait-online.service}} を[[有効化]]して NFS ボリュームがアンマウントされる前に NetworkManager が終了しないようにしてください。それでもシャットダウンが長すぎる場合 {{ic|&amp;lt;nowiki&amp;gt;x-systemd.requires=network.target&amp;lt;/nowiki&amp;gt;}} マウントオプションを追加してみてください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|サーバーでも同じ方法で systemd で NFS 共有を自動マウントすると、データの量が多かった場合にフリーズする可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
===== autofs を使う =====&lt;br /&gt;
&lt;br /&gt;
複数のマシンを NFS で接続したい場合は [[autofs]] を使うのが便利です。サーバーだけでなくクライアントにもなることができます。他の簡単な方法よりもこの方法が推奨される理由は、サーバーの電源が落とされた時に、クライアントがNFS 共有を見つけられないことについてエラーを投げないからです。詳しくは [[autofs#NFS ネットワークマウント]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== Windows からマウントする ====&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;quot;Client for NFS&amp;quot; が含まれているのは Windows 7 の Ultimate と Enterprise エディションや Windows 8 の Enterprise エディションだけです。}}&lt;br /&gt;
&amp;quot;Client for NFS&amp;quot; サービスが有効になっていれば Windows から NFS 共有をマウントできます (デフォルトでは有効になっていません)。&lt;br /&gt;
サービスをインストールするにはコントロールパネルの &amp;quot;Programs and features&amp;quot; から &amp;quot;Turn Windows features on or off&amp;quot; をクリックしてください。&amp;quot;Services for NFS&amp;quot; と副サービス (&amp;quot;Administrative tools&amp;quot; と &amp;quot;Client for NFS&amp;quot;) を両方有効にします。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Services for Network File System&amp;quot; (検索ボックスで探して下さい) を開いて &#039;&#039;client &amp;gt; properties&#039;&#039; を右クリックすることでグローバルオプションを設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パフォーマンスに深刻な問題が発生することがありますが (ギガビット LAN でもフォルダを表示するのに30から60秒ほどかかったり、ファイルのコピー速度が 2 MB/s になったりします)、Microsoft はまだ解決方法を用意できていません [https://social.technet.microsoft.com/Forums/en-CA/w7itpronetworking/thread/40cc01e3-65e4-4bb6-855e-cef1364a60ac]。}}&lt;br /&gt;
&lt;br /&gt;
エクスプローラーを使って共有をマウントするには:&lt;br /&gt;
&lt;br /&gt;
{{ic|Computer}} &amp;gt; {{ic|Map network drive}} &amp;gt; {{ic|servername:/srv/nfs4/music}}&lt;br /&gt;
&lt;br /&gt;
==== OS X からマウントする ====&lt;br /&gt;
&lt;br /&gt;
{{Note|OS X はデフォルトでセキュアでない (&amp;gt;1024) ポートを使って共有をマウントしません。}}&lt;br /&gt;
{{ic|insecure}} フラグを使って共有をエクスポートし、Finder でマウントする:&lt;br /&gt;
&lt;br /&gt;
{{ic|Go}} &amp;gt; {{ic|Connect to Server}} &amp;gt; {{ic|nfs://servername/}}&lt;br /&gt;
&lt;br /&gt;
またはターミナルでセキュアなポートを使って共有をマウント:&lt;br /&gt;
 # mount -t nfs -o resvport,nolocks,locallocks servername:/srv/nfs4 /Volumes/servername&lt;br /&gt;
&lt;br /&gt;
{{ic|nolocks}} と {{ic|locallocks}} オプションを使う理由については [https://web.archive.org/web/20151212160906/https://blogs.oracle.com/jag/entry/nfs_on_snow_leopard NFS on Snow Leopard] を見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== パフォーマンスチューニング ===&lt;br /&gt;
&lt;br /&gt;
NFS の性能を完全に発揮するには、ネットワーク設定にあわせて {{ic|rsize}} や {{ic|wsize}} マウントオプションを調整する必要があります。&lt;br /&gt;
&lt;br /&gt;
最近の Linux カーネル (2.6.18 以上) ではメモリの容量によって NFS サーバーが使用できる I/O のサイズ (最大ブロックサイズ) が変わります。最大は 1M (1048576バイト) で、NFS クライアントがより大きな {{ic|rsize}} や {{ic|wsize}} を必要としている場合でもサーバーの最大ブロックサイズが使われます [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/5.8_Technical_Notes/Known_Issues-kernel.html]。&#039;&#039;nfsd&#039;&#039; を起動する前に {{ic|/proc/fs/nfsd/max_block_size}} に書き込むことでサーバーのデフォルト最大ブロックサイズを変更できます。例えば、以下のコマンドは昔のデフォルトの IO サイズであった 32k に設定します:&lt;br /&gt;
&lt;br /&gt;
 # echo 32767 &amp;gt; /proc/fs/nfsd/max_block_size&lt;br /&gt;
&lt;br /&gt;
変更を永続化するには [[Systemd#一時ファイル|systemd-tmpfile]] を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/tmpfiles.d/nfsd-block-size.conf|&lt;br /&gt;
w /proc/fs/nfsd/max_block_size - - - - 32768}}&lt;br /&gt;
&lt;br /&gt;
=== systemd-networkd で共有を自動マウント ===&lt;br /&gt;
&lt;br /&gt;
systemd-networkd を使っている場合、起動時に nfs がマウントされないことがあります。以下のようなエラーが表示されます:&lt;br /&gt;
 mount[311]: mount.nfs4: Network is unreachable&lt;br /&gt;
&lt;br /&gt;
解決方法は簡単です。{{ic|systemd-networkd-wait-online.service}} を[[有効化]]して、ネットワークが完全に設定されるまで待機するように systemd を設定してください。サービスが平行して起動しなくなるので起動時間は多少長くなります。&lt;br /&gt;
&lt;br /&gt;
=== 自動マウントの処理 ===&lt;br /&gt;
&lt;br /&gt;
ローカルのワイヤレスネットワークから nfs 共有を使う必要があるノートパソコンでこの設定は役に立ちます。nfs ホストが到達できない状態になったとき、nfs 共有はアンマウントされ、hard マウントオプションを使っている際にシステムフリーズが起こらなくなります。https://bbs.archlinux.org/viewtopic.php?pid=1260240#p1260240 を参照。&lt;br /&gt;
&lt;br /&gt;
NFS のマウントポイントが {{ic|/etc/fstab}} に正しく記述されていることを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
lithium:/mnt/data          /mnt/data         nfs noauto,noatime,rsize=32768,wsize=32768 0 0&lt;br /&gt;
lithium:/var/cache/pacman  /var/cache/pacman nfs noauto,noatime,rsize=32768,wsize=32768 0 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|noauto}} マウントオプションは起動時に自動的に共有をマウントしないように systemd に命じます。これを設定していないとネットワーク上に共有が存在するかどうかわからないのに systemd が共有をマウントしようとしてブート中にブランクスクリーンで止まってしまいます。&lt;br /&gt;
&lt;br /&gt;
root 以外のユーザー {{ic|user}} で NFS 共有をマウントするには fstab にエントリを追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;cron&#039;&#039; を使って NFS ホストが到達可能なチェックする {{ic|auto_share}} スクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/auto_share|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
function net_umount {&lt;br /&gt;
  umount -l -f $1 &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function net_mount {&lt;br /&gt;
  mountpoint -q $1 || mount $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
NET_MOUNTS=$(sed -e &#039;/^.*#/d&#039; -e &#039;/^.*:/!d&#039; -e &#039;s/\t/ /g&#039; /etc/fstab | tr -s &amp;quot; &amp;quot;)$&#039;\n&#039;b&lt;br /&gt;
&lt;br /&gt;
printf %s &amp;quot;$NET_MOUNTS&amp;quot; | while IFS= read -r line&lt;br /&gt;
do&lt;br /&gt;
  SERVER=$(echo $line | cut -f1 -d&amp;quot;:&amp;quot;)&lt;br /&gt;
  MOUNT_POINT=$(echo $line | cut -f2 -d&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  # Check if server already tested&lt;br /&gt;
  if [[ &amp;quot;${server_ok[@]}&amp;quot; =~ &amp;quot;${SERVER}&amp;quot; ]]; then&lt;br /&gt;
    # The server is up, make sure the share are mounted&lt;br /&gt;
    net_mount $MOUNT_POINT&lt;br /&gt;
  elif [[ &amp;quot;${server_notok[@]}&amp;quot; =~ &amp;quot;${SERVER}&amp;quot; ]]; then&lt;br /&gt;
    # The server could not be reached, unmount the share&lt;br /&gt;
    net_umount $MOUNT_POINT&lt;br /&gt;
  else&lt;br /&gt;
    # Check if the server is reachable&lt;br /&gt;
    ping -c 1 &amp;quot;${SERVER}&amp;quot; &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
    if [ $? -ne 0 ]; then&lt;br /&gt;
      server_notok[${#Unix[@]}]=$SERVER&lt;br /&gt;
      # The server could not be reached, unmount the share&lt;br /&gt;
      net_umount $MOUNT_POINT&lt;br /&gt;
    else&lt;br /&gt;
      server_ok[${#Unix[@]}]=$SERVER&lt;br /&gt;
      # The server is up, make sure the share are mounted&lt;br /&gt;
      net_mount $MOUNT_POINT&lt;br /&gt;
    fi&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行権限を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /usr/local/bin/auto_share&lt;br /&gt;
&lt;br /&gt;
[[cron]] エントリか [[systemd/タイマー|systemd タイマー]]を作成して、共有サーバーにアクセスできるか1分ごとに確認するようにしてください。&lt;br /&gt;
&lt;br /&gt;
==== Cron ====&lt;br /&gt;
&lt;br /&gt;
{{hc|# crontab -e|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
* * * * * /usr/local/bin/auto_share&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== systemd/タイマー ====&lt;br /&gt;
&lt;br /&gt;
以下のユニットを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|# /etc/systemd/system/auto_share.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Check the network mounts&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-* *:*:00&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|# /etc/systemd/system/auto_share.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Check the network mounts&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/local/bin/auto_share&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
作成したら {{ic|auto_share.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== systemd で起動時にマウント ====&lt;br /&gt;
&lt;br /&gt;
systemd のユニットファイルを使って起動時に NFS 共有をマウントすることも可能です。クライアントに NetworkManager がインストール・設定されている場合はユニットファイルは必要ありません。[[#NetworkManager dispatcher]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/auto_share.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=NFS automount&lt;br /&gt;
After=syslog.target network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
ExecStart=/usr/local/bin/auto_share&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|auto_share.service}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== NetworkManager dispatcher ====&lt;br /&gt;
&lt;br /&gt;
上で説明している方法に加えて、ネットワークの状態が変わった時にスクリプトを実行するよう NetworkManager を設定することもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|NetworkManager-dispatcher}} サービスを有効化・起動してください。&lt;br /&gt;
&lt;br /&gt;
ネットワーク状態の変化にあわせてネットワーク上の共有をマウントする一番簡単な方法は {{ic|auto_share}} スクリプトにシンボリックリンクを作成することです:&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/bin/auto_share /etc/NetworkManager/dispatcher.d/30-nfs.sh&lt;br /&gt;
&lt;br /&gt;
ただし、特定の場合では、ネットワーク接続が無効になった後にアンマウントが実行され、KDE Plasma アプレットがフリーズしたりすることがあります。&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトを使うことでネットワーク接続が切れる前に NFS 共有を安全にアンマウントすることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/30-nfs.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Find the connection UUID with &amp;quot;nmcli con show&amp;quot; in terminal.&lt;br /&gt;
# All NetworkManager connection types are supported: wireless, VPN, wired...&lt;br /&gt;
WANTED_CON_UUID=&amp;quot;CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$CONNECTION_UUID&amp;quot; == &amp;quot;$WANTED_CON_UUID&amp;quot; ]]; then&lt;br /&gt;
&lt;br /&gt;
    # Script parameter $1: NetworkManager connection name, not used&lt;br /&gt;
    # Script parameter $2: dispatched event&lt;br /&gt;
    &lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        &amp;quot;up&amp;quot;)&lt;br /&gt;
            mount -a -t nfs4,nfs&lt;br /&gt;
            ;;&lt;br /&gt;
        &amp;quot;pre-down&amp;quot;);&amp;amp;&lt;br /&gt;
        &amp;quot;vpn-pre-down&amp;quot;)&lt;br /&gt;
            umount -l -a -t nfs4,nfs &amp;gt;/dev/null&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
 # chmod +x /etc/NetworkManager/dispatcher.d/30-nfs.sh&lt;br /&gt;
{{ic|/etc/NetworkManager/dispatcher.d/pre-down}} にシンボリックリンクを作成して {{ic|pre-down}} イベントをキャッチ:&lt;br /&gt;
 # ln -s /etc/NetworkManager/dispatcher.d/30-nfs.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-nfs.sh&lt;br /&gt;
&lt;br /&gt;
上記のスクリプトは別の接続で別の共有をマウントするように修正することができます。&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager#dispatcher を使って CIFS 共有のマウントを処理]]を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
[[NFS/トラブルシューティング]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm NFS Performance Management]&lt;br /&gt;
* [http://blogs.msdn.com/sfu/archive/2008/04/14/all-well-almost-about-client-for-nfs-configuration-and-performance.aspx Microsoft Services for Unix NFS Client info]&lt;br /&gt;
* [https://web.archive.org/web/20151212160906/https://blogs.oracle.com/jag/entry/nfs_on_snow_leopard NFS on Snow Leopard]&lt;/div&gt;</summary>
		<author><name>Air</name></author>
	</entry>
</feed>