Finder の失敗だけで NFS サーバーを疑わない
Mac から NFSv4 共有を使おうとして、Finder ではうまくマウントできないのに、Linux クライアントからは問題なく使えることがあります。この場合、すぐに NFS サーバー側の設定ミスと決めつけると、切り分けを誤ります。
NFS は、SMB のようにデスクトップ利用を強く意識したファイル共有とは少し性格が違います。macOS は UNIX 系 OS なので NFS クライアントとして使えますが、Finder からの接続、mount / mount_nfs による接続、Linux クライアントからの接続は同じ確認ではありません。
重要なのは、Finder で開けるかどうかではなく、どのレイヤーで失敗しているのかを分けることです。名前解決なのか、NFS バージョンなのか、export の見せ方なのか、権限なのか、macOS 側の GUI の都合なのかを順番に切り分けます。
書籍
ストーリーで覚える Linux CLI 入門
Linux / UNIX 系のコマンド操作を基礎から確認したい場合の参考書籍です。NFS の切り分けでは、GUI だけでなくコマンドラインで状態を見る力が役に立ちます。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
まず状況を分ける
よくある状況は、次のようなものです。
| 確認対象 | 見ること |
|---|---|
| Linux クライアント | NFS 共有を問題なくマウントできるか |
| NFS サーバー | NFSv3 / NFSv4 のどちらを提供しているか |
| macOS の Finder | GUI から接続できるか |
| macOS のコマンドライン | mount_nfs で明示的にマウントできるか |
| 権限 | UID / GID、root squash、読み書き権限が合っているか |
Linux クライアントで正常にマウントできるなら、サーバーが完全に壊れている可能性は下がります。ただし、それで macOS からも必ず同じように使えるとは限りません。macOS 側の NFS クライアント、Finder、マウントオプション、名前解決、権限の扱いを分けて確認する必要があります。
NFSv3 と NFSv4 を混同しない
NFSv3 と NFSv4 では、マウント時の見え方や必要な関連サービスが異なります。NFSv3 では mountd や rpcbind など周辺 RPC サービスとの関係を意識する場面が多く、NFSv4 では基本的に TCP 2049 番を中心に考えます。
一方で、macOS 側の mount_nfs は、明示しなければ利用する NFS バージョンや接続方式が期待とずれることがあります。Apple 系の mount_nfs man page でも、vers / nfsvers オプションで NFS プロトコルバージョンを指定できることが説明されています。
そのため、NFSv4 を前提に切り分けるなら、Finder の結果だけを見るのではなく、コマンドラインから vers=4 を明示して確認した方が分かりやすくなります。
サーバー側で確認すること
まず、NFS サーバー側で export とサービス状態を確認します。ここでは Linux サーバーを例にしています。
cat /etc/exports
sudo exportfs -v
sudo systemctl status nfs-server --no-pager
sudo ss -ltnup | grep ':2049'/etc/exports で公開しているパス、許可しているクライアント、rw / ro、root_squash、fsid などを確認します。NFSv4 では、サーバー側でどのディレクトリを NFSv4 のルートとして見せているかも重要です。
Linux クライアントから見えている場合でも、macOS から接続するホスト名や IP アドレスが export の許可条件に含まれていなければ失敗します。名前解決で別の IP アドレスに解決されている場合もあるため、サーバー名だけで判断しない方が安全です。
macOS から mount_nfs で確認する
Finder でうまくいかない場合は、まず mount_nfs で明示的にマウントします。マウントポイントを作り、NFS バージョンを指定し、マウント後に mount と ls で確認します。
sudo mkdir -p /Volumes/nfs-share
sudo mount_nfs -o vers=4,tcp nfs-server:/srv/nfs/share /Volumes/nfs-share
mount | grep nfs
ls -la /Volumes/nfs-shareここで成功するなら、NFS サーバーと macOS の NFS クライアント自体は通信できています。その場合、問題は Finder からの接続方法、URL の書き方、認証や権限、常用時のマウント方法に寄っている可能性があります。
逆に、mount_nfs でも失敗するなら、サーバー側 export、NFS バージョン、名前解決、ファイアウォール、UID / GID、クライアント許可条件を見直します。
Finder と NFS を分けて考える
Finder はファイルを扱う GUI ですが、NFS の診断ツールではありません。Finder で接続できないことは利用上の問題ではありますが、それだけで NFS サーバーが間違っているとは言えません。
特に Mac を日常利用のファイル共有クライアントとして使うなら、SMB の方が自然な場合があります。NFS は Linux / UNIX 間のサーバー用途、ビルド環境、検証環境、固定的なマウントには向いていますが、Finder からの体験まで含めると SMB の方が扱いやすいことがあります。
つまり、Mac で共有ストレージを使う時は、常用のユーザー向け共有なのか、UNIX 的なマウントなのかを分けた方がよいです。前者なら SMB、後者なら NFS というように、用途で選びます。
切り分けの順序
macOS から NFSv4 に接続できない時は、次の順序で見ると整理しやすくなります。
| 順序 | 確認内容 |
|---|---|
| 1 | Linux クライアントから同じ export をマウントできるか |
| 2 | NFS サーバーで export、NFS バージョン、TCP 2049 番を確認する |
| 3 | macOS から名前解決と疎通を確認する |
| 4 | mount_nfs -o vers=4,tcp で明示的にマウントする |
| 5 | Finder から使う必要があるのか、SMB に寄せるべきかを判断する |
この順序にすると、Finder の見え方に引っ張られず、NFS サーバー、ネットワーク、macOS クライアント、GUI 利用の問題を分けて扱えます。
まとめ
Mac で NFSv4 共有を Finder からマウントできない場合、まず Finder の失敗と NFS そのものの失敗を分ける必要があります。Linux クライアントでの確認、サーバー側 export の確認、macOS の mount_nfs による確認を順番に行うと、どこで問題が起きているかが見えやすくなります。
NFS は便利ですが、Mac の日常的なファイル共有として常に最適とは限りません。Finder で自然に扱いたい共有なら SMB、サーバー用途や UNIX 的な固定マウントなら NFS、というように用途で分けて考える方が運用しやすくなります。
参考情報
関連する記事
あわせて読みたい:

