来自 FreeBSD UNIX (高尔文),
假设数据以1 KB字节的传输大小写入文件,并且 文件系统的块和片段大小为4 KB和512字节。文件 系统将分配1 KB片段以包含第一次传输的数据。 下一次传输将导致分配新的2 KB片段。数据 从原始片段必须复制到这个新片段,然后 通过第二次1 KB转移。分配例程确实试图找到 紧跟现有片段的磁盘上所需的空间 不需要复制,但如果不能复制,最多可以复制七份 在片段成为块之前需要。已经制定了规定 程序发现文件的块大小,以便传输该大小 可以制作,以避免碎片重新复制。
你能解释一下作者在这里想说的话吗?为什么不应该分配4 kB块来写入然后分配512字节片段?作者正在讨论UNIX中的通用文件系统。
答案 0 :(得分:0)
FreeBSD文件系统显然正在做一些中等聪明的特殊处理,以防止“小文件占用太多空间,因为每个人使用磁盘块”问题,这个问题曾经在磁盘变大后困扰unix盒,但是文件系统仍然生活在80年代。
这很好。
但是如果你把一个大到大的文件写成小块,你就可以欺骗文件系统以浪费的方式使用“小文件”黑客。
这很糟糕。而且很慢。在坚固的“磁盘”设备上很难。
如果您使用至少与磁盘块一样大的chuck中写入大到大的文件,则不会调用“小文件”黑客。这些问题都不会发生。
这样更好。