13

据我了解,空洞可能作为 inode 的元数据进行维护,但实际磁盘并未填充空零。

  1. 有人可以用现实生活中的使用示例来解释文件中的哪些漏洞可能有用吗?

  2. 孔与预分配相同吗?从磁盘使用的角度来看,即使没有使用实际的磁盘空间,但该空间也不能用于其他进程。

4

2 回答 2

16

有洞的文件通常被称为稀疏文件。

当程序需要访问广泛的地址(偏移量)但不太可能触及所有潜在块时,它们很有用。虚拟化产品可以使用它来存储虚拟磁盘。假设您配置了一个具有 20 GB 磁盘的虚拟机,但它不会很快充满数据。创建一个 20 GB 的稀疏文件要快得多,该文件在开始时只使用几个磁盘块,然后让 VM 创建文件系统并以低速存储文件。

大型稀疏文件也可以在其某些块为空白(即填充空字节)时减小其大小。执行此操作的稀疏文件感知程序可以,而不是实际写入块,将它们从文件中删除(即在文件中打孔),效果完全相同,因为未分配的块在程序读取时返回零。

稀疏文件与预分配相反,它们被称为精简配置,也可能被称为磁盘过度使用。这允许创建比实际硬件支持更多的“虚拟磁盘空间”,并仅在必要时添加更多磁盘以扩展文件系统。

于 2012-12-21T00:24:45.037 回答
1

空洞是“有用的”,因为它们减少了磁盘空间的使用(它们提供了更多可用空间)。它们在任何其他意义上都不能使用。当一个包含大块零的稀疏文件时,作为文件系统表示的一部分存在漏洞是“有用的”。

孔与预分配没有任何关系。在文件实际拥有数据之前,预分配使磁盘上的空间可用于文件中的数据。孔是数据的表示……特别是仅由零组成的块。

于 2012-12-21T00:12:32.763 回答