admin 管理员组

文章数量: 887021


2024年3月5日发(作者:新闻网站网页设计)

ZFS存储池类型:Stripe、Mirror、RAIDZ

使用 ZFS 卷管理器创建 ZFS 存储池时,可以指定存储池的结构(类型),更具体的说就是可以指定存储池所采用的软磁盘阵列的类型。不同类型的磁盘阵列,面向不同的使用场景,性能和可靠性亦是各不相同。下面列出了FreeNAS系统中可以设置的所有 ZFS 存储池类型,以及设置每一种磁盘阵列所要求的最少硬盘数。

Stripe:与 RAID 0 类似,传说中的带条,需要至少一块硬盘。

Mirror:与 RAID 1 类似,磁盘镜像,需要至少两块硬盘。

RAIDZ1:与 RAID 5 类似,一重奇偶校验,需要至少三块硬盘。

RAIDZ2:与 RAID 6 类似,双重奇偶校验,需要至少四块硬盘。

RAIDZ3:三重奇偶校验,独门秘籍,需要至少五块硬盘。

log device (ZIL):高速写缓存设备,需要至少一个专用的存储设备,推荐使用 SSD 固态硬盘。

cache device (L2ARC):高速读缓存设备,需要至少一个专用的存储设备,推荐使用 SSD

固态硬盘。

除去log device (ZIL)和cache device (L2ARC)这两种专用高速缓存设备不谈,在这里列举一下其余类型的性能和可靠性对比。

性能对比

Stripe > Mirror

Stripe > RAIDZ1 > RAIDZ2 > RAIDZ3

数据可靠性

Mirror > Stripe

RAIDZ3 > RAIDZ2 > RAIDZ1 > Stripe

Solaris ZFS 快照和克隆使用指南

zfs快照概述:

快照是文件系统或卷的只读副本。快照几乎可以即时创建,而且最初不占用池中的其他磁盘空间。但是,当活动数据集中的数据发生更改时,快照通过继续引用旧数据占用磁盘空间,从而阻止释放该空间。

ZFS 快照具有以下特征:

■ 可在系统重新引导后存留下来。

■ 理论最大快照数是264。

■ 不使用单独的后备存储。快照直接占用存储池(从中创建这些快照的文件系统所在的存

储池)中的磁盘空间。

■ 递归快照可作为一个原子操作快速创建。要么一起创建快照(一次创建所有快照),要么不创建任何快照。原子快照操作的优点是始终在一个一致的时间捕获快照数据,即使跨后代文件系统也是如此。

无法直接访问卷的快照,但是可以对它们执行克隆、备份、回滚等操作。

创建快照:

这里系统默认使用的文件系统是ZFS而不是UFS:

创建一个文件系统:

向/u01下面写入一些数据:

以上将/platform下的所有文件复制到/u01下。

创建u01的快照:

快照创建成功。

使用快照进行恢复:

下面将/u01下的所有内容删除,然后使用快照恢复:

恢复成功。

创建ZFS克隆:

要创建克隆,请使用zfs clone 命令,指定从中创建克隆的快照以及新文件系统或卷的名称。新文件系统或卷可以位于ZFS 分层结构中的任意位置。新数据集的类型(例如,文件系统或卷)与从中创建克隆的快照的类型相同。不能在原始文件系统快照所在池以外的池中创建该文件系统的克隆。

创建u01的克隆:

迁移ZFS快照至其他主机:

这里要用到zfs send和zfs receive命令。

zfs send 命令创建写入标准输出的快照流表示。缺省情况下,生成完整的流。可以将输出重定向到文件或其他系统。zfs receive 命令创建其内容在标准输入提供的流中指定的快照。如果接收了完整的流,那么同时会创建一个新文件系统。可通过这些命令来发送ZFS 快照数据并接收ZFS 快照数据和文件系统。

接收文件系统快照时,请牢记以下要点:

■ 将接收快照和文件系统。

■ 将取消挂载文件系统和所有后代文件系统。

■ 文件系统在接收期间不可访问。

■ 要接收的原始文件系统在传输期间必须不存在。

■ 如果文件系统名称存在冲突,可以使用zfs rename 重命名文件系统。

发送和接受都成功。

删除快照以及zfs文件系统:

删除u01的快照时,系统提示rpool/u02是其快照的克隆版,所以加-R参数连同u02一起删除。

ZFS 高速缓存:L2ARC 和 ZIL

ZFS 采用高速缓存来加速读写操作。理想状态下,所有的缓存数据都应该存入内存中,但这样做太奢侈了。因此,数据会自动的缓存在不同硬件上,以平衡性能和成本。需要频繁访问的数据缓存在内存中,访问频繁程度略低的数据可以缓存在稍微慢一些的设备上,比如 SSD 固态硬盘。不需要经常访问的数据则不做缓存,仍让它呆在硬盘中。如果突发大量读旧数据,ZFS 将自动将这些数据移动到 SSD 固态硬盘或内存中。

内存是采用 ARC 算法的第一级磁盘缓存,类似于 CPU 的一级缓存。因为内存总是被用做缓存,所以这个第一级缓存是始终存在的。常有说法认为必须为 ZFS 安装大量的内存,但这种说法并不准确,是对 ARC 高速缓存的一种误解。ARC 算法智能且高效,提供充足的内存用于 ARC 高速缓存,只是意味着几乎不需要直接访问硬盘。举个最糟糕的例子,比如系统只安装了 1GB 内存,几乎就不会有 ARC 级别的缓存了,在这种情况下,ZFS 则需要直接访问硬盘读取数据。这也只是代表系统的读性能降低到与硬盘同速,但不会影响 ZFS 的正常使用。

SSD 固态硬盘是第二级磁盘缓存,是可选的缓存,可以随时为运行中系统存储池添加这种类型的高速缓存,也可以随时移除。第二级磁盘缓存共有两种类型,一种用于读缓存,另一种用于写缓存。

为读操作而生的高速缓存 L2ARC

用 SSD 固态硬盘实现的读缓存被称为 L2ARC,它类似于 CPU 的二级缓存。如果整个Dedup表可以被缓存在 L2ARC 中,则 L2ARC 也能大大加快重复数据删除。数据完全充满 L2ARC 设备需要几个小时时间。使用过程中,如果 L2ARC 设备被移除或损坏,读操作将会跳过 L2ARC 设备直接访问硬盘,虽然这时候读取的性能会下降,但不会造成数据损失。

为写操作而生的高速缓存 ZIL

用 SSD 固态硬盘实现的读缓存被称为 Log Device(日志设备),主要用于 ZIL (ZFS intent log) 缓存。ZIL 设备主要作用是切换同步写为异步写,一般用于 NFS 或数据库。所有的数据像日志记录一样被写入到 ZIL 设备中,只有在读取后才会释放。因此,ZIL 中的数据通常不会被读取。有时,ZIL 会刷新 ZFS

存储池中的数据,这种操作被称为 Transaction Group Commit(事务组提交)。如果没有为 ZFS 存储池提供独立的日志设备,系统将会使用 ZFS 存储池中的一部分空间用作 ZIL 写缓存,因此,每个 ZFS 存储池中都总是存在一个 ZIL

缓存。

需要特别注意的是,应该选择低延迟的硬件用作日志设备。为了提升性能,应该选用由 battery-backed 内存组成的硬盘。因为日志设备需要经常进行写操作,固态硬盘会随着写入操作的增多变得越来越慢,内存型磁盘就不会出现这种情况。如果日志设备被移除或损坏,最近写入 NAS 服务器的数据都有可能丢失,因此,应该先对 SSD 固态硬盘做 RAID 镜像后再用于日志设备。

L2ARC 和 ZIL 只是 ZFS 文件系统所支持功能中的一小部分,想要更好的挖掘FreeNAS系统的潜力,首先要了解 ZFS 文件系统,欢迎阅读我们编写的另外一篇文章《玩转 FreeNAS 你需要了解 ZFS 文件系统》。


本文标签: 快照 数据 需要 缓存 硬盘