![実稼働 Web サーバーで NFS を使用するのは合理的でしょうか?](https://rvso.com/image/756229/%E5%AE%9F%E7%A8%BC%E5%83%8D%20Web%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%20NFS%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E5%90%88%E7%90%86%E7%9A%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
接続が LAN 1Gbe または 10Gbe 接続経由であると仮定すると、コンピューティング サーバーをストレージ サーバーに接続する手段として、実稼働サーバー上で NFS を適切に使用できますか?
明らかにネットワーク オーバーヘッドがあり、同期モードを有効にすると NFS の書き込み速度が特に遅くなるようです。それ以外は、私が知る限りでは、かなり軽量で拡張性があるようですが、個人的にはあまり経験がありません。私の考えは間違っていますか?
問題は、現在、ストレージと Web サーバーの両方として機能するサーバーがあるのですが、将来的にはおそらくこの 2 つを分割する必要があることです。また、一部のリクエストは、ファイル転送を初期化する前に認証のために Web アプリケーション層を通過する必要があることを考慮すると、このソフトウェアでは少し扱いにくくなります。ネットワーク ファイルシステム マウントは最も簡単なオプションですが、それが良い方法かどうかはわかりません。
また、NFS によるローカル キャッシュの利用も検討する予定です。これにより、パフォーマンスが大幅に向上するはずですが、それで十分かどうかはわかりません。
代替案としては、私が知る限り、真の競合相手は iSCSI だけであり、ほとんどの人は、あまり知られていない他のものよりも NFS を推奨しているようです。
答え1
NFS は、次のような特定の条件が満たされない限り問題ありません。
- 関係するシステムは両方ともNFSをネイティブに使用できます。Windowsはここではカウントされません。種の動作しますが、多くの癖があり、クロスプラットフォーム環境でNFSを扱うときに作業が面倒になることがよくあります(そして、ただWindows では、SMB3 を使用すると、NFS に関する他のほとんどの問題が解消されます。) クライアント側では、これはカーネル レベルのサポートを意味することに注意してください。ユーザー レベルの実装では、FUSE のようなものを使用することで生じる効率の問題に対処するか、共有にアクセスする必要があるアプリケーションに直接リンクする必要があるためです。
- NFSクライアントがNFSサーバーの再起動をどのように処理するかを適切に検証しました。これにはOS自体(すべきほとんどの場合、問題はありません)、および共有にアクセスするソフトウェアも考慮してください。特に、共有を使用するソフトウェアが長時間ファイルを開いたままにする場合、一部のクライアント プラットフォームでは特別な注意が必要です。これは、すべての NFS クライアント実装が、明示的に再マウントしてロックとファイル ハンドルを再検証することでサーバーの再起動を適切に処理するわけではないためです (これにより、クライアント ソフトウェアでさまざまな問題が発生します)。スタックのいずれかの部分がアップグレードまたは再構成されるたびに、これを再確認する必要があることに注意してください。
- 適切なユーザー/グループ ID マッピングを設定する意思があること。これは重要です。なぜなら、これを行わないと、システム間で UID/GID マッピングをミラーリングする必要がある (実行可能だが、インターネットに接続しているシステムの内部ネットワークに対して SSO を設定することには注意が必要) か、セキュリティに重大な影響を及ぼす可能性がある (つまり、あるシステムで表示される権限が他のシステムで表示される権限と一致しない) からです。
- 安全なネットワーク リンク上で操作しているか、共有の認証を適切に設定するつもりです。認証がないと、リンク上の誰でもアクセスできます (悪意のあるクライアントは、基本的な UNIX 任意アクセス制御を簡単に回避できます)。
これらすべての基準を満たし、適度に高速なネットワークがあれば、問題はありません。また、ジャンボ フレームを実行できる場合は、実行してください。ジャンボ フレームは、あらゆるネットワーク ファイル システムやネットワーク ブロック ストレージに大いに役立ちます。
答え2
NFS はまったく問題なく、管理、共有、バックアップがはるかに簡単なため、iSCSI よりも好まれます。
答え3
当社では長年にわたり NFS を使用して SAN を VMware ESXi サーバーに接続し、数百台の VM を実行してきました。まったく問題はありません。
ボトルネックとなっているのは、ネットワーク プロトコルではなく、ストレージ システムです。
もちろん、ネットワーク接続は十分に高速である必要があります。つまり、10Gb イーサネットまたはファイバーです。もう、別のストレージ ネットワークを用意する必要はありません。
答え4
iSCSI の方が少し速いかもしれません...
https://www.hyper-v.io/whos-got-bigger-balls-testing-nfs-vs-iscsi-performance-part-3-test-results/
...しかし、NFS は他のネットワーク リダイレクタ (SMB3、AFS/AFP など) と同様に、iSCSI やその他のブロック プロトコルでは扱いにくい同時マルチアクセスを許可します。
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392