2017-10-09 106 views
2

我的驅動器上存在碎片問題。我有一個程序在不同文件夾中生成超過50000個文件,每個文件隨着時間的推移而增長。每個文件的大小約爲500MB,我需要快速讀取這些文件。 我面臨的問題是,每個文件將被分散在驅動器上,碎片整理將花費4周時間。防止文件碎片

我聽說過一個文件系統會傳播驅動器上的每個文件,以便每個文件之間的差距是相同的。我在網上搜索那個文件系統,但是我找不到任何東西。

我的程序是用Java編寫的,也許有一種方法可以在驅動器上的特定字節位置上設置文件的開頭。

如果有人能幫我解決這個問題,我會很高興。

+4

對於使用Java,您無能爲力。實際上Java是爲了讓程序員遠離這種依賴系統的東西。 –

回答

1

我聽說過一個文件系統,它將傳播每個文件在驅動器上,以便每個文件之間的差距將是相同的sice。我在網上搜索那個文件系統,但是我找不到任何東西。

最有可能你並沒有,因爲它不存在...

但我們有RAID系統(廉價磁盤的快速陣列)可以緩解你的痛苦......

0

爲蒂莫西說,你不能通過使用Java來達到這個水平。

雖然我沒有聽說過這個文件系統,但它並沒有太多的邏輯。

也許,在存儲文本的情況下,可以使用NoSQL數據庫(如MongoDB)以二進制大小存儲數據。可能你會得到很好的速度,並且Java連接器很容易使用。

0

使用像ext4這樣的Linux文件系統,其中磁盤碎片非常低,但也要確保有足夠的磁盤空間,否則會發生碎片。

0

我也不知道這樣做的文件系統。不過,我有一些可能有用的信息 -

如果您使用的是SSD,那麼碎片對於讀取性能的原因就不那麼重要了。 SSD以塊的形式存儲數據 - NAND閃存頁面,例如16 KB。由於使用了磨損均衡算法,這些數據總是以分散的順序存儲。這與硬盤在實踐中的工作方式非常不同。 SSD上的頁面也以非常並行的方式訪問。因此,使用SSD時,碎片對讀取性能的影響要小得多。碎片化對於寫入/刪除仍然會有一些懲罰。如Timothy所述,RAID也可以提高讀取性能。