NFSを介して共有されるFuseblkパーティション内の何百万ものファイルの読み取り速度が遅くなります。

NFSを介して共有されるFuseblkパーティション内の何百万ものファイルの読み取り速度が遅くなります。

私はNFSServer1(RHEL)とNFSClient1(Ubuntu)という2つのLinuxシステムを持っています。

ntfs-3gドライバはNFSServer1にインストールされます。次のコマンドを実行してデバイスパーティションをマウントします ldmtoolNTFSmount -t ntfs-3g -o ro,noatime $devPath $mountPath

注:これらの2つのパーティションは、Windowsダイナミックディスクパーティションを使用して派生/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1します。/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2LDMツール

[root@ROADQAScaleNFS2 ~]# df -Th
Filesystem                                Type      Size  Used Avail Use% Mounted on
/dev/sdc4                                 fuseblk   127G   11G  117G   9% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4
/dev/sdc2                                 fuseblk   450M   13M  438M   3% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1 fuseblk    10G  5.8G  4.3G  58% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2 fuseblk    10G  6.0G  4.1G  60% /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2
[root@ROADQAScaleNFS2 ~]# mount
/dev/sdc4 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/sdc2 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume1 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/mapper/ldm_vol_VishalWDD-Dg0_Volume2 on /monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 type fuseblk (ro,noatime,user_id=0,group_id=0,allow_other,blksize=4096)

これらすべてのパーティションには約1000万のファイルがあります。

これらのマウントされたパーティションは、NFSClient1からNFS共有としてアクセスできます。

[root@NFSClient ~]# mount
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc4 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/sdc2 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume1 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)
10.4.0.5:/monitor/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 on /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 type nfs4 (ro,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.148.66.49,local_lock=none,addr=10.4.0.5)

NFSサーバー上のNFSデーモンスレッドの数は64に設定されています。

fuseblk次に、NFSクライアントで次のコマンドを使用してstatパーティションを実行しますfind

find -H /monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2 -printf '%p|' | xargs -d '|' stat --printf="%F, %i:\t%n\t%.19x\t%.19y\t%.19z\t%.19w\t%s\t%u\t%g\n" \ |$SED -e "s|/monitor1/6f5bd42-e548-4e60-8c5d-4c52360b8dc4/mapper/ldm_vol_VishalWDD-Dg0_Volume2/||g" -e "s|directory,|d/d|g" -e "s|symbolic link,|l/l|g" -e "s|regular file,|r/r|g" -e "s|socket,|h/h|g" \ -e "s|regular empty file,|r/r|g" -e "s|fifo,|p/p|g"

非常に遅いです。 5〜6分間休憩した後、数秒間回復する必要があります。他のすべてのマウントポイントでも同様です。 12時間経っても実行は完了しません。

ext4xfsこれらの遅い動作はデバイスタイプでは観察されません。

テストでNFSServer1で同じfindコマンドを実行してみましたが、かなり高速でした。フル実行プロセスは約40分以内に完了します。ただし、NFSサーバーにアクセスできません。 NFSサーバーチームに、次のような他のインストールオプションを試すように依頼しました。ntfs-3g マニュアルページしかし、それは役に立ちません。

NFSパーティションの読み取りパフォーマンスを向上させる方法がある場合は、fuseblk本当に感謝します。

とても感謝しています!

ベストアンサー1

FUSE はユーザー空間のファイルシステムです。コンテキスト切り替えオーバーヘッドのため、カーネルのファイルシステムほど高速ではありません。find上記のようにファイルシステム集約的な作業を行う必要がある場合のようです。

だから。

  • NTFS3カーネルドライバ(私の記憶が正しい場合はLinux 5.15以降で利用可能)を使用するか、
  • すべてのデータを別のファイルシステムに移動一度(必要に応じてNTFSに同期)
  • 準仮想化されたWindows Server VMを実行してNFS経由でファイルシステムを提供する

個人的には、2番目のオプションを強く好みます。そのファイルシステムにまったく適していないファイルシステムのエントリに永久にアクセスするのはなぜですか?私たちは実際のデータが40GB未満であることを話しています。それは何もありません。

私は、あなたはニードフォースピードチーム。誰かがNFSを介してデータにアクセスするために誰かを雇いました。 NTFSへの直接エクスポートをサポートする理由は、私とは少し異なります。

おすすめ記事