详解 FreeNAS ZFS 数据集

2015-1-21 16:26 Herald 10844 FreeNASZFS存储管理

此前已介绍过 ZFS 卷/数据集创建与管理,但在那份教程中对数据集并没有详细展开,由于 FreeNAS 系统的各种共享都是以数据集为基础而创建的,有必要用独立的篇幅对 ZFS 数据集做进一步的介绍和讲解。

ZFS 数据集

数据集建立在卷上,且数据集之间彼此独立。可以根据需要,对每一个 ZFS 数据集的权限、压缩方式、重复数据删除以及存储配额做更细粒度的控制。可以把 ZFS 数据集视作磁盘分区,因为可以为它设置存储配额,也可以把它比作文件夹,因为可以为他设置权限。

在创建新的数据集之前,你需要先创建好 ZFS 卷,如果你还不了解 ZFS 卷的创建和管理方法,建议先阅读我们编写的另一篇教程《FreeNAS 创建和删除卷/数据集》。

创建新数据集

接下来,为大家介绍 ZFS 数据集创建时的一些选项和作用,首先在浏览器中打开 WebGUI 管理界面,如下图所示,点击 “Storage” 存储图标打开存储管理界面。FreeNAS 9.3 创建卷时会同时创建一个与卷同名的数据集,目前测试来看,在 WebGUI 界面中无法删除该数据集,因此我们只能在此数据集上面创建新的数据集。点选这个与卷同名的数据集,如下图所示,然后点击界面下方的 “Create Dataset 创建数据集按钮,会弹出数据集创建窗口。

20150121143000

在数据集创建窗口下方可以看到第三个 “Advaced Mode高级模式按钮,点击此按钮会额外显示可以为新数据集设置的高级功能选项,如下图所示。

20150121143052

数据集创建选项介绍:

  1. Dataset Name:数据集名称,为数据集设置一个名称,该项必填,且不可使用中文,建议只使用英文字母;
  2. Compression Level:压缩级别,系统的默认采用 lz4 压缩算法,如果不做修改,新数据集将继承系统的默认值。本教程后面会对压缩方式做单独介绍;
  3. Share type:共享类型,创建数据集的目的是用于文件共享,如果该数据集用作 NFS 共享,则选择 UNIX,如果用作 CIFS 共享,则选择 Windows,如果用于 AFP 共享,则选择 Mac。
  4. Case Sensitivity:大小写敏感,即指定存储到该数据集中的文件名称是否区分大小写,默认为 sensitive 区分大小写,也可以选择 insensitive 不区分大小写 mixed 混合(智能识别)。
  5. Enable atime:记录文件访问时间,此选项用来控制是否实时更新文件被访问的时间,默认为 继承上级卷/数据集的设置,也可以设置为 On 启用,或 Off 禁用。设置为禁用可以避免访问文件时产生过多的日志流量,同时也有助于提高系统性能;
  6. Quota for this dataset:空间限额,默认值为 0 即不限制该数据集的存储容量;例如,输入 20GiB 代表该数据集有 20 GB 的可用存储空间。
  7. Quota for this dataset and all children:该数据集和其子数据集的空间限额,默认值为 0 即不限制该数据集的存储容量;例如,输入 20GiB 代表该数据集以及其子数据集共有 20 GB 的可用存储空间。
  8. Reserved space for this dataset:预留空间,在硬件容量允许的情况下,为此数据集预留指定的存储空间。默认值为 0 即不预留存储容量;例如,输入 20GiB 代表在硬盘容量允许的情况下,确保预留20 GB 的存储空间给该数据集。
  9. Reserved space for this dataset and all children:为该数据集和其子数据集预留的空间,默认值为 0 即不预留存储容量;例如,输入 20GiB 代表在硬盘容量允许的情况下,确保预留20 GB 的存储空间给该数据集和其子数据集。
  10. ZFS Deduplication:ZFS 重复数据删除,默认为集成上级卷/数据集设置,也可以设置为 On 启用,Verify 验证,Off 禁用。本教程后面会对 ZFS 重复数据删除做单独介绍;
  11. Record Size:记录大小,即指定扇区大小,默认情况下 ZFS 会根据存入的数据自动调整这个值,但如果存入的文件大小是固定的(例如数据库),则可以在此处指定一个固定的记录大小,从而获得更好的性能。可以通过查阅固态硬盘 4K 对齐方面的教程来对比理解记录大小的概念。

为数据集指定一个名称,再结合上述选项介绍进行调整以满足你的需求,点击 “Add Dataset添加数据集按钮,数据集就创建好了。

数据集支持嵌套,即可以在某个数据集中再次创建数据集,没有数量限制,可以根据需要自由创建。也可以在数据集中创建 Zvol 虚拟硬盘,用于 iSCSI 块级共享,本教程点到为止。与 iSCSI 相关的内容将在单独的篇幅中进行介绍。

压缩方式介绍

压缩可以节省更多的存储空间,但强度过大的压缩会对系统性能造成一定的影响,应该为数据集指定哪一种类型的压缩,需要在性能和存储空间之间做权衡。ZFS 提供的压缩算法对客户端和应用程序是透明的,即对数据压缩和解压均在 NAS 服务器端进行,用户存取数据时是察觉不到的。以下是可以选择的压缩算法:

  • lz4:这是自 FreeNAS 9.2.1 开始系统默认选用的压缩算法,它对系统性能影响小,向数据集中存取数据的速度几乎与不采用压缩时一样,推荐选用。
  • gzip:此压缩算法分为 9 个级别,数字越大,压缩效果越好,速度也最慢。fastest (level 1) 压缩率最低,速度最快。 maximum (level 9) 压缩率最高,速度最慢。系统给 Gzip 压缩算法的默认值为 level 6 即压缩率适中,速度也适中。
  • zle:快速但简单的算法,以消除 runs of zeroes。
  • lzjb:压缩能力很好,但相比 lz4 压缩算法,它的性能要差一些。

通常,不推荐禁用压缩,建议采用 lz4,用微乎其微的性能损失,换取更多的存储空间。

重复数据删除技术

Deduplication(重复数据删除)对存入数据集中的相同文件只保留一个副本,从而节约存储空间。 取决于存入数据集中重复数据的总量,重复数据删除技术可以通过减少数据的写入,从而有效节省存储空间。但是,这种技术非常耗费内存,通常 1TB 存储空间需要额外提供 5GB 的内存。相比之下,同样是为达到节省存储空间的目的,使用压缩,性价比要更高。

需要格外注意的是,一旦为数据集启用了重复数据删除功能,已存入的数据无法取消该技术的控制。向启用重复数据删除功能的数据集中存入越多的数据,就需要越多的内存,当内存空间不足以容纳 DDT 表时,系统会将 DDT 表存入硬盘,这样一来,系统性能将会一落千丈(大坑)。重复数据删除技术是性能的噩梦,内存的克星,请务必谨慎启用。

删除数据集

删除数据集的操作非常简单,点选要删除的数据集,在界面下方找到并点击 “Destroy Dataset销毁数据集按钮,然后点击弹出提示框中的 “Yes确定按钮即可。

删除数据集

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '386' }}

回复 {{ reply_to }}