什么是 ZFOD 范围?

什么是 ZFOD 范围?

我对它的理解是它的“按需零填充”程度。这意味着文件系统不会向文件分配写入数据,但它只是为我们提供 ZFOD 范围,当应用程序尝试读/写数据时,它只是填充数据零,然后执行读/写 [来源]。

我的问题是:

  1. 我的上述理解正确吗?
  2. 如果它只是不分配数据,是否意味着它是一个漏洞?

答案1

您必须考虑两件事:

  • 是否为数据分配了空间,以及
  • 是否有实际写入的数据。

如果文件没有数据并且没有为其分配空间,则在尝试读取该文件时会收到文件结束指示。如果写入,文件系统必须在写入时分配空间:换句话说,如果没有可用磁盘空间可供分配,则写入操作可能会失败并出现 ENOSPC 错误。

稀疏文件中的漏洞没有为其分配空间,如果您尝试读取文件的该部分,您将得到全为零的数据。如果写入文件的该部分,文件系统必须在写入操作时再次为其分配空间,因此如果磁盘已满,写入操作可能会失败并出现 ENOSPC 错误。

ZFOD 盘区名义上已分配给文件,但尚未向其中写入数据。如果你读了它,你会得到全零;如果写入,则空间已分配,因此不存在 ENOSPC 错误情况的风险。

最后,还有一个正常的数据范围:如果您读取它,您将返回实际数据,如果您写入它,您将用新数据替换现有数据。

换句话说,ZFOD 范围是针对应用程序可能分配大文件、不会立即使用所有文件、并且仍然需要保证空间在需要时可用的情况的优化。对于 SSD 存储,从块中擦除现有数据是最慢的操作,因此 ZFOD 扩展区允许系统通过最初将其分配为 ZFOD 扩展区来快速创建一个大数据区:然后文件系统可以按需进行实际的擦除和填充零实际使用的每个块。

如果 SSD 存储用于存储虚拟机磁盘映像之类的内容,ZFOD 扩展可以帮助最大限度地减少实际磁盘块需要擦除的次数,从而提高 SSD 的使用寿命。

相关内容