管理 ZFS 存储池( 二 )


使用 ZFS 存储池中的文件
ZFS 还允许将 UFS 文件用作存储池中的虚拟设备 。此功能主要用于测试和启用简单的实验,而不是用于生产 。原因是文件的任何使用都依赖于基础文件系统以实现一致性 。如果创建了由 UFS 文件系统中的文件支持的 ZFS 池,即会隐式依赖于 UFS 来保证正确性和同步语义 。
但是,如果首次试用 ZFS,或者在没有足够的物理设备时尝试更复杂的布局,则文件会非常有用 。所有文件必须以完整路径的形式指定,并且大小至少为 64 MB 。如果移动或重命名某个文件,则必须将池导出再重新导入才能使用该池,这是因为没有设备 ID(可以按其查找文件)与文件相关联 。
标识存储池中的虚拟设备
每个存储池都由一个或多个虚拟设备组成 。虚拟设备是存储池的内部表示形式,用于说明物理存储的布局及其故障特征 。因此,虚拟设备表示用于创建存储池的磁盘设备或文件 。
两种顶层虚拟设备可提供数据冗余:镜像虚拟设备和 RAID-Z 虚拟设备 。这些虚拟设备由磁盘、磁盘片或文件构成 。
在镜像虚拟设备和 RAID-Z 虚拟设备之外的池中使用的磁盘、磁盘片或文件本身用作顶层虚拟设备 。
存储池通常由多个顶层虚拟设备构成 。ZFS 将在池内的所有顶层虚拟设备中以动态方式对数据进行条带化 。
ZFS 存储池的复制功能
ZFS 在镜像配置和 RAID-Z 配置中提供数据冗余和自我修复属性 。
镜像存储池配置
RAID-Z 存储池配置
冗余配置中的自我修复数据
存储池中的动态条带化
镜像存储池配置
镜像存储池配置至少需要两个磁盘,而且磁盘最好位于不同的控制器上 。可以在一个镜像配置中使用许多磁盘 。此外,还可以在每个池中创建多个镜像 。从概念上讲,简单的镜像配置与以下内容类似:
mirror c1t0d0 c2t0d0
从概念上讲,更复杂的镜像配置与以下内容类似:
mirror c1t0d0 c2t0d0 c3t0d0 mirror c4t0d0 c5t0d0 c6t0d0
RAID-Z 存储池配置
除镜像存储池配置外,ZFS 还提供具有单奇偶校验容错性或双奇偶校验容错性的 RAID-Z 配置 。单奇偶校验 RAID-Z 与 RAID-5 类似 。双奇偶校验 RAID-Z 与 RAID-6 类似 。
所有与 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

推荐阅读