NFSまたはネットワークファイルシステムは、もともとSunMicrosystemsによってのみ開発された分散ファイルシステムプロトコルです。 NFSを使用すると、システムがネットワークを介して他のユーザーとディレクトリやファイルを共有できるようにすることができます。 NFSファイルを共有することで、ユーザーやプログラムでさえ、まるでローカルマシン上にあるかのようにリモートシステム上の情報にアクセスできます。
NFSは、サーバーがクライアントの認証、承認、管理、および特定のファイルシステム内で共有されるすべてのデータの管理を担当するクライアントサーバー環境で動作します。承認後、任意の数のクライアントが、内部ストレージにあるかのように共有データにアクセスできます。 UbuntuシステムでのNFSサーバーのセットアップは非常に簡単です。サーバーとクライアントマシンの両方で必要なインストールと構成を行うだけで、準備が整います。
この記事では、あるUbuntuシステム間でファイルを共有できるようにするNFSサーバーとクライアントをセットアップする方法を段階的に説明します。
この記事で説明されているコマンドと手順をUbuntu18.04LTSシステムで実行し、最近、新しいUbuntu20.04でテストしました。 Ubuntuのコマンドラインであるターミナルを使用してすべての操作を実行するため、システムダッシュまたはキーの組み合わせCtrl + Alt+Tを使用して開くことができます。
ホストサーバーのセットアップ
ディレクトリを共有するようにホストシステムを設定するには、NFSカーネルサーバーをインストールしてから、クライアントシステムがアクセスするディレクトリを作成してエクスポートする必要があります。ホスト側をスムーズに設定するには、次の手順に従ってください。
ステップ1:NFSカーネルサーバーをインストールする
NFSカーネルサーバーをインストールする前に、sudoとして次のaptコマンドを使用して、システムのリポジトリインデックスをインターネットのリポジトリインデックスに更新する必要があります。
$ sudo apt-get update
上記のコマンドを使用すると、Ubuntuリポジトリから利用可能な最新バージョンのソフトウェアをインストールできます。
次に、NFSカーネルサーバーをシステムにインストールするには、次のコマンドを実行します。
$ sudo apt install nfs-kernel-server
インストールを続行するかどうかを確認するためのY/nオプションが表示されます。 Yを入力し、Enterキーを押して続行してください。その後、ソフトウェアがシステムに正常にインストールされます。
ステップ2:エクスポートディレクトリを作成する
クライアントシステムと共有するディレクトリは、エクスポートディレクトリと呼ばれます。選択に応じて名前を付けることができます。ここでは、システムのmnt(mount)ディレクトリに「sharedfolder」という名前のエクスポートディレクトリを作成しています。
rootとして次のコマンドを使用し、必要に応じてマウントフォルダー名を指定して、次のコマンドを使用します。
$ sudo mkdir -p /mnt/sharedfolder
すべてのクライアントにディレクトリへのアクセスを許可するため、次のコマンドを使用して、エクスポートフォルダの制限付き権限を削除します。
$ sudo chown nobody:nogroup /mnt/sharedfolder
$ sudo chmod 777 /mnt/sharedfolder
これで、クライアントシステム上のすべてのグループのすべてのユーザーが、「共有フォルダ」にアクセスできるようになります。
クライアントがアクセスできるように、エクスポートフォルダに必要な数のサブフォルダを作成できます。
ステップ3:NFSエクスポートファイルを介してクライアントにサーバーアクセスを割り当てます
エクスポートフォルダを作成したら、ホストサーバーマシンにアクセスするためのアクセス許可をクライアントに提供する必要があります。この権限は、システムの/etcフォルダにあるエクスポートファイルを介して定義されます。 Nanoエディターでこのファイルを開くには、次のコマンドを使用してください。
$ sudo nano /etc/exports
このファイルを編集するにはrootアクセスが必要です。したがって、コマンドでsudoを使用する必要があります。個人的に好きなテキストエディタでファイルを開くこともできます。
ファイルを開いたら、次のアクセスを許可できます。
- ファイルに次の行を追加することによる単一のクライアント:
/mnt/sharedfolder clientIP(rw,sync,no_subtree_check)
- ファイルに次の行を追加して、複数のクライアントを作成します。
/mnt/sharedfolder client1IP(rw,sync,no_subtree_check)
/mnt/sharedfolder client2IP(rw,sync,no_subtree_check)
- クライアントが属するサブネット全体を指定することによる複数のクライアント:
/mnt/sharedfolder subnetIP/24(rw,sync,no_subtree_check)
この例では、エクスポートフォルダー(sharedfolder)へのアクセスを許可するすべてのクライアントのサブネット全体を指定しています:
必要な行をエクスポートファイルに追加し、Ctrl + Xを押してYを入力し、Enterキーを押して保存します。
このファイルで定義されているパーミッション「rw、sync、no_subtree_check」パーミッションは、クライアントが以下を実行できることを意味します。
- rw :読み取りおよび書き込み操作
- 同期 :ディスクを適用する前に、ディスクに変更を書き込んでください
- no_subtree_check :サブツリーチェックを防止する
ステップ4:共有ディレクトリをエクスポートする
ホストシステムで上記のすべての構成を行った後、次のコマンドを使用して共有ディレクトリをsudoとしてエクスポートします。
$ sudo exportfs -a
最後に、すべての構成を有効にするには、次のようにNFSカーネルサーバーを再起動します。
$sudo systemctl restart nfs-kernel-server
ステップ5:クライアントのファイアウォールを開く
重要な手順は、サーバーのファイアウォールがクライアントに対して開かれていることを確認して、クライアントが共有コンテンツにアクセスできるようにすることです。次のコマンドは、NFSを介してクライアントにアクセスできるようにファイアウォールを構成します。
$ sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
この例では、次のコマンドを使用して、クライアントマシンのサブネット全体へのアクセスを許可しています。
$ sudo ufw allow from 192.168.100/24 to any port nfs
これで、次のコマンドを使用してUbuntuファイアウォールのステータスを確認すると、クライアントのIPのアクションステータスを「許可」として表示できるようになります。
$ sudo ufw status
これで、ホストサーバーは、NFSカーネルサーバーを介して共有フォルダーを指定されたクライアントにエクスポートする準備が整いました。
クライアントマシンの構成
今こそ、ホストからの共有フォルダーをクライアントにマウントしてスムーズにアクセスできるように、クライアントマシンにいくつかの簡単な構成を行うときです。
ステップ1:NFSCommonをインストールする
NFS Commonアプリケーションをインストールする前に、sudoとして次のaptコマンドを使用して、システムのリポジトリインデックスをインターネットのリポジトリインデックスに更新する必要があります。
$ sudo apt-get update
上記のコマンドを使用すると、Ubuntuリポジトリから利用可能な最新バージョンのソフトウェアをインストールできます。
次に、NFS Commonクライアントをシステムにインストールするために、次のコマンドを実行します。
$ sudo apt-get install nfs-common
インストールを続行するかどうかを確認するためのY/nオプションが表示されます。 Yを入力し、Enterキーを押して続行してください。その後、ソフトウェアがシステムに正常にインストールされます。
ステップ2:NFSホストの共有フォルダーのマウントポイントを作成する
クライアントのシステムには、エクスポートフォルダ内のホストサーバーによって共有されているすべてのコンテンツにアクセスできるディレクトリが必要です。このフォルダは、システムのどこにでも作成できます。クライアントのマシンのmntディレクトリにマウントフォルダを作成しています:
$ sudo mkdir -p /mnt/sharedfolder_client
ステップ3:クライアントに共有ディレクトリをマウントする
上記の手順で作成したフォルダは、ホストからこの新しく作成したフォルダに共有ディレクトリをマウントしない限り、システム上の他のフォルダと同じです。
共有フォルダをホストからクライアントのマウントフォルダにマウントするには、次のコマンドを使用します。
$ sudo mount serverIP:/exportFolder_server /mnt/mountfolder_client
この例では、次のコマンドを実行して、「sharedfolder」をサーバーからクライアントマシンのマウントフォルダー「sharedfolder_client」にエクスポートします。
$ sudo mount 192.168.100.5:/mnt/sharedfolder /mnt/sharedfolder_client
ステップ4:接続をテストする
NFSホストサーバーのエクスポートフォルダにファイルを作成または保存してください。次に、クライアントマシンでマウントフォルダを開きます。このフォルダで共有され、アクセス可能な同じファイルを表示できるはずです。
結論
UbuntuシステムでNFSクライアントサーバー環境をセットアップするのは簡単な作業です。この記事では、サーバーとクライアントの両方に必要なNFSパッケージをインストールする方法を学びました。また、ファイアウォールやアクセス許可に関連する問題が発生することなく、フォルダーを共有してスムーズにアクセスできるように、NFSサーバーとクライアントマシンを構成する方法についても学びました。これで、NFSプロトコルを使用して1つのUbuntuシステムから別のシステムにコンテンツを簡単に共有できます。