web-dev-qa-db-ja.com

NFS-小さなファイルでパフォーマンスが非常に遅い(CIFSでも同様)

2つのdebianストレッチマシン間でNFSを使用するとパフォーマンスが非常に悪くなり、解決策が見つかりません。マウント時のオプションとして、エクスポートファイルのサーバー側でrsyncを使用し、クライアント側でtcp、hard、intr、rsize = 32768、wsize = 32768を使用しています。どちらのサーバーも、Hyper Vで実行され、同じ内部ネットワークスイッチを共有するVMです。

大きなファイルを使用する場合、Performaceは許容されますが、rsyncのパフォーマンスは非常に低くなります。 tarファイル(サイズ2 GB)をコピーするには数秒かかり、同じ宛先フォルダーに同じtarファイルを抽出するには数分かかります。特別なオプションなしのtar、tar xvfのみ。

編集する

私は4 TB Western Digital WD40EFRX SATAドライブを使用しています。これらの4つのドライブは、Hyper-Vに直接割り当てられていますVM物理ディスクとして。これらの4つのディスクは、 Debian Stretch NFSサーバーでRAID 5 ext4ファイルシステムに作成しました。使用しているテストファイルは、サイズが異なる40.000ファイルで、合計2 GBを追加しています(ほとんどの場合、サイズの小さいファイル、画像、テキスト、いくつかのjarファイル)。

両方のサーバーがIntel I211ギガビットネットワークアダプターに接続された同じHyper-V外部仮想スイッチを共有している

NFSクライアントからNFSサーバーへのpingサンプル:

PING xyzserver(192.168.1.49)56(84)バイトのデータ。 xyzserverから64バイト(192.168.1.49):icmp_seq = 1 ttl = 64 time = 41.2 ms
xyzserver(192.168.1.49)からの64バイト:icmp_seq = 2 ttl = 64 time = 5.48 ms
xyzserver(192.168.1.49)からの64バイト:icmp_seq = 3 ttl = 64 time = 29.7 ms
xyzserverから64バイト(192.168.1.49):icmp_seq = 4 ttl = 64 time = 64.2 ms
xyzserverから64バイト(192.168.1.49):icmp_seq = 5 ttl = 64 time = 43.0 ms
xyzserverから64バイト(192.168.1.49):icmp_seq = 6 ttl = 64 time = 11.5 ms
xyzserverから64バイト(192.168.1.49):icmp_seq = 7 ttl = 64 time = 29.4 ms

EDIT2

Debian 9とは関係がないと思います。また、NFSだけではありません。 WindowsマシンとCIFSでもテストしましたが、パフォーマンスはほぼ同じです。

大きなファイル(特にNFSを使用)を使用する場合のパフォーマンスは良好ですが、小さなファイル(ソースコードなど)を使用すると、非常に遅くなる可能性があります(1 MB /秒未満でも)。

私が何を間違っているのでしょうか? (古い質問)

NFSとCIFSのどちらも使用しないことを検討しています。

適切なパフォーマンスを得るために何ができるかについてのアイデアはありますか? (新しい質問)

高速サーバーを備えた高速RAID5ディスクサブシステムがあり、同じサーバーに2つのVMがあることはばかげているように見えますが、共有ファイルシステムのファイルをrsyncまたはuntarする方法がまともな速度ではありません。

私が使用できるものの提案はありますか? (ハードウェア、ソフトウェア)

2
LincolnP

これらの問題に対する解決策は見つかりませんでした。Hyper-VでのCIFSおよびNFSのパフォーマンスの問題。

私たちはついにPROXMOXへの移行を決定し、すべてが非常にうまく機能しています。なぜだかわかりませんが、Debianをベースにしているため、おそらくDebianのProxmox仮想化は、Hyper-Vよりもはるかに効率的です。

0
LincolnP