Oracle Solaris ZFS 管理指南

ZFS 存储池的复制功能

ZFS 在镜像配置和 RAID-Z 配置中提供数据冗余和自我修复属性。

镜像存储池配置

镜像存储池配置至少需要两个磁盘,而且磁盘最好位于不同的控制器上。可以在一个镜像配置中使用许多磁盘。此外,还可以在每个池中创建多个镜像。从概念上讲,简单的镜像配置与以下内容类似:


mirror c1t0d0 c2t0d0

从概念上讲,更复杂的镜像配置与以下内容类似:


mirror c1t0d0 c2t0d0 c3t0d0 mirror c4t0d0 c5t0d0 c6t0d0

有关创建镜像存储池的信息,请参见创建镜像存储池

RAID-Z 存储池配置

除镜像存储池配置外,ZFS 还提供具有单/双/三奇偶校验容错性的 RAID-Z 配置。单奇偶校验 RAID-Z (raidzraidz1) 与 RAID-5 类似。双奇偶校验 RAID-Z (raidz2) 与 RAID-6 类似。

有关 RAIDZ-3 (raidz3) 的更多信息,请参见以下博客:

http://blogs.sun.com/ahl/entry/triple_parity_raid_z

所有与 RAID-5 类似的传统算法(例如 RAID-4、RAID-6、RDP 和 EVEN-ODD)都可能存在称为“RAID-5 写入漏洞”的问题。如果仅写入了 RAID-5 条带的一部分,并且在所有块成功写入磁盘之前断电,则奇偶校验将与数据不同步,因此永远无用,除非后续的完全条带化写操作将其覆写。在 RAID-Z 中,ZFS 使用可变宽度的 RAID 条带,以便所有写操作都是完全条带化写操作。这是唯一可行的设计,因为 ZFS 通过以下方式将文件系统和设备管理集成在一起:文件系统的元数据包含有关底层数据冗余模型的足够信息以处理可变宽度的 RAID 条带。RAID-Z 是世界上针对 RAID-5 写入漏洞的第一个仅使用软件的解决方案。

一个 RAID-Z 配置包含 N 个大小为 X 的磁盘,其中有 P 个奇偶校验磁盘,该配置可以存放大约 (N-P)*X 字节的数据,并且只有在 P 个设备出现故障时才会危及数据完整性。单奇偶校验 RAID-Z 配置至少需要两个磁盘,双奇偶校验 RAID-Z 配置至少需要三个磁盘。例如,如果一个单奇偶校验 RAID-Z 配置中有三个磁盘,则奇偶校验数据占用的磁盘空间与其中一个磁盘的空间相等。除此之外,创建 RAID-Z 配置无需任何其他特殊硬件。

从概念上讲,包含三个磁盘的 RAID-Z 配置与以下内容类似:


raidz c1t0d0 c2t0d0 c3t0d0

从概念上讲,更复杂的 RAID-Z 配置与以下内容类似:


raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0
c12t0d0 c13t0d0 c14t0d0

如果创建具有许多磁盘的 RAID-Z 配置,请考虑将这些磁盘分为多个组。例如,具有 14 个磁盘的 RAID-Z 配置最好分割为两个 7 磁盘组。若 RAID-Z 配置包含的分组中的磁盘数目为一位数 (1-9),则该配置的性能应该更好。

有关创建 RAID-Z 存储池的信息,请参见创建 RAID-Z 存储池

有关基于性能和磁盘空间考虑在镜像配置或 RAID-Z 配置之间进行选择的更多信息,请参见以下博客:

http://blogs.sun.com/roch/entry/when_to_and_not_to

有关 RAID-Z 存储池建议的其他信息,请参见 ZFS 最佳做法站点:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

ZFS 混合存储池

Oracle Sun Storage 7000 产品系列所提供的 ZFS 混合存储池是一种组合了 DRAM、SSD 和 HDD 的特殊存储池,可以提高性能、增加容量并降低能耗。通过此产品的管理界面,您可以选择存储池的 ZFS 冗余配置,并轻松管理其他配置选项。

有关此产品的更多信息,请参见《Sun Storage Unified Storage System 管理指南》

冗余配置中的自我修复数据

ZFS 在镜像配置或 RAID-Z 配置中提供了自我修复数据。

检测到坏的数据块时,ZFS 不仅会从另一个冗余副本中提取正确的数据,还会通过将错误数据替换为正确的副本对其进行修复。

存储池中的动态条带化

ZFS 以条带形式将数据动态分布在所有顶层虚拟设备上。由于是在写入时确定放置数据的位置,因此在分配时不会创建固定宽度的条带。

向池中添加新虚拟设备时,ZFS 会将数据逐渐分配给新设备,以便维护性能和磁盘空间分配策略。每个虚拟设备也可以是包含其他磁盘设备或文件的镜像或 RAID-Z 设备。使用此配置,可以灵活地控制池的故障特征。例如,可以通过 4 个磁盘创建以下配置:

虽然 ZFS 支持一个池包含不同类型的虚拟设备,但应避免这种做法。例如,可以创建一个包含一个双向镜像和一个三向 RAID-Z 配置的池。但是,容错能力几乎与最差的虚拟设备(在本示例中为 RAID-Z)相同。最佳做法是使用相同类型的顶层虚拟设备,并且每个设备的冗余级别相同。