Hard-Disk

填充大型 ext4 數據驅動器的建議最大百分比

  • April 17, 2018

ext 文件系統的預設保留塊百分比是 5%。在 4TB 數據驅動器上,這是 200GB,這對我來說似乎太大了。

顯然這可以使用 tune2fs 進行調整:

tune2fs -m <reserved percentage> <device>

但是 tune2fs 的手冊頁指出,這些保留塊的原因之一是避免碎片。

因此,鑑於以下情況(我試圖具體化以避免意見大相徑庭):

  • ~4TB 硬碟
  • 用於儲存大文件(全部>500mb)
  • 一旦滿了,很少寫入(可能一個月一次,1-5個文件被替換)
  • 僅數據(無作業系統或從驅動器執行的應用程序)
  • 中等閱讀量(每週約 20tb,每 3 個月閱讀整捲)
  • 硬碟磨損令人擔憂,為了節省 20GB 而殺死硬碟並不是理想的結果(這甚至值得關注嗎?)

在不導致(從性能和/或硬碟磨損的角度來看)碎片的情況下,可以填充驅動器的最大百分比是多少?

將大數據硬碟填充到高百分比和/或將保留塊計數設置為 0.1% 是否還有其他問題?

碎片化的最大問題是可用空間碎片化,這意味著當您的文件系統已滿並且不再有大塊可用空間時,您的文件系統性能就會下降。每個新文件一次只能分配一小塊空間,因此非常碎片化。即使刪除了其他文件,之前寫入的文件也會飛濺到整個磁碟上,導致新文件再次碎片化。

在您上面描述的使用案例中(約 500MB 文件,相對較少的覆蓋或正在寫入的新文件,舊的約 500MB 文件被定期刪除,我假設某種影片儲存系統)您將獲得相對較少的碎片 - 假設您的文件大小保持相對恆定。如果您的寫入是單執行緒的,則尤其如此,因為多個寫入執行緒不會競爭少量的可用空間並交錯它們的塊分配。對於從磁碟中刪除的每個舊文件,您將獲得幾百 MB 的連續空間(假設文件一開始沒有碎片),並且會再次被填滿。

如果您確實有多個並發寫入器,那麼使用fallocate()為每個文件保留大塊空間(並truncate()在最後釋放任何剩餘空間)也將避免碎片。即使沒有這個,ext4 將嘗試在寫入文件時(在記憶體中)為文件保留大約 8MB 的空間,以避免最嚴重的碎片。

我建議您至少保留一個不錯的文件大小的倍數(例如 16GB 或更多),這樣您就不會消耗掉所有的點點滴滴的空閒塊並引入永久的可用空間碎片.

引用自:https://unix.stackexchange.com/questions/327024