据我的理解,hole可能作为元数据保存在inode中,但实际的磁盘没有填充空的零。
有人可以用现实生活中的例子来解释一下,文件中的漏洞是否有用?
孔是否与软预分配相同? 从磁盘使用的angular度来看,即使没有使用实际的磁盘空间,但该空间也不适用于其他进程。
带孔的文件通常被称为稀疏文件。
当一个程序需要访问广泛的地址(偏移量),但不太可能触及所有潜在的块时,它们非常有用。 虚拟化产品通常使用这种方式来存储虚拟磁盘。 假设你使用一个20 GB的磁盘来配置一个虚拟机,但是它不会很快的被数据充满。 创建一个20 GB的稀疏文件要快得多,只需要在开始时使用几个磁盘块,然后让VM创建文件系统并以低速存储文件。
稀疏文件与预分配相反,它们是所谓的精简配置,也可能被称为磁盘过度分配。 这允许创建比实际硬件支持更多的“虚拟磁盘空间”,并且仅在需要时添加更多磁盘才能增长文件系统。
从他们减少磁盘空间的使用(他们提供更多的空间)这个意义上讲,空洞是“有用的”。 他们不能用于任何其他意义。 当文件系统包含大块零的稀疏文件时,作为文件系统表示的一部分的空洞的存在是“有用的”。
洞与预先分配没有任何关系。 在文件实际拥有该数据之前,预先分配使磁盘上的空间可用于文件中的数据。 孔是数据的表示,特别是由零组成的块。