
状況: KVM を使用して 3 つの VM をホストする Ubuntu サーバーがあります。ホストだけでなくすべてのゲストは、/var の特定のサブフォルダーにある同じファイルにアクセスする必要があります。そのため、サブフォルダーは NFS 経由でエクスポートされます。問題は、ゲストがホストの半分の速度でしかディレクトリを読み書きできないことです。エクスポート テーブルは次のようになります。
alice@host:~$ cat /etc/exports
/home/videos 192.168.10.0/24(rw,sync,no_root_squash)
ホストの IP は 192.168.10.2、VM の IP は 192.168.10.1{1..3} です。/home/videos は、/var 内の特定のサブフォルダーへのシンボリック リンクです。具体的には、/var/videos/genvids です。
これは VM の fstab からの関連行です:
192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=4096,wsize=4096 0 0
ハードディスクの持続データレートは約 155 MB/秒であり、これは hdparm -tT および dd の出力によって検証されます。
alice@host:~$ dd if=/home/videos/4987_1359358478.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 2.04579 s, 154 MB/s
VM 内から見ると、状況は異なります。
bob@guest:~$ dd if=/mnt/nfs/4959_3184629068.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 4.60858 s, 68.3 MB/
ブロック サイズをファイル システムのページ サイズに合わせても、満足のいく効果はありませんでした。
bob@guest:~$ dd if=/mnt/nfs/4925_1385624470.mp4 of=/dev/null bs=4096 count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 5.77247 s, 71.0 MB/s
NFSのパフォーマンスに関するさまざまなページを参照しましたが、最も関連性の高いのはNFS に関するよくある質問パートBおよびそれぞれの性能調整方法。ほとんどのヒントは適用されません。他のヒントでは結果が改善されませんでした。そこには は スレッド ここディスク パフォーマンスと KVM を扱います。ただし、NFS の側面はカバーされていません。これスレッドはそうしますが、ネットワーク速度は私たちのケースでは制限要因ではないようです。
全体像を示すために、シンボリック リンクが解決され、アクティブなエクスポート オプションがすべて表示されたエクスポート etab の内容を以下に示します。
alice@host:~$ cat /var/lib/nfs/etab
/var/videos/genvids 192.168.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,
no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,
anonuid=65534,anongid=65534)
この文脈で私を悩ませ、理解できないのは、nfsd の procfile 出力です。
alice@host:~$ cat /proc/net/rpc/nfsd
...
th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
...
3 列目以降については、VM 内のディスクから読み取った後、ゼロ以外の値が返されることを期待していました。しかし、nfsstat は、実際に読み取り操作があったことを示しています。
alice@host:~$ nfsstat
...
Server nfs v3:
null getattr ...
9 0% 15106 3% ...
read write ...
411971 95% 118 0% ...
...
したがって、このトピックは非常に複雑なので、他にどこを調べればよいのか、または簡単な解決策があるかどうかを知りたいです。
答え1
結局、問題は予想より簡単に解決できました。サイズそしてサイズVMのfstabのオプションでうまくいきました。対応する行は
192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=32768,wsize=32768 0 0
私にとっては、これが明らかではありませんでした。なぜなら、サイズそしてサイズディスクのブロック サイズ (4096) を満たし、NIC の MTU (9000) を超えないこと。どうやら、この仮定は間違っていました。
注目すべきは、正確な持続ディスク データ レートはファイルによって異なるということです。サイズが 9 GB の 2 つの類似ファイルでは、155 MB/秒 (ファイル 1) から 140 MB/秒 (ファイル 2) のレートが観測されました。そのため、1 つのファイルでデータ レートが低下しても、別のファイルではフル データ レートになる可能性があります。