
- RHEL 7.9 x86-64
- Xeon CPU、512GB RAM、Intelネットワークカードを搭載した高度なDellサーバー
- 私はサーバーの唯一のユーザーであり、他のワークロードはありません。
- シスコ1Gbps有線LAN
- data.tar約50GB
/bkup
NFSはvers = 4.1でインストールされ同期されますか?- aが
scp data.tar backupserver:/bkup/
走り続ける112MB/秒私はこれを5年以上見続けており、それが正しいと信じています。 - aが
rsync -P data.tar /bkup
走り続ける55MB/秒継続的にこれはNFSを介して複製されます。 - 2つのコピーを同時に実行すると、scpは112から55に減少し、NFSを介したrsyncは55から35に減少しました。
- 一方のコピーが完了すると、もう一方のコピー速度は元の速度に戻ります。
なぜ? NFSをスピードアップする方法は?
答え1
主な理由は、おそらくsync
このオプションを使用してNFS共有をマウントするためです。理論的には、サーバーが突然消えたり、クライアントの接続が予期せずに切断されたりする場合、データセキュリティを向上させますが、パフォーマンスを低下させる可能性があります。
マウントオプションの使用は、毎回.IOWを呼び出すsync
アプリケーションと同じです。クライアントがIO要求を送信するたびに、他の要求を送信する前に要求が完了するのを待つ必要があります。これは、次のコマンドで使用してもデータ書き込み速度に大きな影響を与える可能性があります。fsync()
write()
地元のこれはファイルシステムですが、ネットワークファイルシステムはこれを行うことができます。たくさんさらに悪いのは、各 IO 要求の後に次の要求が行われる前に、少なくとも 1 回の完全なネットワーク往復が必要なためです。時間がある場合は、TFTP(SCPと比較)を使用して数百MBのサイズのファイルをコピーすると、この効果を直接体験できます。 TFTP はこのタイプの同期を基本レベルのプロトコルに統合し、次のように実装します。次のパケットが送信される前に、個々のパケットを確認する必要があります。そのため、NFSが見るよりもパフォーマンスがはるかに低い可能性があります。
ファイルを自動的に置き換えてコピーを適切に処理する責任あるソフトウェアを使用する場合は、async
NFSモードに安全に切り替えることでこの問題を回避できます。