OpenZFS/ZFS 数据集属性详解:原生属性与用户自定义属性
zfs OpenZFS on Linux and FreeBSD 项目地址: https://gitcode.com/gh_mirrors/zf/zfs
概述
OpenZFS 文件系统中的数据集(包括文件系统、卷、快照和书签)都拥有一系列属性,这些属性分为两大类:原生属性和用户自定义属性。理解这些属性的作用和配置方法对于有效管理 ZFS 存储系统至关重要。
原生属性详解
原生属性是 ZFS 系统内置的属性,它们要么用于导出数据集统计信息(只读),要么用于控制 ZFS 行为(可编辑)。这些属性会根据数据集类型自动继承父数据集的属性值,除非显式覆盖。
空间统计类属性(只读)
这些属性提供了数据集空间使用情况的详细信息:
-
available/avail:数据集及其所有子数据集可用的空间量,考虑了整个存储池的共享空间特性。
-
compressratio:压缩比率,显示已用空间的压缩效果(如1.5表示压缩后节省了33%空间)。
-
used:数据集及其所有后代消耗的空间总量,这是检查配额和预留的主要值。
-
referenced/refer:数据集实际引用的数据量,可能与其他数据集共享。
-
logicalreferenced/lrefer:逻辑可访问空间量,忽略压缩和副本属性的影响。
-
written:自上一个快照以来写入的新数据量。
-
usedby* 系列属性(需要zpool版本13+):
- usedbychildren:子数据集使用的空间
- usedbydataset:数据集自身使用的空间
- usedbyrefreservation:预留空间使用的量
- usedbysnapshots:快照占用的空间
标识类属性(只读)
-
guid:64位全局唯一标识符,在数据集整个生命周期中不变,跨池传输快照时保持相同。
-
creation:数据集创建时间戳。
-
type:数据集类型(filesystem/volume/snapshot/bookmark)。
-
origin:克隆数据集的来源快照。
-
clones:快照的克隆列表,包含此快照作为origin的所有克隆。
用户和组空间统计
-
userused@user:指定用户占用的空间量,支持多种用户标识格式:
- POSIX名称(joe)
- POSIX数字ID(789)
- SID名称(joe.smith@mydomain)
- SID数字ID(S-1-123-456-789)
-
userobjused@user:用户占用的对象数量(包括扩展属性对象)。
-
groupused@group:指定组占用的空间量。
-
projectused@project:指定项目占用的空间量(基于项目ID)。
特殊用途属性
-
encryptionroot:加密数据集的密钥继承来源点。
-
keystatus:加密密钥状态(none/available/unavailable)。
-
receive_resume_token:部分接收操作的状态令牌,用于恢复中断的zfs receive。
-
volblocksize:卷的块大小(创建后不可更改,默认为16KiB)。
可配置的行为控制属性
这些属性可以调整以改变ZFS的行为:
-
aclinherit:控制ACL继承方式:
- discard:不继承任何ACE
- noallow:只继承"deny"条目
- restricted:过滤掉write_owner和write_acl权限
- passthrough:精确继承所有ACE
- passthrough-x:除特殊执行位外精确继承
-
compression:启用/禁用数据压缩(on/off等)。
-
copies:设置数据副本数量(1-3),提供额外冗余。
-
dedup:启用重复数据删除功能(谨慎使用,需要大量内存)。
-
encryption:控制数据集加密(on/off/aes-128-ccm等)。
用户自定义属性
用户属性是用户定义的任意名称-值对,它们不会影响ZFS行为,但可用于标记和分类数据集。用户属性名称必须包含冒号(:)以区别于原生属性,例如:
com.example:department=finance
用户属性支持继承,可以通过zfs get -r
查询,非常适合用于自动化脚本或管理分类。
最佳实践建议
-
监控关键空间属性(used/available/referenced)以防止空间耗尽。
-
合理设置volblocksize以匹配工作负载(数据库通常需要更大块大小)。
-
谨慎使用dedup属性,确保系统有足够ARC内存。
-
利用用户属性实现自动化管理,如备份策略标记。
-
定期检查加密数据集的keystatus以确保数据可访问。
-
使用written@snapshot属性分析特定时间段内的数据变化量。
通过深入理解这些属性,系统管理员可以更有效地监控、调优和管理ZFS存储系统,充分发挥其强大功能。
zfs OpenZFS on Linux and FreeBSD 项目地址: https://gitcode.com/gh_mirrors/zf/zfs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考