ネットワークファイルシステム(NFS)は、ユーザーがサーバーにリモートディレクトリをマウントできるようにする一般的な分散ファイルシステムプロトコルです。このシステムでは、別の場所にあるストレージスペースを活用し、複数のサーバーから同じスペースに簡単に書き込むことができます。したがって、ユーザーが頻繁にアクセスする必要のあるディレクトリに対してはかなりうまく機能します。このチュートリアルでは、Ubuntu18.04サーバーにNFS共有をマウントするプロセスについて説明します。 シンプルでわかりやすい手順で。
このチュートリアルの目的のために、2つのUbuntu18.04サーバー間でディレクトリ共有構成があります。これは任意のサイズにすることができます。ただし、これらのサーバーごとに、 sudoで設定されたアカウントが必要になります。 特権。ディレクトリを共有するサーバーは、ホストと呼ばれます。 、これらのディレクトリをマウントするサーバーはクライアントと呼ばれます。 3.統一性と単純化のために、チュートリアル全体でホストとサーバーの値を参照するために、次のIPアドレスを使用する必要があります。
- ホスト:192.168.0.100
- クライアント:192.168.0.101
ユーザーは、前述の値を独自のホスト値とクライアント値に置き換える必要があります。これで、Ubuntu18.04LTSにNFS共有をマウントする手順を学ぶ準備が整いました。
最初に、ホストサーバーとクライアントサーバーの両方に必要なコンポーネントをインストールすることが不可欠です。明示的にホストサーバーに、 nfs-kernel-serverをインストールする必要があります パッケージ。ディレクトリを共有できるようになります。これは、このセッションでaptを使用して実行する最初のステップであるため、インストール前にローカルパッケージインデックスを更新することから始める必要があります(以下を参照)。
sudo apt-get update
sudo apt-get install nfs-kernel-server
これらのパッケージをインストールすると、クライアントコンピューターに切り替えることができます。クライアントコンピューターでは、 nfs-commonというパッケージをインストールする必要があります。 、サーバーコンポーネントを含める必要なしにNFS機能を提供します。ここでも、インストール前にローカルパッケージインデックスを更新して、情報が更新されていることを確認する必要があります(以下を参照)。
sudo apt-get update
sudo apt-get install nfs-common
これでこのステップは終了です。次のステップに進むことができます。
このチュートリアルの目的のために、2つの異なるディレクトリを共有することを含む実験があります。共有する最初のディレクトリは、たまたま/ホームディレクトリです。 ユーザーデータが含まれています。 2つ目は、適切な設定とプロセスを示すために、特にNFS用に作成される汎用ディレクトリです。同じものが/var / nfsにあります /ホームディレクトリとして すでに存在しているので、先に進んで / var / nfsdirectoryを作成することから始めましょう。 、次のコマンドを使用します:
sudo mkdir /var/nfs
これで、リモートホストと共有するために明示的に指定された新しいディレクトリができました。ただし、このディレクトリの所有権はまだ理想的ではありません。 nobodyという名前のシステム上のユーザーにユーザー所有権を割り当てる必要があります 。また、グループの所有権を nogroupという名前のシステム上のグループに割り当てる必要があります。 。これは、次のコマンドを入力することで実行できます。
sudo chown nobody:nogroup /var/nfs
ここで重要なのは、特に共有に使用されるディレクトリのみの所有権を慎重に変更する必要があるということです。たとえば、ホームディレクトリ(/ homeディレクトリ)の所有権は変更しないでください。ホストサーバーに存在するユーザーに多くの問題が発生する可能性があります。
ディレクトリを作成して割り当てたら、これらのリソースの共有を設定するために、NFS構成ファイルに飛び込むことができます。そのためには、 / etc / exportsを開く必要があります 次のコマンドを使用して、root権限を持つテキストエディタでファイルを作成します。
sudo nano /etc/exports
表示されるファイルには、各構成行の一般的な構造を知らせるいくつかのコメントが含まれています。基本的に、構文は次のようになります。
directory_to_share client (share_option2,...,share_optionM)
ここでの目的は、共有する必要のあるディレクトリごとに1行を作成できるようにすることです。選択した例では、IPはたまたま192.168.0.100であるため、行は次のようになります。
/home 192.168.0.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.0.101(rw,sync,no_subtree_check)
ここで、上記の行に示されているオプションを理解するために少し時間がかかります。
- rw :このオプションを使用すると、クライアントコンピューターでボリュームへの読み取りおよび書き込みアクセスが可能になります。
- 同期 :応答する前にNFSにディスクへの変更の書き込みを強制するため、より安定した一貫性のある環境が得られます。これは主に、応答がリモートボリュームの実際の状態を複製するためです。
- nosubtreecheck :このオプションは、サブツリーチェックを回避します。これは、リクエストごとに、エクスポートされたツリーでファイルが実際にまだ利用可能かどうかをホストにチェックさせるプロセスです。クライアントがファイルを開いているときにファイルの名前が変更されると、問題が発生する可能性があります。同じ理由で、ほぼすべての場合、サブツリーチェックを無効にすることをお勧めします。
- norootsquash :デフォルトでは、NFSはrootユーザーからの要求をサーバー上の非特権要求にリモートで変換します。これは、クライアントのrootアカウントがホストのファイルシステムをrootとして使用できないようにするセキュリティ機能を目的としています。この種のディレクティブは、特定のロットの共有に対してこれを無効にします。
必要な変更をすべて行ったら、予想どおり、ファイルを閉じる前に変更を加えて保存する必要があります。続いて、次のコマンドを使用して、共有のエクスポートを保持するNFSテーブルを作成する必要があります。
sudo exportfs -a
ただし、NFSサービスはまだ実行されていません。次のコマンドを入力して、同じように開始できます。
sudo service nfs-kernel-server start
上記のコマンドは、構成したクライアントが共有を利用できるようにします。これで、次のステップに進む準備ができました。
ホストサーバーを構成し、そのディレクトリ共有を利用できるようにしたら、クライアントを準備する必要があります。ここでは、リモート共有をマウントする必要があるため、いくつかのマウントポイントを作成する必要があります。従来の/mntを使用します まず、 NFSというディレクトリを作成します。 その下で株式を統合します。ここで、実際のディレクトリは、ホストサーバー上のそれらの場所に対応している必要があります。ユーザーは、次のコマンドを使用して、各ディレクトリと必要な親ディレクトリを作成できます。
sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs
リモート共有を収容するための適切な場所を作成したので、ホストサーバーをアドレス指定することにより、リモート共有をマウントすることができます。このチュートリアルの目的では、以下に示すように5.6.7.8です。
sudo mount 192.168.0.100:/home /mnt/nfs/home
sudo mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs
これらにより、ホストコンピューターからクライアントマシンに共有をマウントできるようになります。クライアントサーバーで使用可能なディスク容量を確認することで、これを再確認できます(以下を参照)。
df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 324K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user 192.168.0.100:/home 59G 1.3G 55G 3% /mnt/nfs/home
下部に示されているように、エクスポートされた両方の共有がリモートサーバー上の同じファイルシステムに存在するため、目的の共有の1つだけが表示されます。つまり、同じストレージプールを共有します。 アベイルズの場合 および%を使用 正確には、列の1つだけを計算に追加できます。それでも、マウントしたすべてのNFS共有を表示する場合は、次のコマンドを入力できます。
mount -t nfs
上記のコマンドは、クライアントマシンで現在アクセス可能なNFSマウントのすべてをスローします。これにより、このステップは終了し、次のステップに進むことができます。
共有に何かを書き込むことで、共有へのアクセスをテストできます。たとえば、共有の1つにテストファイルを書き込みます(以下を参照)。
sudo touch /mnt/nfs/home/test_home
ここでは、重要な違いを示すために、他の共有にもテストファイルを書き込みます。
sudo touch /mnt/nfs/var/nfs/test_var_nfs
違いを理解するには、マウントされたホームディレクトリ(以下に示す)内のファイルの所有権を注意深く確認してください。
ls -l /mnt/nfs/home/test_home -rw-r--r-- 1 root root 0 Apr 10 09:15 test_home
明らかなように、ファイルはrootによって所有されています。その理由は、 root_squashを非アクティブ化したためです。 このマウントのオプション。これにより、ファイルは不明な非rootユーザーとして書き込まれます。 root_squashを有効にしてマウントされた他のテストファイルでは、まったく異なるものに気付くでしょう(以下で説明します):
ls -l /mnt/nfs/var/nfs/test_var_nfs -rw-r--r-- 1 nobody nogroup 0 Apr 10 09:15 test_var_nfs
明らかに、このファイルは誰にも割り当てられていません ユーザーとnogroup グループ。したがって、これはプリセット構成に準拠しています。次のステップに進みましょう。
fstab に追加することで、リモートNFS共有を自動的にマウントするオプションをお楽しみいただけます。 クライアント上のファイル。次のコマンドを使用して、テキストエディタでroot権限でこのファイルを開く必要があります。
sudo nano /etc/fstab
ファイルの一番下に、共有ごとに1行追加する必要があります。これは、以下のようになります。
192.168.0.100:/home /mnt/nfs/home nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
192.168.0.100:/var/nfs /mnt/nfs/var/nfs nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0
ここで指定されているオプションは、 fstabでのNFSマウントについて説明しているマニュアルページにあります。 次のコマンドを使用してファイルを作成します:
man nfs
これにより、起動時にリモートパーティションを自動的にマウントできるようになります。接続が確立され、共有が利用可能になるまでに時間がかかる場合があります(ここでは忍耐が美徳になります!!)
NFSリモート共有のアンマウント
リモートディレクトリをシステムにマウントする必要がなくなった場合は、次のコマンドを使用して、共有のディレクトリ構造から移動してアンマウントすることで、リモートディレクトリを簡単にアンマウントできます。
cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs
これにより、リモート共有を削除して、ローカルストレージのみにアクセスできるようになります。
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 320K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user
明らかなように、NFS共有は現在ストレージスペースとして使用できません。これでチュートリアルは終了です。
NFSは、ネットワークを介してリモートシステムにアクセスするためのシンプルで迅速なメカニズムを提供します。ただし、プロトコルは暗号化されていません。これを実稼働環境で使用する場合は、はるかに安全なエクスペリエンスを作成するために、SSHまたはVPN接続を介してNFSをルーティングすることを検討することをお勧めします。