GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8でNFSマウントを設定する方法

ネットワークファイルシステムまたはNFSは、リモートホストがネットワーク経由でファイルシステムをマウントし、ローカルにマウントされているかのようにファイル操作を実行できるようにする分散ファイルシステムプロトコルです。これは、1つのサーバーのリソースを複数のクライアントで共有したり、複数のクライアントが単一のストレージスペースに書き込めるようにしたりする場合に特に便利です。

このチュートリアルでは、Rocky Linux 8に基づいてNFSサーバーとNFSクライアントをインストールおよび構成する方法を学習します。このために、ファイルを共有するホストまたはサーバーと、NFSマウントを使用してホストファイルにアクセスするクライアントをセットアップします。 。

前提条件
  • 2台のRockyLinux8サーバー。これらのそれぞれには、sudo権限を持つroot以外のユーザーが必要です。
  • ホストとクライアントの両方に静的IPアドレスが必要です。プライベートネットワーク経由で両方を設定することもできます。チュートリアルでは、 host_ipを使用します ホストのIPアドレスとclient_ipを示します クライアントのIPアドレスを参照します。
ステップ1-ホストとクライアントにNFSをインストールする

ホスト

NFSパッケージをインストールするには、nfs-utilsをインストールする必要があります パッケージ。 NFSサーバーおよび関連ツール用のデーモンを提供します。

パッケージをインストールします。

$ sudo dnf install nfs-utils

nfs-serverを有効にして起動します サービス。 nfsdなど、NFSのマウントと共有に必要な残りのサービス 、nfs-idmapdrpcbindrpc.mountdlockdrpc.statdrpc.quotad およびrpc.idmapd 一緒に自動的に開始します。

$ sudo systemctl enable nfs-server --now

NFSインストールのバージョンを確認します。

$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

NFSバージョン3および4はデフォルトで有効になっており、バージョン2は無効になっています。 NFSv2はかなり古くて時代遅れであるため、 -veを確認できます。 その前にサインインします。

NFSは、その構成を/etc/nfsmount.confに保存します および/etc/nfs.conf ファイル。 /etc/nfsmount.conf /etc/nfs.conf中にNFSマウントを構成することです NFSデーモンと関連ツールを構成することです。チュートリアルにはデフォルト設定で十分であり、変更は必要ありません。

クライアント

クライアントに、nfs-utilsをインストールします およびnfs4-acl-tools パッケージ。

$ sudo dnf install nfs-utils nfs4-acl-tools
ステップ2-ホスト上に共有ディレクトリを作成する

構成設定が異なる2つの例を使用します。1つは汎用マウントを使用し、もう1つはホストのホームディレクトリを共有します。

NFSマウントされたディレクトリは、クライアントの一部ではありません。したがって、NFSはスーパーユーザー権限を必要とするタスクを実行できません。これは、クライアントが所有権を変更したり、rootユーザーとして書き込みたり、高レベルのタスクを実行したりできないことを意味します。ただし、クライアント上の信頼できるユーザーが、ホスト上のスーパーユーザーアクセスを必要とせずにそのようなタスクを実行する必要がある場合があります。 NFSサーバーはこれを可能にするように構成できますが、クライアントがホストにアクセスできるリスクがあります。

汎用マウントの操作

最初のケースでは、デフォルトのNFS動作を使用する単純なマウントを作成します。これは、クライアントがスーパーユーザー権限を必要とするタスクを実行できないことを意味します。

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

host:$ sudo mkdir /var/nfs/share -p

sudoを使用したため、ホストのrootユーザーがこのディレクトリを所有します 作成します。

host:$ ls -l /var/nfs
total 0
drwxr-xr-x. 2 root root 6 Dec 13 07:30 share

NFSは、クライアント側のすべてのルート操作をnobody:nobodyに変換します セキュリティ上の理由からの資格。したがって、ホスト側でそれらを一致させる必要があります。

host:$ sudo chown nobody:nobody /var/nfs/general
ホームディレクトリの操作

2番目のケースでは、ホスト上のホームディレクトリをクライアントが利用できるようにします。すでに存在しているので作成する必要はありません。ホストマシンのユーザーに影響するため、権限を変更する必要はありません。

ステップ3-ホストでのNFSエクスポートの構成

ファイル/etc/exportsを開きます 編集用のホストマシン上。

host:$ sudo nano /etc/exports

次のコードをファイルに貼り付けます。

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

各ディレクトリとその構成は、別々の行にある必要があります。 client_ipを置き換えます クライアントマシンの実際のIPアドレスを使用した値。

NFSエクスポートのすべてのオプションを見てみましょう。

  • rw -クライアントマシンにNFSボリュームへの読み取りおよび書き込みアクセスを許可します。
  • 同期 -このオプションは、NFSが応答する前にディスクに変更を書き込むように強制します。このオプションは、より信頼性が高いと見なされます。ただし、ファイル操作の速度も低下します。
  • no_subtree_check -このオプションは、サブツリーチェックを防ぎます。これは、ホストがすべてのリクエストのアクセス許可とともにファイルが利用可能かどうかをチェックする必要があるプロセスです。また、クライアントで開いているときにファイルの名前がホストで変更された場合にも、問題が発生する可能性があります。無効にすると、NFSの信頼性が向上します。
  • no_root_squash -デフォルトでは、NFSはクライアント上のrootユーザーからの要求をホスト上の非特権ユーザーに変換します。このオプションはその動作を無効にするため、クライアントがホストにアクセスできるように注意深く使用する必要があります。

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

共有をエクスポートするには、次のコマンドを実行します。

host:$ sudo exportfs -arv
exporting client_ip:/home
exporting client_ip:/var/nfs/share
  • -a -このオプションを使用すると、すべてのディレクトリがエクスポートされます。
  • -r -このオプションを使用すると、/var/lib/nfs/etabに新しいリストを作成して、すべてのディレクトリをエクスポートできます。 ディレクトリ。このオプションは、/etc/exportsに加えられた変更でエクスポートリストを更新するために使用されます 。
  • -v -詳細な出力を有効にします。

エクスポートされたすべてのディレクトリを一覧表示するには、次のコマンドを実行します。 /etc/exportsで指定されなかったデフォルトのオプションを含む、すべてのオプションが表示されます。 ファイル。

host:$ sudo exportfs -s
/var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
ステップ4-ホストでのファイアウォールの構成

RockyLinuxはFirewalledFirewallを使用しています。ファイアウォールのステータスを確認してください。

host:$ sudo firewall-cmd --state
running

これは、正常に稼働していることを示しています。

ファイアウォールはさまざまなゾーンで機能し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートを一覧表示します。

host:$ sudo firewall-cmd --permanent --list-services

次の出力が表示されます。

cockpit dhcpv6-client ssh

次に、必要なNFSサービスへのトラフィックを許可する必要があります-mountdnfs およびrpc-bind 。また、クライアントIPからのアクセスを許可する必要があります。クライアントとホストサーバーが同じサブネット内にある場合は、クライアントのIPアドレスを追加する必要はありません。

host:$ sudo firewall-cmd --permanent --add-service=nfs
host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
host:$ sudo firewall-cmd --permanent --add-service=mountd
host:$ sudo firewall-cmd --permanent --add-source=client_IP 

ファイアウォールをリロードして変更を適用します。

host:$ sudo firewall-cmd --reload

ステップ5-クライアントにマウントポイントとディレクトリを作成する

NFSサーバー/ホストが構成されたので、次のステップはクライアントにマウントポイントとディレクトリを設定することです。 showmountを実行できます クライアントでコマンドを実行して、ホストにエクスポートされたファイルシステムのリストを確認します。

client:$ showmount -e host_ip
Export list for host_ip:
/home          host_ip
/var/nfs/share host_ip

常にクライアントのマウントポイントとして新しいディレクトリを作成するか、既存の空のディレクトリを使用してください。マウントするディレクトリにファイルがある場合、そのファイルは非表示になります。

マウントディレクトリを作成します。

client:$ sudo mkdir -p /nfs/share
client:$ sudo mkdir -p /nfs/home

ホストのIPアドレスを使用して共有をマウントします。

client:$ sudo mount host_ip:/var/nfs/share /nfs/share
client:$ sudo mount host_ip:/home /nfs/home

マウントが成功したことを確認します。

client:$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                   370M     0  370M   0% /dev
tmpfs                      405M     0  405M   0% /dev/shm
tmpfs                      405M   16M  389M   4% /run
tmpfs                      405M     0  405M   0% /sys/fs/cgroup
/dev/vda1                   25G  2.4G   23G  10% /
tmpfs                       81M     0   81M   0% /run/user/1000
host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
host_ip:/home               25G  2.4G   23G  10% /nfs/home

両方の共有は同じファイルシステムからマウントされます。したがって、それらは同じディスク使用量を示します。

mountを使用することもできます 確認するコマンド。

client:$ mount | grep nfs
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
ステップ6-NFSアクセスをテストする 汎用共有のテスト

テストファイルを/var/nfs/shareに書き込みます 共有します。

client:$ sudo touch /nfs/share/test.txt

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

client:$ ls -l /nfs/share/test.txt
-rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt

デフォルトのNFS設定を使用してこのボリュームをマウントし、sudoを使用してクライアントにファイルを作成したため 、ファイルの所有権はデフォルトでnobody:nobody 。クライアントのスーパーユーザーは、共有に対して管理タスクを実行できません。

ホームディレクトリ共有のテスト

テストファイルを/nfs/homeに書き込みます 共有します。

client:$ sudo touch /nfs/home/home.txt

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

client:$ ls -l /nfs/home/home.txt
-rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt

no_root_squashを使用したので オプションを選択すると、クライアントのrootユーザーが共有自体のrootとして機能できるようになります。

ステップ7-マウントポイントを永続的にする

デフォルトのNFS共有は一時的なものであり、起動時にマウントする必要があります。 /etc/fstabを編集することで、それらを永続的にすることができます クライアント上のファイル。

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

client:$ sudo nano /etc/fstab

次の行をファイルの下部に貼り付けます。

. . .
host_ip:/var/nfs/share      /nfs/share     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

次のコマンドを実行すると、上記のオプションの詳細を確認できます。

client:$ man nfs
client:$ man mount

それらをオンラインで読みたい場合は、man nfsというフレーズをグーグルで検索できます。 およびman mount これらのオプションの詳細については、こちらをご覧ください。

ステップ8-NFS共有のマウントを解除する

システムにリモートマウントが不要になった場合は、umountを使用してリモートマウントを解除できます。 指図。このコマンドはumountと呼ばれることに注意してください アンマウントではありません これはよくある間違いです。

共有マウントから移動し、マウントを解除します。

client:$ cd ~
client:$ sudo umount /nfs/share
client:$ sudo umount /nfs/home

再起動時に共有を再度マウントする必要がなくなった場合は、/etc/fstabの対応するエントリをコメントアウトしてください。 #を入れてファイルする それらの前にサインインします。

結論

このチュートリアルでは、NFSホストサーバーを作成し、それを使用してディレクトリをマウントする方法を学習しました。これは、NFSクライアントと共有しました。プライベートネットワークに実装している場合は問題ありませんが、本番環境で使用している場合は、プロトコルが暗号化されていないことを覚えておいてください。データを保護するために何らかの認証を実装する必要があります。

ご不明な点がございましたら、下のコメント欄に投稿してください。


Rocky Linux
  1. LinuxでNFS共有をマウントする方法

  2. Rocky / AlmaLinux8でNFSサーバーとクライアントをセットアップする方法

  3. Rocky Linux 8 に Redis をインストールする方法

  1. RockyLinux8にPython3.9をインストールする方法

  2. RockyLinux8でPritunlVPNサーバーをセットアップする方法

  3. CentOS7をRockyLinux8にアップグレードする方法

  1. RockyLinux8.4のインストール方法

  2. RockyLinuxで静的IPアドレスを設定する方法

  3. RockyLinuxでSSLを使用してApacheを使用してWebサイトをホストする方法