Performance

如何分發文件和文件夾以處理大量文件

  • August 19, 2014

我想在我的伺服器上管理大量文件(比如數百萬)。需要將文件保存在兩個或三個級別的文件夾中,以保持每個文件夾中的文件數量較少。另一方面,有很多文件夾來使用 inode 是不好的。

每個文件夾的最佳文件比例是多少?是否有一種理論方法來確定這一點,還是取決於伺服器規格?

與您使用的文件系統相比,伺服器規格可能不是問題。不同的文件系統有不同的方法來儲存目錄數據。這將影響各種尺寸的掃描速度。

另一個重要的考慮因素是文件的生命週期。如果您經常添加和刪除文件,您可能希望葉目錄比原本可能的要小。

您可能想查看 Apache Web 伺服器和 Squid 代理使用的記憶體目錄結構。這些是經過良好測試的記憶體,可以處理相對較高的變化率,並且可以很好地擴展。

編輯:您的問題的答案在很大程度上取決於文件​​的生命週期和訪問模式。這些因素將顯著影響磁碟 I/O 和緩衝記憶體需求。文件數量可能是一個不太重要的因素。

除了選擇的文件系統之外,記憶體、磁碟介面、磁碟數量和 RAID 設置都會影響磁碟訪問性能。性能需要足以滿足要求,並留有餘地。

隨著寫入和刪除的增加,磁碟設置往往變得更加重要。隨著對文件的訪問變得更加隨機,它也可能變得更加重要。這些因素往往會增加對磁碟吞吐量的要求。

增加記憶體通常會使從磁碟緩衝區而不是磁碟訪問文件的可能性更大。這將提高大多數係統的文件訪問性能。訪問許多大文件可能會導致磁碟記憶體變差。

對於我使用過的大多數係統,文件被訪問的可能性與上次訪問的時間有關。最近訪問的文件越有可能再次被訪問。在這些情況下,散列算法在優化檢索方面往往很重要。如果文件訪問確實是隨機的,那麼這就不那麼重要了。

刪除文件所需的磁碟 I/O 可能比添加文件要高得多。許多系統在從大型目錄中刪除大量文件時存在重大問題。文件添加和刪除率越高,這變得越重要。在考慮這些因素時,文件生命週期是一個重要因素。

備份是另一個問題,可能需要安排好備份,以免導致磁碟緩衝問題。較新的系統允許對 IO 進行優化,因此備份和其他維護程序對應用程序的影響較小。

引用自:https://serverfault.com/questions/312768