もともとSunのMicrosystemsによって開発されたNFSは、NetworkFileSystemの頭字語です。これは、クライアントPCのユーザーが、PCにローカルにあるファイルにアクセスするのとほぼ同じ方法で、リモートサーバーから共有ファイルにアクセスできるようにする分散プロトコルです。 NFSプロトコルは、ローカルエリアネットワーク(LAN)間でファイルを共有する便利な方法を提供します。このガイドでは、Ubuntu 20.04 LTS(Focal Fossa)へのNFSサーバーのインストールについて説明します。次に、クライアントシステムからサーバー上のファイルにアクセスする方法を示します。
ラボのセットアップ
NFS Server IP: 192.168.2.103 Ubuntu 20.04 Client System IP: 192.168.2.105 Ubuntu 20.04
ステップ1)NFSカーネルサーバーパッケージをインストールします
開始するには、UbuntuにNFSカーネルサーバーパッケージをインストールします。これにより、実際には、NFSサーバーになります。ただし、最初に、図のようにパッケージリストを更新しましょう。
$ sudo apt update
その後、次のコマンドを実行して、NFSカーネルサーバーパッケージをインストールします。
$ sudo apt install nfs-kernel-server
これにより、keyutils、nfs-common、rpcbind、およびNFSサーバーが期待どおりに機能するために必要なその他の依存関係などの追加パッケージがインストールされます。
図のようにnfs-serverサービスが実行されているかどうかを確認できます
$ sudo systemctl status nfs-server
ステップ2)NFSディレクトリ共有を作成する
次のステップは、NFSディレクトリ共有を作成することです。これは、ローカルエリアネットワーク全体で共有されるファイルを配置するディレクトリです。以下に示すように、/mnt/ディレクトリに作成します。ここでは、NFS共有ディレクトリは/my_sharesと呼ばれています。ディレクトリには自由に名前を付けてください。
$ sudo mkdir /mnt/my_shares
すべてのクライアントがすべてのファイルにアクセスできるようにするため、次のディレクトリの所有権と権限を割り当てます。
$ sudo chown nobody:nogroup /mnt/my_shares $ sudo chmod -R 777 /mnt/my_shares
これらの権限は再帰的であり、作成するすべてのファイルとサブディレクトリに適用されます。
ステップ3)クライアントにNFSサーバーアクセスを許可する
NFSディレクトリ共有を作成し、必要なアクセス許可と所有権を割り当てたら、クライアントシステムにNFSサーバーへのアクセスを許可する必要があります。これは、nfs-kernel-serverパッケージのインストール中に作成された/ etc/exportsファイルを編集することで実現します。
したがって、/ etc/exportsファイルを開きます。
$ sudo vi /etc/exports
単一のクライアントへのアクセスを許可するには、以下の行を追加し、client-IPパラメータをクライアントの実際のIPに置き換えます。
/mnt/my_shares client-IP(rw,sync,no_subtree_check)
リストにクライアントを追加するには、次のように行を追加するだけです。
/mnt/my_shares client-IP-1(rw,sync,no_subtree_check) /mnt/my_shares client-IP-2(rw,sync,no_subtree_check) /mnt/my_shares client-IP-3(rw,sync,no_subtree_check)
さらに、サブネット全体を表示して指定できます。
/mnt/my_shares 192.168.0.0/24 (rw,sync,no_subtree_check)
これにより、192.168.0.0サブネット内のすべてのクライアントがサーバーにアクセスできるようになります。この例では、示されているように、すべてのクライアントにNFSサーバーへのアクセスを許可します
/mnt/my_shares 192.168.2.0/24(rw,sync,no_subtree_check)
権限とその意味を簡単に見ていきましょう。
- rw(読み取りと書き込み)
- 同期(変更を適用する前にディスクに書き込みます)
- no_subtree_check(サブツリーのチェックは避けてください)
ステップ4)共有ディレクトリをエクスポートします
ディレクトリをエクスポートして使用可能にするには、次のコマンドを呼び出します。
$ sudo exportfs -a
ステップ5)NFSサーバーのファイアウォールルールを構成する
UFWファイアウォールの背後にいる場合は、示されている構文を使用してファイアウォールを通過するNFSトラフィックを許可する必要があります。
$ sudo ufw allow from [client-IP or client-Subnet-IP] to any port nfs
この場合、コマンドは次のように表示されます。
$ sudo ufw allow from 192.168.2.0/24 to any port nfs
これで、NFSサーバーの構成は順調に進みました。次のステップは、クライアントを構成し、構成が機能するかどうかをテストすることです。それでは、先に進んでクライアントを構成しましょう。
ステップ5)クライアントシステムを構成する
次に、クライアントシステムにログインし、図のようにパッケージインデックスを更新します。
$ sudo apt update
次に、図のようにnfs-commonパッケージをインストールします。
$ sudo apt install nfs-common
次に、サーバーからNFS共有をマウントする/mntフォルダーにディレクトリを作成します。
$ sudo mkdir -p /mnt/client_shared_folder
最後に、次のようにリモートNFS共有ディレクトリをクライアントディレクトリにマウントします。
$ sudo mount 192.168.2.103:/mnt/my_shares /mnt/client_shared_folder
ステップ6)NFS共有セットアップのテスト
構成が機能しているかどうかをテストするために、次のようにNFSディレクトリにテストファイルを作成します
$ cd /mnt/my_shares $ touch nfs_share.txt
それでは、クライアントに戻って、マウントされたディレクトリにファイルが表示されるかどうかを確認しましょう。
$ ls /mnt/client_shared_folder/
そして出来上がり!以下のスニペットに示すように、ファイルがあります。これは、セットアップが成功したことの確認です。
今日は以上です。このガイドがお役に立てば幸いです。また、ネットワーク上でNFSを使用してファイルを快適に共有できることを願っています。