RAIDZ 与硬件 RAID 的差异
RAIDZ 是 ZFS 自带的校验级别(raidz1/raidz2/raidz3),把冗余放在文件系统与池这一层,而不是控制器固件里。它比传统 RAID 多出一项关键能力:每个数据块都有校验和,遇到静默损坏时能识别并借助其他盘的副本自动修复。代价是必须把整盘直通给 ZFS,扩容也只能通过增加 vdev 实现,规划思路与硬件 RAID 完全不同。
对照
| 维度 | 硬件 RAID | ZFS RAIDZ |
|---|---|---|
| 冗余位置 | 控制器固件 | 文件系统与池层 |
| 静默损坏 | 不感知(除非做巡查) | 块校验和可检测并修复 |
| 盘直通 | 对操作系统呈现单个逻辑盘 | 需要整盘或分区直通 |
| 扩容 | OCE 扩展逻辑盘容量 | 增加 vdev,无法直接扩现有 vdev |
| 写性能 | 卡上缓存保护可显著提升 | 依赖内存做缓存与事务组,无电池缓存概念 |
查看池与 vdev 状态
查看池与 vdev 状态
zpool status -v # 池与 vdev 状态、错误计数
zpool list -v tank # 容量与 vdev 分布
zdb -C tank | head -40 # 池配置详情
zpool set autoreplace=on tank # 换盘后自动替换(按需)关键前提
| 硬件要求 | 整盘直通,不经过硬件 RAID 的逻辑盘封装 |
|---|---|
| 内存要求 | ZFS 依赖内存做 ARC 缓存,内存不足会明显影响性能 |
| ashift | 建池时设定扇区对齐(4K 盘通常用 12),建好后无法在线修改 |
| 校验级别 | raidz1 相当于单盘容错,raidz2 相当于双盘容错 |
| 扩容方式 | 加 vdev 或替换为更大容量盘,容量增长方式与 RAID 不同 |
选型时的注意
- 需要自动检测并修复静默损坏:ZFS 是少数原生支持的选择
- 单 vdev 内盘数不宜过多:盘数多会导致校验开销与重建时间上升
- 大容量盘建议 raidz2 起步:单盘容错在重建期风险偏高
- 与硬件 RAID 混用要谨慎:ZFS 需要看到真实盘,逻辑盘会屏蔽 SMART 与错误信息
RAIDZ 的常见建议:单 vdev 内盘数适中、raidz2 起步,配合 ashift=12 对齐 4K 扇区盘,减少读写放大。