Windows ファイル共有上のフォルダーあたりの最大 (実用) ファイル数は?

Windows ファイル共有上のフォルダーあたりの最大 (実用) ファイル数は?

私は、Windows Server 2003 SP2 ファイル共有にファイルを保存する内部アプリケーションをサポートしています。現在、ファイルを保存するように構成されているため、1 つのフォルダーには約 116,000 個のファイルが含まれています (別のフォルダーには約 65,000 個、その他のフォルダーにはそれぞれより少ない数ですが、それでも数千個あります)。アプリケーションによるファイルの書き込み速度が非常に遅くなっています。

ファイル レイアウトは現状のまま構成可能なので、より良いプランを考え出そうとしています。SMB がフォルダーごとにどのくらいのアイテムを処理できるのか、使用できなくなるまでの経験がある方はいらっしゃいますか? この場合、かなり長い間速度が遅くなっていましたが、フォルダーが 100,000 ファイルを超えるまで、耐えられなくなりました。

答え1

これは、ファイル数やディレクトリを列挙するために使用されるアルゴリズムのスケーリングよりも、帯域幅と待ち時間 (特に待ち時間) に依存します。つまり、「魔法の数字」はないということです。

SMBプロトコルは恐ろしいです非常に多くの往復を必要とするため、ファイル数は2倍の遅延で多くのたとえば、2 倍以上の速度になります。

偶然、LAN、ネットワーク インフラストラクチャのレイテンシ、およびサーバー コンピューターの IO サブシステムのレイテンシのベンチマークを実行しました。明らかに「マジック ナンバー」を見つけました。パフォーマンスが向上するまで、そのディレクトリを削減します。他に方法はありません。

答え2

Evan さんの言う通り、魔法の数字はありません。アプリとサーバーによって異なります。Server 2008 にアップグレードすると改善されるでしょう。クライアントが Vista 以上であれば、SMBv2 を使用しているので、私ならまずこれを実行したいと思います。500,000 個のファイルを含む共有があり、ブラウズがひどいのですが、ユーザーは提供された直接パスのみを使用するので、問題なく動作します。同じサーバーに 100,000 個のファイルを含む共有がありますが、ユーザーには問題はありません。

答え3

部分的に関連:

「最終アクセスの更新」を停止

NTFS ドライブ上のフォルダにアクセスするたびに、Windows XP はそのフォルダとすべてのサブフォルダを最終アクセス日のタイムスタンプで更新します。場合によっては、これによって Windows のパフォーマンスが低下することがあります。

これを変更するには、REGEDIT(スタート -> 実行 -> 'regedit')を開き、HKEY_LOCAL_MACHINES\System\CurrentControlSet\Control\FileSystemに移動します。

「NtfsDisableLastAccessUpdate」という新しい DWORD 値 (右クリック -> 新規 -> DDWORD 値) を作成し、値を「1」に設定します。

そして

不要な命名規則を無効にする

作成された各ファイルに対して、Windows XP は MSDOS との互換性のために 1 つの追加の名前を使用します。8 文字の名前の後に「.」が続き、その後に 3 文字の拡張子が続きます。DOS 専用のソフトウェアを使用するつもりがない場合は、これはメモリの無駄です。

これを変更するには、REGEDITを開いて
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystemに移動します。

NtfsDisable8dot3NameCreationキーの値を「1」に変更します。

http://basiccoms.blogspot.com/2008/08/windows-xp-パフォーマンス調整ガイド.html

関連情報