发布 OpenZFS 2.4.0,Linux 和 FreeBSD 的 ZFS 实现

经过 11 个月的开发,适用于 Linux 和 FreeBSD 的 ZFS 文件系统 OpenZFS 2.4.0 正式发布。该项目最初名为“Linux 上的 ZFS”,专注于开发 Linux 内核模块。在与 FreeBSD 代码合并后,它被公认为 OpenZFS 的主要实现,并更名为 OpenZFS。

OpenZFS 已经在 Linux 内核 4.18 到 6.18 以及从 13.3 开始的所有 FreeBSD 分支上进行了测试。该代码是根据免费的 CDDL 许可证分发的。 OpenZFS 已在 FreeBSD 中使用,并包含在 Debian、Ubuntu、Gentoo、NixOS 和 ALT Linux 发行版中。新版本的软件包很快就会为主要的 Linux 发行版准备,包括 Debian、Ubuntu、Fedora、RHEL/CentOS。

OpenZFS 提供与文件系统和卷管理器相关的 ZFS 组件的实现。实现的组件:SPA(存储池分配器)、DMU(数据管理单元)、ZVOL(ZFS 模拟卷)和 ZPL(ZFS POSIX 层)。该项目还允许将 ZFS 用作 Lustre 集群文件系统的后端。 OpenZFS 的工作基于原始 ZFS 代码,从 OpenSolaris 项目导入,并通过 Illumos 社区的改进和修复进行了扩展。该项目是在利弗莫尔国家实验室员工的参与下根据与美国能源部签订的合同开发的。

该代码是在免费的 CDDL 许可证下分发的,该许可证与 GPLv2 不兼容,不允许将 OpenZFS 集成到 Linux 内核的主分支中,因为在 GPLv2 和 CDDL 许可证下混合代码是不可接受的。为了避免许可不兼容,决定在 CDDL 许可下将整个 Linux 产品作为单独加载的模块分发,与内核分开提供。 OpenZFS 代码库的稳定性经评估与其他 Linux FS 相当。

主要变化:

  • 现已实现为用户、用户组和项目设置默认配额的功能。在之前的版本中,配额只能针对每个用户 ID 单独设置。新版本现在允许您设置一个默认值,当未为特定用户设置配额时,将应用该默认值。
  • 增加了从直接 I/O 模式 (O_DIRECT, Direct I/O) 回退到轻量级非缓存 I/O 机制的功能,用于处理未与内存页边界对齐的请求,这些请求在直接 I/O 中不受支持。
  • 本文提出了一种新的统一算法来限制写入操作和块放置的速度,该算法通过聚合多个写入操作并使用更大的连续空闲区域来减少虚拟设备 (vdev) 的碎片化,而不是将单个写入操作的结果放置在较小的空闲区域中。
  • 通过在 AES-GCM 算法实现中使用 AVX2 指令,加密性能得到了提升。测试表明,速度提升高达 80%。
  • ZIL(ZFS意图日志)块现在不仅可以放置在普通vdev或单独的SLOG设备上,还可以放置在专用vdev上。如果一个普通vdev关联一个硬盘,而一个专用vdev关联一个SSD,则此更改可避免数据写入SSD而关联的ZIL块写入硬盘的情况,从而避免不必要的延迟。
  • 现在可以为分区(ZVOL)设置 special_small_blocks 属性,而不仅仅是文件系统,从而允许在单独的专用 vdev(例如 SSD)上分配小块。
  • 添加了重写模式“zfs rewrite -P”,该模式尽可能保持逻辑创建时间不变,从而可以区分简单地移动到池中的块和用户实际修改的块。
  • “zpool trim”、“zpool scrub”和“zpool initialize”命令现在有了“-a”(--all)选项,允许一次性对所有导入的池运行这些命令。
  • 添加了“zpool scrub -S -E”命令,用于对指定时间间隔内的数据执行校验和检查。
  • 对去重过程进行了新的优化。

来源: opennet.ru

添加评论