ZFS 是什么

fanly问答2018-09-07 14:06:44阅读(...)

ZFS是一个企业级的开源文件系统,RAID控制器和卷管理器,用于指导和控制企业级计算系统中数据的放置,存储和检索。它消除了传统文件系统和硬件RAID设备中发现的大多数缺点。

ZFS 是一个企业级的开源文件系统RAID 控制器和卷管理器,用于指导和控制企业级计算系统中数据的放置,存储和检索。具有前所未有的灵活性和对数据完整性的不妥协承诺。它消除了传统文件系统和硬件 RAID 设备中发现的大多数(如果不是全部)缺点。一旦你去 ZFS,你永远不会想回去。ZFS 是由 Sun Microsystems Inc.创建。

openZFS

ZFS 文件系统和卷管理器的特点是数据完整性,高可扩展性和内置存储功能,例如:

  1. 复制 – 制作某物的副本(副本)的过程。
  2. 重复数据删除 – 消除 冗余 数据副本并减少存储 开销的过程。
  3. 压缩 – 表示数据所需 的位数减少。
  4. 快照 – 特定时间点的数据的一组参考标记。
  5. 克隆 – 某事物的相同副本。
  6. 数据保护 – 保护重要信息免受损坏或丢失的过程。

ZFS 的历史

Sun 公司的工程师于 2001 年开始为该公司基于 Unix 的 Solaris 操作系统(OS)开发 ZFS 。2005 年,Sun 在共同开发和分发许可证(CDDL)下发布了 ZFS 源代码,作为开源 OpenSolaris OS 的一部分。开发一个社区,包括来自 Sun 和其他代表厂商,曾在改进开源代码和移植 ZFS 额外的操作系统,包括 FreeBSD 的,Linux 的和 Mac OS X。

包含 ZFS 的 OpenSolaris 开源项目在 Oracle 公司于 2010 年收购 Sun 并注册 ZFS 一词后终止。Oracle 的工程师继续在 Solaris 上增强和添加 ZFS 功能。Oracle 使用其专有的 ZFS 代码作为 Oracle Solaris,Oracle ZFS 存储设备和其他 Oracle 技术的基础。

开发社区基于 OpenSolaris 最终版本中的 ZFS 源代码,启动了一个名为 OpenZFS 的新开源项目。开放社区致力于 OpenZFS 代码的新功能,改进和错误修复。支持 OpenZFS 的操作系统包括 Apple OS X,FreeBSD,illumos(基于 OpenSolaris)和 Linux 变体,如 Debian,Gentoo 和 Ubuntu。OpenZFS 适用于所有 Linux 发行版,但只有一些商业供应商将其作为其发行版的一部分提供。在 OpenZFS 上构建商业产品的公司包括 Cloudscaling,Datto,Delphix,Joyent,Nexenta,SoftNAS 和 Spectra Logic。

ZFS 和 OpenZFS 倾向于吸引需要管理大量数据并确保数据完整性的企业。用户包括科学机构,国家实验室,政府机构,金融公司,电信以及媒体和娱乐公司。

ZFS 最初代表 Zettabyte 文件系统,但 zettabyte 这个词在文件系统的上下文中不再具有任何意义。作为 128 位文件系统,ZFS 有可能扩展到 256 千兆字节的 zettabytes。

ZFS 如何工作

ZFS 旨在在单个服务器上运行,可能有数百个(如果不是数千个)连接的存储驱动器。ZFS 池化可用存储并将所有磁盘作为单个实体进行管理。如果文件系统需要额外容量,则用户可以向池中添加更多存储驱动器。ZFS 具有高度可扩展性,支持较大的文件大小。

每次将数据写入磁盘时,ZFS 都会存储至少两个元数据副本。元数据包括诸如存储数据的磁盘扇区,数据块的大小和一条数据的二进制数字的校验和之类的信息。当用户请求访问文件时,校验和算法会执行计算以验证检索到的数据是否与写入磁盘的原始位匹配。如果校验和检测到不一致,则标记错误数据。在具有镜像存储池或 ZFS 版本 RAID 的系统中,ZFS 可以从其他驱动器检索正确的副本并修复损坏的数据副本。

ZFS 通常被称为写时复制文件系统,尽管 Oracle 将其描述为写入时的重定向。当 ZFS 将数据写入磁盘时,它不会覆盖数据。ZFS 将新块写入磁盘上的不同位置,并更新元数据以指向新写入的块,同时还保留旧版本的数据。

在覆盖原始块之前,真正的写时复制文件系统将在单独的位置中制作数据块的精确副本。在覆盖数据之前,系统需要读取块的先前值。写时复制文件系统需要对每次数据写入进行三次 I / O 操作 – 读取,修改和写入。相比之下,重定向写入系统只需要一个 I / O 操作,从而提高效率和性能。

ZFS 是网络连接存储系统的流行选择,在文件系统之上以及虚拟服务器环境中运行 NFS。另一种常见的部署方案是在 ZFS 之上分层集群文件系统,例如通用并行文件系统(GPFS)或 Lustre,以便扩展到其他服务器节点。OpenStack 用户可以将 ZFS 部署为 Cinder 块存储和 Swift 对象存储的底层文件系统。

ZFS 的主要功能

1、快照和克隆: ZFS 和 OpenZFS 可以高效,快速地制作文件系统的时间点副本,因为系统会保留所有数据副本。快照是文件系统的不可变副本,而克隆可以修改。快照和克隆在 Solaris 上与 ZFS 集成在引导环境中,使用户能够在修补或更新系统时出现任何问题时回滚到快照。ZFS 的另一个潜在好处是作为针对勒索软件的恢复技术。

2、RAID-Z: RAID-Z 允许将相同的数据存储在多个位置,以增强容错能力并提高性能。系统使用存储在系统其他驱动器上的信息重建丢失的驱动器上的数据。与 RAID 5 类似,RAID-Z 在每个驱动器上划分奇偶校验信息,以便即使一个驱动器发生故障也能使存储系统正常运行。但是,对于 RAID-Z,条带化数据是一个完整的块,其大小可变。虽然 RAID-Z 通常与 RAID 5 进行比较,但它会以不同的方式执行某些操作,以解决传统 RAID 的某些长期存在的问题。RAID-Z 地址的一个问题称为写孔效应,由于电源故障或灾难性系统中断,系统无法确定哪些数据或奇偶校验块已写入磁盘。使用传统 RAID 的系统供应商通常通过使用不间断电源或专用硬件来解决问题。

3、RAID-Z2:支持丢失两个存储驱动器,类似于 RAID 6,而 RAID-Z3 可以容忍三个存储设备的丢失。与传统 RAID 一样,用户可以选择按组排列驱动器。例如,设置为 RAID-Z3 的两组六个驱动器的系统可以容忍每组中三个驱动器的丢失。

4、压缩:内联数据压缩是 ZFS 和 OpenZFS 中的内置功能,可减少存储数据所需的位数。ZFS 和 OpenZFS 都支持许多压缩算法。用户可以选择启用或禁用内联压缩。

5、重复数据删除: 内联重复数据删除是 ZFS 和 OpenZFS 中的内置功能,可通过消除冗余数据实现存储效率。ZFS 和 OpenZFS 通过查看块的校验和来查找重复数据,块的大小可能不同。用户可以启用或禁用内联重复数据删除。

6、ZFS 发送/接收: ZFS 和 OpenZFS 使文件系统的快照能够发送到不同的服务器节点,允许用户将数据复制到单独的系统,以便进行备份或数据迁移到云存储。

7、安全性: ZFS 和 OpenZFS 支持委派权限和更细粒度的访问控制列表来管理谁可以执行管理任务。用户可以选择将 ZFS 设置为只读,因此不能更改任何数据。Oracle 支持 Solaris 上的 ZFS 加密。

ZFS 的优点和局限

ZFS 集成了文件系统和卷管理器,因此用户无需获取和学习单独的工具和命令集。ZFS 免费提供丰富的功能集和数据服务,因为它内置于 Oracle 操作系统中。开源 OpenZFS 是免费提供的。可以通过将驱动器添加到存储池来扩展文件系统。传统文件系统需要调整磁盘分区的大小以增加容量,用户通常需要卷管理产品来帮助他们。

与分布式或并行文件系统(如 GPFS 和 Lustre)相比,ZFS 仅限于在单个服务器上运行,后者可以扩展到多个服务器。

ZFS 提供的丰富功能集可以使软件使用和管理变得复杂。诸如集成的 ZFS 校验和算法之类的功能可能需要额外的处理能力并影响性能。

在 Linux 社区中,对于 ZFS 代码和二进制内核模块的重新分发有许多关于许可的意见。例如,Red Hat 认为分发受 CDDL 保护的代码并使用通用公共许可证(GPL)保护的代码是有问题的。相比之下,分发 Ubuntu 的 Canonical 确定它符合 CDDL 和 GPL 许可证的条款。

ZFS 与 OpenZFS

Oracle 的 ZFS 和开源 OpenZFS 源自相同的 ZFS 源代码。在不同的轨道上,Oracle 和开源社区分别添加了扩展并对 ZFS 和 OpenZFS 进行了显着的性能改进。Oracle ZFS 更新是专有的,仅在 Oracle 技术中可用。可以免费获得开源 OpenZFS 代码的更新。

Oracle 自 2010 年以来对 ZFS 所做的增强功能包括:

  • 加密;
  • 跨 OS 压缩数据的持久性支持重新引导在 L2 自适应替换高速缓存(ARC);
  • 可引导的可扩展固件接口标签,支持物理磁盘和大小超过 2 TB 的虚拟磁盘卷;
  • 默认用户和组配额;
  • 池/文件系统监控。

开源社区对 OpenZFS 所做的更新列表包括:

  • 额外的压缩算法;
  • 可恢复发送/接收,允许长时间运行的 ZFS 发送/接收操作从系统中断点重新启动;
  • 压缩发送/接收,允许系统从一个 ZFS 池向另一个 ZFS 池发送压缩数据,而不必在从发送节点移动到目的地时解压缩/重新压缩数据;
  • 压缩 ARC,允许 ZFS 将压缩数据保存在内存中,从而在缓存中启用更大的工作数据集;
  • 最大块大小从 128 KB 增加到 16 MB,以提高处理大型文件时的性能,并在从驱动器故障中恢复时加快数据重建速度。
收藏0个人收藏
走进科技生活方式

评论交流

默认头像请「登录」后参与评论
  1. 加载中..