Performance

配置 NTFS 文件系統以提高性能

  • April 17, 2020

我們有一個應用程序計劃儲存大約 1.1TB 的 XML 文件,平均大小為 8.5kb。

這些代表了 18 個月的滾動數據,每天創建大約 200,000 個新文件。

每個文件只會被寫入一次,然後在接下來的 18 個月內有 3% 的機會被讀取少量(<10)次。

哪些 NTFS 選項對我們開放,有助於提高性能?

我們列表中的目前列表是:

編輯

關於碎片:我們計劃使用 2k 集群大小來提高磁碟空間使用效率。每個文件將只被寫入一次(即沒有文件編輯)。文件將在 18 個月後逐日刪除。

因此,我們不認為碎片化將是一個重大問題。

我還要補充:

關閉磁碟碎片整理。將塊大小更改為 16kb,以便將每個文件寫入單個塊。

合理的:

您希望每天在 200,000 個文件中寫入 1.7GB 的數據。假設這些文件是在一天 24 小時內寫入的,這意味著每秒大約 3 個文件。對於單個 SATA 磁碟來說,這似乎不是一個重大問題,所以我猜你還有其他問題以及磁碟性能。

(即您是否有足夠的記憶體?或者您是否也將記憶體分頁到磁碟?)

然而

  1. 預設情況下,Windows NTFS 文件系統會嘗試在後台對文件系統進行碎片整理。在對磁碟進行碎片整理時,磁碟碎片整理會降低性能。由於性能似乎已經是一個問題,這只會讓你的事情變得更糟。
  2. 在寫入大文件時使用小集群大小和 IO 性能之間存在平衡。文件和文件分配表不會在磁碟上的同一扇區上,因此在寫入文件時必須分配塊將導致磁碟磁頭必須不斷移動。使用能夠在一個集群中儲存 95% 的文件的集群大小將提高 IO 寫入性能。
  3. 正如其他人所指出的,使用 2k 的小集群大小會隨著時間的推移導致碎片化。可以這樣想,在最初的 18 個月中,您將文件寫入乾淨的空磁碟,但作業系統不知道一旦關閉,將不會向每個文件添加更多數據,因此它一直在保留一些可用塊結束每個文件,以防該文件稍後擴展。早在你填滿磁碟之前,你會發現唯一的空閒空間是在其他文件之間的間隙中。不僅如此,當它為你的文件選擇一個間隙時,作業系統不知道你是在寫一個5塊文件還是2塊文件,所以它不能很好地選擇保存文件的位置。

歸根結底,工程就是處理相互衝突的需求,並為這些平衡需求選擇成本最低的解決方案。我的猜測是購買更大的硬碟驅動器可能比購買更快的硬碟驅動器便宜。

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