ZFS 是一个先进的文件系统,旨在解决以前存储子系统软件中的主要问题。

ZFS 最初由 Sun™ 公司开发,正在进行的开放源码的 ZFS 开发已经转移到 OpenZFS 项目

ZFS 有三个主要的设计目标:

  • 数据完整性。所有的数据都包括数据 checksum。ZFS 计算校验和并将其与数据一起写入。当以后读取该数据时,ZFS 重新计算校验和。如果校验和不匹配,意味着检测到一个或多个数据错误,ZFS 将尝试在同位、镜像或同位块可用时自动纠正错误。

  • 池化存储:将物理存储设备添加到一个池中,并从该共享池中分配存储空间。空间对所有文件系统和卷都是可用的,并通过向池中添加新的存储设备而增加。

  • 性能:缓存机制能提供更高的性能。ARC 是一个先进的基于内存的读取缓存。ZFS 提供一个带有 L2ARC 的基于磁盘的第二级读缓存,以及一个名为 ZIL 的基于磁盘的同步写缓存。

完整的功能和术语清单见 ZFS 功能和术语

20.1. 什么使 ZFS 与众不同

ZFS 不仅仅是一个文件系统,它与传统的文件系统有着本质上的区别。将卷管理器和文件系统这两个传统的独立角色结合起来,为 ZFS 提供独特的优势。现在文件系统知道磁盘的底层结构。传统的文件系统每次只能单独存在于一个磁盘上。如果有两个磁盘,那么就必须创建两个独立的文件系统。可通过传统的硬件 RAID 配置避免这个问题,它为操作系统提供一个由物理磁盘提供的空间组成的单一逻辑磁盘,操作系统在上面放置一个文件系统。即使是像 GEOM 提供的软件 RAID 解决方案,在 RAID 上面的 UFS 文件系统也认为它在处理一个单一的设备。ZFS 的卷管理器和文件系统的结合解决这个问题,并允许创建的文件系统都共享一个可用的存储池。ZFS 对物理磁盘布局的认识的一大优势是,当向池中添加额外的磁盘时,现有的文件系统会自动增大。使这些新的空间成为文件系统的可用空间。ZFS 还可以对每个文件系统应用不同的属性。这使得创建独立的文件系统和数据集而不是单一的单体文件系统会更加实用。