现代文件系统中的碎片

时间:2016-12-17 21:36:56

标签: file linux-kernel operating-system filesystems

我正在修补Pintos OS文件系统并且想知道:

现代文件系统如何处理碎片问题,包括内部,外部和数据?

2 个答案:

答案 0 :(得分:1)

大多数文件系统确实有办法处理碎片。然而,我将描述通常不太复杂的文件系统的情况。

对于 Ext2 ,对于每个文件,有12个直接块指针指向包含文件的块。如果它们还不够,则会有一个指向block_size / 4块的单个间接块。如果它们仍然不够,则存在双重间接块,指向block_size / 4单个间接块。如果还不够,则会有一个三重间接块,指向block_size / 4个双重间接块。这样,文件系统允许在块边界进行分段。

对于 ISO 9660 ,这是CD和DVD的常用文件系统,文件系统不支持碎片。但是,可以使用多个连续目录记录,以便将大(超过2G / 4G,最大可描述文件大小)文件拆分为可描述文件。这可能会导致碎片化。

对于 FAT ,文件分配表描述磁盘上所有数据集群的位置和状态,以便允许分段。因此,在读取下一个集群时,驱动程序会在文件分配表中查找以查找下一个集群的编号。

答案 1 :(得分:1)

好的,所以你感兴趣的是文件碎片。

答案是它完全取决于文件系统和操作系统。在传统的太监文件系统的情况下,磁盘本质上是碎片化的。没有任何连续文件的概念。文件存储在已更改的数据块中。这就是分区的分页和太监上的大多数数据库系统使用分区的原因。

"硬盘"允许连续文件以不同方式管理它们的文件系统。一个文件由一个或多个"范围组成。"如果初始范围被填满,文件系统管理器将创建一个新的范围并链接到它。在某些系统中,有许多文件创建选项。可以指定文件的初始大小并为后续分配保留空间(即,第一个扩展区的大小和附加扩展区的大小)。

当硬文件系统碎片化时,有不同的方法来处理它。在某些系统中," defragging"正常的方式。是将图像备份到二级存储,然后还原。这可以是正常系统维护过程的一部分。

其他系统使用" defragging"可以作为常规系统计划的一部分运行或手动运行的实用程序。

磁盘碎片问题经常被夸大。如果您有一个具有合理空间的磁盘,那么您实际上不会有太多文件碎片。磁盘碎片 - 是的;但是如果你有足够的可用磁盘空间,这并不是什么大问题。当(1)您没有足够的可用连续磁盘空间或(2)[很可能具有合理的磁盘空间]您有一个不断获取数据的文件时,会发生文件碎片。