防止文件碎片

时间:2017-10-09 11:56:58

标签: java file fragmentation

我的驱动器碎片问题。我有一个程序,在不同的文件夹中生成超过50000个文件,每个文件随着时间的推移而增长。每个文件的大小约为500MB,我需要快速读取文件。 我面临的问题是每个文件都会分布在驱动器上,碎片整理需要4周时间。

我听说过一个文件系统会将每个文件传播到驱动器上,这样每个文件之间的差距都是相同的。我在互联网上搜索了那个文件系统,但我找不到任何东西。

我的程序是用Java编写的,也许有一种方法可以在驱动器上的特定字节位置设置文件的开头。

如果有人可以帮我解决这个问题,我会很高兴。

4 个答案:

答案 0 :(得分:1)

  

我听说过一个文件系统会将每个文件传播到驱动器上,这样每个文件之间的间隙就会是同一个。我在互联网上搜索了那个文件系统,但我没找到任何东西。

很可能你没有,因为它不存在......

但我们有RAID系统(廉价磁盘快速阵列),可以减轻您的痛苦......

答案 1 :(得分:0)

正如蒂莫西所说,你不能通过使用Java来达到这个水平。

我既没有听说过那个文件系统,也没有太多的逻辑。

也许,在存储文本的情况下,您可以使用以二进制大小存储数据的NoSQL数据库(如MongoDB)。可能你会获得很好的速度,Java连接器也很容易使用。

答案 2 :(得分:0)

使用像ext4这样的Linux文件系统,其中磁盘碎片非常低,但也要确保你有足够的磁盘空间,否则会发生碎片。

答案 3 :(得分:0)

我也不知道这样做的文件系统。不过我有一些可能有帮助的信息 -

如果你使用的是SSD,那么对于阅读性能的原因,碎片就不那么重要了。 SSD以块的形式存储数据 - 例如,NAND闪存页面为16 KB。由于使用了耗损均衡算法,它们总是以分散的顺序存储。这与硬盘在实践中的工作方式非常不同。 SSD上的页面也以非常平行的方式访问。因此,碎片对SSD的读取性能的影响要小得多。对于写入/删除,碎片仍会有一些惩罚。

如蒂莫西提到的那样,RAID还可以提高读取性能。