GetNAS Logo

玩转 FreeNAS 你需要了解 ZFS 文件系统

2015-1-17 23:29 Herald 存储管理 13,370

ZFS 是一个革命性的文件系统,它从根本上改变了文件系统的管理方式,并具有目前面市的其他任何文件系统所没有的功能和优点。ZFS 强健可靠、可伸缩、易于管理。FreeNAS 引入 OpenZFS 作为其默认的文件系统,且绝大多数功能都与 ZFS 文件系统有着直接或间接的关联。想玩转 FreeNAS 系统,必须先了解 ZFS 文件系统。

openzfs-trans

ZFS 最初由 Sun 公司为 Solaris 10 操作系统开发的文件系统,作为 OpenSolaris 开源计划的一部分,ZFS 于 2005 年 11 月发布,被 Sun 称为是终极文件系统,经历了 10 年的活跃开发。Sun 被 Oracle 收购以后,为了能够继续提供开源版本,原来负责开发 ZFS 文件系统的几个工程师建立了 OpenZFS 开源项目。为了与 Oracle ZFS 版本号的形式做出区分,OpenZFS 采用了“功能标志”(feature flags),即用独特的名字来标记功能。FreeNAS® 系统就是采用开源的 OpenZFS 文件系统,并且每一个新版本都包含 OpenZFS 最新版的“功能标志”和漏洞补丁。

ZFS 池存储

ZFS 使用存储池的概念来管理物理存储。以前,文件系统是在单个物理设备的基础上构造的。为了利用多个设备并提供数据冗余,ZFS 引入了卷管理器的概念,以便于在不修改文件系统的情况下即可利用多个设备。

ZFS 将存储设备聚集到存储池中,而不是强制要求创建虚拟卷。文件系统不再仅限于单个存储设备,从而可与存储池中的所有文件系统共享磁盘空间。与传统的类 Unix 文件系统不同,在创建 ZFS 文件系统时无需指定分区的大小,因为 ZFS 会根据需要自动的使用存储设备上的可用空间。添加新存储器后,无需执行其他操作,存储池中的所有文件系统可立即使用所增加的磁盘空间。

事务性

ZFS 是事务性文件系统,这意味着文件系统状态在磁盘上始终是一致的。传统文件系统会直接覆写数据,如果系统断电,则会使文件系统处于不一致状态。以前,此问题是通过使用 fsck 修复工具来解决的,此命令负责检查并验证文件系统状态,并尝试在操作过程中修复不一致性。这种文件系统的不一致问题曾给管理员造成巨大困扰,fsck 命令并不能保证解决所有问题。

对于事务性文件系统,数据是使用 Copy-On-Write(写时复制)技术进行管理的 。数据永远不会被覆写,且所有操作序列会全部被提交或全部被忽略。因此,文件系统绝对不会因意外断电或系统崩溃而被损坏。尽管在断电发生时写入的数据可能会丢失,但文件系统本身将始终是一致的。

校验和与自我修复数据

ZFS 文件系统上的所有数据和元数据,均按用户指定的校验和算法进行验证。传统的文件系统,某些故障可能导致数据不正确但却没有校验和错误,比如,会向错误位置写入完整的数据块。ZFS 校验和的存储方式可确保检测到这些故障并可以正常地从其中进行恢复。所有校验和验证与数据恢复都是在文件系统层执行的,并且对应用程序是透明的。

此外,ZFS 还提供自我修复数据。ZFS 支持存储池具有各种级别的数据冗余性。检测到坏的数据块时,ZFS 会从另一个冗余副本中提取正确的数据,而且会用正确的数据替换错误的数据。

支持实时数据压缩

在数据块写入磁盘时会进行压缩。当访问一个被压缩的数据块时,它会被自动解压。因为压缩发生在数据块层面,而不是文件层面,因此所有应用程序都可以透明的访问被压缩的数据。从 FreeNAS 9.2.1 版本开始,系统默认采用 LZ4 压缩算法。

ZFS 快照

ZFS 提供了低开销的瞬时快照,可以快速而轻松地为存储池、数据集或虚拟磁盘创建快照。得益于COW(写时复制)技术,创建的第一个快照不会占用存储池中的空间。当数据集或虚拟磁盘中的数据发生变化时,快照通过继续引用旧数据来占用磁盘空间。因此,快照可防止将数据释放回池中。

ZFS 引导环境帮助从失败的升级中恢复

从 FreeNAS 9.3 开始,在系统更新或升级前,会自动为操作系统数据集创建一个快照,如果更新或导入配置文件时操作失败,可以重启系统,在 Grub 菜单中选择之前的引导环境,即可将系统恢复到发生失败操作之前的状态。

ZFS 提供了高速读写缓存

关于 ZFS 高速缓存设备 L2ARC 以及 ZIL 的详情,请阅读本站另外一篇文章《ZFS 高速缓存:L2ARC 和 ZIL》。

本文为GetNAS.com原创,版权归上海炬树信息科技有限公司所有,未经书面授权禁止转载。

授权转载请注明来源:http://www.getnas.com/2015/01/242.html

分享按钮