GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04にNFSクライアントとサーバーをインストールする方法

ネットワークファイルシステムまたは短いNFSは、サーバーにリモートディレクトリをマウントできる分散ファイルシステムプロトコルです。 NFSを使用すると、別のサーバーまたはクライアントからファイルやフォルダーにアクセスできます。ネットワークを介して複数のクライアントまたはリモートシステムからそのサーバーに書き込むことができます。このテクノロジーにより、複数のシステム間でリソースを共有できる柔軟性が得られます。

このチュートリアルでは、NFSサーバーをセットアップする方法と、Ubuntu20.04を使用してクライアントにNFS共有をマウントする方法を学習します。

前提条件
  • 2つのUbuntu20.04システム。各サーバーには、sudo権限とUFWファイアウォールが設定されたroot以外のユーザーが必要です。
  • プライベートネットワークを介してサーバーとクライアントの両方をセットアップできます。このチュートリアルでは、host_ipを使用して host_ipを示します。 アドレスとclient_ip クライアントのIPアドレスを参照します。
ステップ1-サーバーとクライアントにNFSをインストールする ホスト

nfs-kernel-serverをインストールする必要があります ディレクトリを共有するためのホスト上のパッケージ。

$ sudo apt update
$ sudo apt install nfs-kernel-server
クライアント

クライアントの場合、nfs-commonをインストールします クライアントがホストディレクトリをマウントできるようにするが、ディレクトリ自体をホストできないパッケージ。

$ sudo apt update
$ sudo apt install nfs-common
ステップ2-ホスト上に共有ディレクトリを作成する

ホスト上のディレクトリへのアクセスをクライアントに許可する方法は2つあります。デフォルトでは、NFSサーバーはsudo特権を必要とする操作を許可しません。つまり、クライアントのスーパーユーザーは、rootとしてファイルを書き込んだり、所有権を再割り当てしたり、昇格された特権を必要とするタスクを実行したりすることはできません。

ただし、場合によっては、クライアントはホスト上で特定の操作を実行する必要があります。この操作には昇格された特権が必要ですが、スーパーユーザーアクセスは必要ありません。

最初の方法

これは、ディレクトリを共有するデフォルトの方法です。クライアントのrootユーザーが昇格された特権を使用してホストと対話することを困難にします。

まず、共有ディレクトリを作成します。

$ sudo mkdir /var/nfs/general -p

クライアントでルート操作を実行すると、NFSはそれらをnobody:nogroupに変換します。 ホストマシンのクレデンシャル。したがって、共有ディレクトリに適切な所有権を与える必要があります。

$ sudo chown nobody:nogroup /var/nfs/general
2番目の方法

ここでは、ホストのホームディレクトリをクライアントと共有します。これにより、クライアントのルートユーザーがホストに適切にアクセスできるようになります。

ホームディレクトリはホストサーバー上にすでに存在するため、作成する必要はありません。ホストマシン上のユーザーに複数の問題が発生するため、アクセス許可を変更する必要もありません。

ステップ3-ホストでNFSを構成する

共有を設定するためにNFSを構成する時が来ました。

ファイル/etc/exportsを開きます ホストサーバー上。

$ sudo nano /etc/exports

共有するディレクトリごとに、下部に次の行を1つずつ追加します。

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

これらすべてのオプションとその意味を見ていきましょう。

  • rw :これにより、クライアントはホストディレクトリへの読み取りおよび書き込みアクセスを許可されます。
  • 同期 :このオプションは、NFSに応答する前に変更を書き込むように強制します。これは、NFSが最初にホストディレクトリへの書き込みを終了してから、クライアントに応答することを意味します。これにより、ホストサーバーの実際の状態が確実に反映されますが、ファイル操作の速度が低下する可能性があります。
  • no_subtree_check :このオプションは、サブツリーチェックを無効にします。サブツリーチェックは、NFS要求ごとに、アクセスされたファイルが存在し、エクスポートされたツリーにあることをサーバーがチェックする必要がある操作です。この操作は、クライアントがアクセスしているファイルの名前が変更されるときに問題を引き起こします。したがって、ほとんどの場合、無効のままにしておくことをお勧めします。軽度のセキュリティへの影響がありますが、信頼性を向上させることができます。
  • no_root_squash :デフォルトでは、NFSは、クライアントによってrootとして実行されるすべての操作を、サーバー上の非特権ユーザーに変換します。これは、セキュリティを向上させることを目的として行われます。このオプションは、特定の共有に対してその動作を無効にします。

終了したら、 Ctrl + Xを押してファイルを閉じます Yと入力します プロンプトが表示されたら。

NFSサーバーを再起動して、変更を適用します。

$ sudo systemctl restart nfs-kernel-server
ステップ4-ホストファイアウォールを構成する

NFSのベストプラクティスは、どこからでもアクセスできるようにするのではなく、クライアントのIPアドレスごとに個別に有効にすることです。

NFSはポート2049を使用します。次のコマンドでNFSへのアクセスを有効にします。

$ sudo ufw allow from client_ip to any port nfs

ステータスを確認して確認してください。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
2049                       ALLOW       167.100.34.78        
OpenSSH (v6)               ALLOW       Anywhere (v6)
ステップ5-クライアントにマウントポイントを作成する

ホストが構成されたので、次はクライアントをセットアップします。

クライアントにマウントするための2つのディレクトリを作成します。

$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home

すべてをホスト側に設定したので、ホストのIPアドレスを使用して共有をマウントできます。

$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home

次のコマンドを使用して、正しくマウントされているかどうかを確認できます。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

リストの下部に、マウントされた両方の共有が表示されます。どちらも同じファイルシステムからマウントされているため、マウントされたディレクトリの実際の使用量ではなく、ディスク全体の使用量が表示されます。

各マウントで実際に使用されているスペースを確認するには、次のコマンドを使用します。

$ du -sh /nfs/general
36K     /nfs/general
ステップ6-NFS共有をテストする

/var/nfs/generalにテストファイルを作成します 共有します。

$ sudo touch /nfs/general/general.test

所有権を確認してください。

$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

これはデフォルトのNFSオプションを使用してマウントされ、クライアントマシンからrootを使用してファイルを作成したため、ホストの所有権はnobody:nogroupに譲渡されました。 。ここでは、クライアントユーザーはホストのマシンで管理ジョブを実行できません。

/ nfs/home`共有にテストファイルを作成します。

$ sudo touch /nfs/home/home.test

所有権を確認してください。

$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

ここでは、クライアントマシンからrootを使用してテストファイルを作成したため、所有権はホストマシンで保持されました。これは、no_root_squashを使用したためです。 クライアントマシンのrootユーザーをホストマシンのrootユーザーとしても許可するフラグ。

ステップ7-起動中にNFS共有をマウントする

クライアントマシンを起動すると、これらのマウントは保持されません。それらを永続的にするには、/etc/fstabを編集する必要があります ファイル。

/etc/fstabを開きます 編集用のファイル。

$ sudo nano /etc/fstab

ファイルの下部に次の行を貼り付けます。各行は、起動時にマウントする各ディレクトリに対応しています。

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

これらのオプションについては、nfsのマニュアルページを確認してください。 。

$ man nfs

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

サーバーを再起動してマウントを確認します。

$ sudo reboot

クライアントサーバーにログインし、マウントが存在することを確認します。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home
ステップ8-NFS共有のマウントを解除する

NFSマウントが不要になったら、次のコマンドを使用してマウントを解除できます。

$ sudo umount /nfs/home
$ sudo umount /nfs/general

よくある間違いは、unmountを使用することです umountの代わりに これが実際のコマンドです。

それらが正しくマウント解除されていることを確認してください。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000

また、/etc/fstabからエントリを削除する必要があります 起動時に再マウントされないようにファイルします。 #を配置して、エントリのコメントを解除することもできます。 マウントを再利用する必要がある場合に備えて、前の文字。

結論

これで、ホストマシンでNFSマウントを作成する方法と、さまざまなクライアントマシンからそれらにアクセスする方法を学習したチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄にご記入ください。


Ubuntu
  1. Ubuntu18.04LTSにNTPサーバーとクライアントをインストールする方法

  2. Ubuntu20.04にUrBackupサーバーとクライアントをインストールする-その方法は?

  3. Ubuntu20.04でNFSサーバーとクライアントをセットアップする方法

  1. Ubuntu 18.04にChefサーバー、ワークステーション、Chefクライアントをインストールする方法

  2. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  3. Ubuntuにvncサーバーとクライアントをインストールします

  1. Ubuntu20.04にVNCをインストールして構成する方法

  2. Ubuntu18.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にNFSサーバーをインストールして構成する方法