小さなファイルのNFS転送パフォーマンスが遅い


12

RAID 1 + 0を使用してHP ML370 G5、SmartアレイP400、SASディスクを組み合わせてOpenfiler 2.3を使用しています。

OpenfilerのWebベースの構成を使用してext3パーティションからNFS共有をセットアップし、別のホストから共有をマウントすることに成功しました。両方のホストは、専用のギガビットリンクを使用して接続されます。

を使用した簡単なベンチマークdd

 $ dd if=/dev/zero of=outfile bs=1000 count=2000000
 2000000+0 records in
 2000000+0 records out
 2000000000 bytes (2.0 GB) copied, 34.4737 s, 58.0 MB/s

中程度の転送速度(58.0 MB /秒)を達成できると思います。

しかし、合計サイズが300 MB未満の小さなファイル(.phpおよび.jpgファイルあたり約1〜4 kB)を多く含むディレクトリをコピーすると、cpプロセスは約10分で終了します。

上記のような小さなファイル転送にはNFSは適していませんか?または、調整が必要なパラメータはありますか?


これはあなたの質問に答えますか?NFSの書き込みパフォーマンスが低い
Aleksandr Dubinsky

回答:


7

多くの小さなファイルの転送が単一の大きなファイルの転送よりも常に遅い理由はたくさんあります。読み取りの場合、ファイルはディスクの周りに分散している可能性が高く、ファイルを取得するためにあらゆる場所でシークが必要になります。Evanが述べたように、NFS(またはそのことについては他のファイルシステム)の場合にもメタデータが含まれており、これも事態を複雑にします。

rsizeおよびwsizeNFSマウントのパラメーターを増やして、パフォーマンスが少し向上するかどうかを確認できます。また、NFSを最小限のレイテンシに調整することに関するこの質問も確認してください。NFSには、多くの小さなファイル転送の場合に役立つ役立つアドバイスがたくさんあります。


8

私はNFSの経験はあまりありませんが、他のネットワークファイル共有プロトコルを使用した経験では、「多くの小さなファイル」のシナリオでは、ほぼ例外なくパフォーマンスが低下します。ラウンドトリップのレイテンシが発生し、レイテンシが追加されるファイルの大規模なグループにわたって。


4

XFSのような別のファイルシステムで試しましたか?小さなiSCSIブロック転送を大量に実行するときの問題をすべて解決しました。なぜだかわかりません。

また、iSCSI / NFSは通常、かなり大きなデータフレーム(ジャンボフレームなど)用に構成されているため、小さなファイルを一度に1つずつコピーする場合は、問題が発生する可能性があります。たぶんtarしてから転送するとよいでしょう。


1
はい、私のテストでは、XFSを使用した場合、ext3よりも改善が見られました(約8分から約14分)
Arie K

1
いくつか?それはかなり大きな改善だと思います:)
pauska

1

TCP接続を使用していることを確認します(mount -t nfs -o tcp host:/ mount / target)。最新のシステムのパフォーマンスには影響しませんが、ネットワークがロードされている場合、小さなIOが大幅に向上する可能性があります。

そして、他のファイルシステムも試してみてください。ext3は基本的に最も遅いです。堅固でよく知られていますが、ファイルサーバーにはまったく適していません。XFSははるかに優れており、reiserfsは小規模なIOでもはるかに優れています。


1

NFSを介して小さなファイルの大きなディレクトリツリーを転送し、サーバーにログインできるようにする場合は、次のように、クライアントで自動的に抽出されるtarファイルを作成するのが最善の方法です。

tar c mydirectory | ssh user @ host tar -xf--C destdir

このようにして、単一の「ファイル」のみがネットワークを介して転送され、ホスト上にすべてのファイルがすぐに存在します。


0

Evanの答えに追加するだけで、コピーする各ファイルのメタデータ(ディレクトリエントリなど)を作成するためのオーバーヘッドもすべて発生します。


0

Chrisの回答と同様の解決策は、ファイルを定期的にクライアントにrsyncすることです。双方向の変更を行う場合は、unisonを使用することもできます。


0

問題は、共有がsyncオプション(デフォルト)でエクスポートされることです。async書き込みを大幅に高速化するために使用します。nfs.sourceforge.net/nfs-howto/ar01s05.htmlを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.