2017-10-09 102 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也可以提高读取性能。