组件
存储池最基本的元素是物理存储器。物理存储器最小128MB。
Solaris的存储设备在/dev/dsk目录中,FreeBSD的存储设备在/dev目录中。
存储设备可以是整个磁盘,也可以是一份“切片”(slice),使用整个磁盘最简单、最有效、最可靠。
应避免使用切片(Slice)。
根据系统不同,使用相应的命令查看磁盘分区,例如在Solaris中使用format命令,在FreeBSD中使用gpart show命令。
可以使用文件作为虚拟设备,要确保所有文件都指定为完整路径,且大小至少为64MB。
此功能仅用于测试,例如在物理设备不足时尝试使用更复杂的ZFS配置。不要在生产环境中使用此功能。
冗余特性
ZFS在镜像和RAID-Z配置中提供数据冗余和自我修复属性。
镜像存储池配置
镜像存储池至少需要两个磁盘,最好位于不同的控制器上。每个池中可以存在多个镜像
RAID-Z存储池配置
ZFS支持以下容错级别的RAID-Z配置:
- 单奇偶校验(raidz或raidz1)——类似于RAID-5
在FreeBSD上实测时提示需要至少两块硬盘
- 双奇偶校验(raidz2)——类似于RAID-6
在FreeBSD上实测时提示需要至少三块硬盘
- 三奇偶校验(raidz3)
在FreeBSD上实测时提示需要至少四块硬盘
ZFS使用可变宽度(variable-width)RAID条带,所有写都是全条带写。ZFS以这种方式集成了文件系统和设备管理,即文件系统的元数据有足够的关于底层数据冗余模型的信息来处理可变宽度的RAID条带。从而避免了传统RAID算法中遇到的问题。
具有n个大小为x的磁盘和p个奇偶校验磁盘的RAID-Z配置可以容纳大约(n-p)*x个字节,并且可以在数据完整性受到损害之前承受p个设备故障。
RAID-Z需要的磁盘数可能跟系统有关?FreeBSD中raidz1需要至少两个磁盘,raidz2需要至少三个磁盘,raidz3需要至少四个磁盘。
一个存储池建议不要超过9个磁盘,磁盘太多的话应考虑拆分成多个组。
其他
建议使用RBAC(role-based access control,基于角色访问控制) 来配置ZFS。还可以考虑对分布式ZFS管理任务使用ZFS委派管理。就是不要轻易用root。
ZFS组件命名规则
每个组件,比如数据集和池,必须遵守以下命名规则:
- 每个组件只能包含字母数字以及下面这些特殊符号:
- 下划线(Underscore _)
- 连接符(Hyphen -)
- 冒号(Colon :)
- 句号(Period .)
- 空(blank “ ”)
注意-tab和空格无效。
- 池名称必须以字母开头,只能包含字母、数字、下划线(Underscore _)、中线(dash -)和点(period .)。以下池名称受限:
- 不得以c0~c9
- log保留
- 不得以mirror、raidz、raidz1、raidz2、randz3、spare开头
- 池名称不能包含百分号(percent sign %)
- 数据集名称必须以数字、字母开头。
- 数据集名称不能包含百分号(percent sign %)。
- 不允许使用空组件。
ZFS支持按层次结构组织文件系统,每个文件系统只有一个父系统。层次结构得根始终是池名称。
ZFS支持属性继承。
ZFS文件系统提供了一个中心管理点。它们足够轻量级,可以为每个用户或项目建立一个文件系统。从而可以基于每个用户或每个项目控制属性、快照和备份。
文件系统可以分组管理。
文件系统得属性可以控制各种行为,包括文件系统的挂载位置、共享方式、是否压缩或是否有配额限制等。
2021/12/7