ブログに戻る

Ubuntu 20.04でのNFSマウントの設定

Ubuntu 20.04でのNFSマウントの設定

The Network File System (NFS)は、分散ストレージソリューションです。リモートディレクトリをローカルサーバーにマウントし、ローカルストレージであるかのように使用できるようにするファイルシステムプロトコルです。NFSを使用すると、複数のクライアントがリモートストレージを共有できます。定期的に共有リソースを必要とする環境に適しています。NFSは、ONC RPC(Open Network Computing Remote Procedure Call)システム上に構築されています。これはRFC(Request for Comments)で定義されているオープン標準です。これにより、誰でもこのプロトコルを実装できます。

このガイドでは、 Ubuntu 20.04上でNFSマウントをセットアップおよび設定する手順について説明します。

前提条件

NFSの説明が示すように、NFSの設定には2つの部分があります。

  • ホスト: 物理的にデータを保存し、そのストレージを「クライアント」システムと共有します。

  • クライアント: 「ホスト」に接続し、リモートストレージをローカルストレージであるかのように使用するシステム。

デモンストレーションでは、どちらもUbuntu 20.04で構成された2つのサーバーを使用します。以下は、Ubuntuサーバーをセットアップする方法に関する簡単なガイドです。このガイド全体を通して、これらのサーバーは ホストおよび クライアントと呼ばれます。なお、 クライアントに対する操作は、複数ある場合でも同じです。

サーバーには以下のIPアドレスが割り当てられています。これらのサーバーはCloudSigmaによってホストされています:

  • host: 31.171.240.79

  • client: 31.171.250.109

これらを適切なIPアドレスに置き換えてください。

NFSのインストール

NFSは公式のUbuntuリポジトリから簡単に入手できます。 ホスト用と クライアントシステム用で異なるソフトウェアパッケージがあります。

  • ホストへのNFSのインストール

ホスト側では、マシンがNFS ホストとして機能するためのコンポーネントが必要です。これは、パッケージ nfs-kernel-serverの形式で提供されます。UbuntuはパッケージマネージャーとしてAPTを使用します。まず、ターミナルを起動し、 APTパッケージデータベースを更新します:

Server Apt Update

次に、 nfs-kernel-serverパッケージをインストールします。必要に応じて、 APTが追加の依存関係を処理します:

Install nfs kernel server

  • クライアントへのNFSのインストール

On the クライアントシステムでは、ネットワーク経由で ホストのディレクトリに接続する機能が必要です。NFSサーバー機能は必要ありません。Ubuntuでは、パッケージ nfs-commonにバンドルされています。 APTパッケージデータベースを更新します:

Client apt update

次に、 nfs-commonパッケージをインストールします:

Install nfs common

ホスト上の共有ディレクトリ

次に、それぞれ異なる設定を持つ2つの個別のディレクトリを共有します。スーパーユーザーアクセスに関して、NFSマウントが機能する2つの主要な方法を示します。デフォルトでは、スーパーユーザーはシステム全体で何でも実行できる権限を持っています。ただし、NFSマウントされたディレクトリは、マウント先システムの一部ではありません。NFSサーバーは、スーパーユーザー権限を必要とする操作の実行を拒否します。この制限により、クライアントはNFSマウントに対して書き込み、所有権の再割り当て、その他のスーパーユーザーのタスクを実行する権限を持たなくなります。

マウントされたファイルシステム上で、特定の信頼できるユーザーにこれらのタスクの実行を許可することは可能です。ただし、そのような クライアントホストへのフルアクセスを取得する可能性があるため、一定のリスクが伴います。これは、適切なユーザー権限管理によって軽減できます。Linuxでは、sudoersファイルがシステム上のすべてのユーザー権限を制御します。詳細については、Linuxのsudoersファイルを設定する方法.

  • 汎用マウント

最初の例は、デフォルトのNFS動作を使用する汎用NFSマウントです。このアプローチでは、クライアントがマウント上でスーパーユーザーのアクションを実行することは非常に困難です。このタイプのNFSマウントは、ファイルストレージ、CMS(コンテンツ管理システム)を使用したアップロード、またはプロジェクトファイルの共有などのためにデプロイするのが一般的です。

次の手順は、 ホストシステムで実行します。まず、 nfs:

Create nfs general dir

ディレクトリは sudo 権限で作成されたため、所有者は root:

List nfs general

デフォルトの設定では、NFSはセキュリティ対策として、クライアント側からのroot操作をすべて nobody:nogroup の資格情報に変換します。一貫性を保つために、ディレクトリの所有権を資格情報に合わせて変更します:

Change owner nogroup

  • ホームディレクトリ

2つ目の例は、 host ユーザーのホームディレクトリをクライアントが利用できるようにすることです。選択されたクライアントの信頼できる管理者がアクセスして、ユーザーを便利に管理できます。 /home ディレクトリはデフォルトで存在するため、ディレクトリを作成する必要はありません。ディレクトリの権限に関しては、メリットよりも問題が多く発生するため、変更を加える必要はありません。

NFSエクスポートの設定

共有するディレクトリが作成されました。次に、クライアントがこれらを利用できるようにNFSを設定する必要があります。NFSは、共有するディレクトリを追跡するために設定ファイルを使用します。お好みのテキストエディタで次のNFS設定ファイルを開きます。

exports file

ファイルのコメントセクションには、設定の一般的な構文構造が記載されています。簡単に言うと、すべてのディレクトリは次の形式で宣言する必要があります。

共有することにした2つのディレクトリの設定は次のようになります。両方のディレクトリにほぼ同じ設定オプションがあります。

exports file mod

設定オプションの簡単な内訳は次のとおりです。

  • rw: クライアントにボリュームへの読み取りと書き込みの両方の権限が付与されます。

  • sync: 応答する前に、NFSに変更をディスクに書き込むよう強制します。これにより、より安定し一貫したエクスペリエンスが提供されます。応答はリモートボリュームの実際の状態を反映します。ただし、ファイル操作は遅くなります。

  • no_subtree_check: サブツリーチェックを防止します。無効にしない場合、ホストはクライアントからのすべてのリクエストに対して、エクスポートされたツリー内のファイルの存在を確認することを強制されます。これにより、クライアントがファイルを使用している間にファイル名が変更されるなど、多くの問題が発生する可能性があります。ほとんどの場合、サブツリーチェックを無効にすることをお勧めします。

  • no_root_squash: 前述のように、NFSはリモートのrootユーザーからのリクエストを非特権ユーザーに変換します。これは、ホストシステムへの不要なアクセスを防ぐための意図されたセキュリティ機能です。ただし、このオプションを使用すると、この動作が無効になります。

設定ファイルを保存してエディタを終了します。変更を有効にするには、NFSサーバーを再起動します。

Restart nfs kernel server

ファイアウォールの調整

どのサーバーにとっても、適切なファイアウォール設定は必須です。すでにUbuntu 20.04サーバーを適切に設定していると仮定すると、UFWファイアウォールが有効になっているはずです。これは、ほとんどのLinuxディストリビューションに付属している、シンプルでありながら強力なファイアウォールです。初心者向けに、UFW、その仕組み、および一般的なUFWの使用例を説明するクイックガイド.

デフォルトでは、ファイアウォールはすべての送受信トラフィックをブロックします。NFSサーバーが適切に接続してトラフィックを交換できるようにするには、NFSプロトコルの例外を追加する必要があります。まず、ファイアウォールのステータスを確認します。現在のすべてのルールも出力されます。

ufw status

ご覧のとおり、システムへのSSHトラフィックのみが許可されています。NFSトラフィックを許可するための例外を追加する必要があります。

ほとんどの場合、必要なトラフィックを許可しつつ、最も制限の厳しいルールを使用することを強くお勧めします。そのため、特定のクライアントのみがホストに接続できるようにします。

ufw allow ports

その後、ファイアウォールのステータスを再度確認します:

ufw status after change

マウントポイントの作成

サーバーは、 クライアント システムがNFSプロトコルに接続することを許可する準備が整いました。次に、 クライアント を準備する必要があります。リモートボリュームにアクセスするには、それを クライアント にローカルマウントする必要があります。マウントポイントとしては、専用の空のディレクトリを使用することをお勧めします。

2つのリモートボリュームに対して、2つの個別のマウントポイントを作成します。

Create client nfs general directory

Create client nfs home directory

マウントポイントの準備ができたので、リモートボリュームをマウントする必要があります。

Mount general directory on client

Mount home directory on client

マウントが成功したかどうかを確認できます。マウントされているすべてのボリュームのリストを確認します。

Disk free in client

これで完了です!リモートボリュームが正常にマウントされました。次のコマンドを使用して、スペースの使用状況を確認することもできます。

Disk usage in client home

NFSアクセスのテスト

ここまでは、リモートボリュームが正しくマウントされています。しかし、クライアントがリモートボリューム上のデータを読み書きできなければ意味がありません。検証するために、NFSマウント上にダミーファイルを作成します。ここでは、 root 権限でファイルを作成し、ルート固有の設定が正しく機能しているかどうかをテストします:

Create file in nfs

次に、ファイルの所有権を確認します。

Check ownership of file created

ご覧の通り、NFSはファイルの所有者を nobody:nogroup に変換しています。 /var/nfs/ generalディレクトリの所有権は nobody:nogroup になっているため、NFSがファイルの所有権を変換しています。もう一方のNFSマウントをテストしてみましょう。

Create home file

ファイルの存在と所有権を確認します。

Check ownership of home file

この場合、NFSはファイルの所有権を変換しませんでした。このクライアントは、管理者アクションを実行できるように設定されています。さらに、元の ホスト ディレクトリ /home の所有権は nobody:nogroup にはなっていません。.

追加のトリック

  • 起動時のマウント

これまでは、ローカルディレクトリにNFSボリュームを手動でマウントする必要がありました。アンマウントしない限り、NFSマウントはシステムが再起動するまで維持されます。NFSボリュームを定期的に使用する場合、手動でのマウントは非常に面倒になります。複数のNFSマウントがある場合、それらを手動で1つずつマウントするのは現実的ではありません。

Using the /etc/fstab ファイルを使用すると、プロセスを自動化できます。起動時に、このスクリプトはターゲットのマウントポイントにNFSボリュームを自動的にマウントします。テキストエディタでファイルを開きます。

fstab file

ホストシステムのリモートボリュームをマウントするために、次の行を追加します。

fstab file after change

スクリプトを保存してテキストエディタを閉じます。次回の起動時に、Linuxはリモートボリュームを自動的にマウントします。ボリュームの接続とマウントが行われるため、システムの起動に少し時間がかかる場合があることに注意してください。

  • NFSボリュームのアンマウント

リモートボリュームが不要になった場合は、ボリュームをアンマウントすることでクライアントシステムから削除されます。ただし、アンマウントする前に、アプリケーションやスクリプトがリモートボリュームを使用していないことを確認してください。NFSマウントのアンマウントは、他のマウントのアンマウントと同様です。この場合は、 /nfs/home および /nfs/general をアンマウントします。:

Unmount nfs

次に、動作を確認します:

Disks after unmount

おわりに

このガイドでは、NFSサーバーを作成し、NFSリモート共有の基本をいくつか紹介しました。本番環境へのNFSの導入を検討している場合は、NFSプロトコルが暗号化されていないことに留意してください。これにより、中間者攻撃などのセキュリティ上の懸念が生じる可能性があります。

快適なコンピューティングを!

author

Pranay Kapgate

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。