查询属性值的最简单方法是使用 zfs list 命令。有关更多信息,请参见列出基本 ZFS 信息。但是,对于复杂查询和脚本编写,请使用 zfs get 命令以自定义格式提供更详细的信息。
可以使用 zfs get 命令检索任何数据集属性。以下示例说明如何在数据集中检索单个属性值:
# zfs get checksum tank/ws NAME PROPERTY VALUE SOURCE tank/ws checksum on default |
第四栏 SOURCE 表示此属性值的来源。下表定义可能的源值。
表 6–3 可能的 SOURCE 值 (zfs get 命令)
源值 |
说明 |
---|---|
default |
从来不为数据集或其任何祖先显式设置此属性值。使用的是该属性的缺省值。 |
inherited from dataset-name |
该属性值继承自 dataset-name 所指定的父数据集。 |
local |
使用 zfs set 可为此数据集显式设置该属性值。 |
temporary |
该属性值是使用 zfs mount -o 选项设置的,并且仅在挂载期间有效。有关临时挂载点属性的更多信息,请参见使用临时挂载属性。 |
-(无) |
此属性为只读。其值由 ZFS 生成。 |
可以使用特殊关键字 all 检索所有数据集属性值。以下示例使用 all 关键字:
# zfs get all tank/home NAME PROPERTY VALUE SOURCE tank/home type filesystem - tank/home creation Tue Jun 29 11:44 2010 - tank/home used 21K - tank/home available 66.9G - tank/home referenced 21K - tank/home compressratio 1.00x - tank/home mounted yes - tank/home quota none default tank/home reservation none default tank/home recordsize 128K default tank/home mountpoint /tank/home default tank/home sharenfs off default tank/home checksum on default tank/home compression off default tank/home atime on default tank/home devices on default tank/home exec on default tank/home setuid on default tank/home readonly off default tank/home zoned off default tank/home snapdir hidden default tank/home aclmode groupmask default tank/home aclinherit restricted default tank/home canmount on default tank/home shareiscsi off default tank/home xattr on default tank/home copies 1 default tank/home version 4 - tank/home utf8only off - tank/home normalization none - tank/home casesensitivity sensitive - tank/home vscan off default tank/home nbmand off default tank/home sharesmb off default tank/home refquota none default tank/home refreservation none default tank/home primarycache all default tank/home secondarycache all default tank/home usedbysnapshots 0 - tank/home usedbydataset 21K - tank/home usedbychildren 0 - tank/home usedbyrefreservation 0 - tank/home logbias latency default |
casesensitivity、nbmand、normalization、sharesmb、utf8only 和 vscan 属性在 Oracle Solaris 10 发行版中并不能全面使用,因为 Oracle Solaris 10 发行版不支持 Oracle Solaris SMB 服务。
通过 zfs get 的 -s 选项,可以按源类型指定要显示的属性。通过此选项可获取一个逗号分隔列表,用于指明所需的源类型。仅会显示具有指定源类型的属性。有效的源类型包括 local、default、inherited、temporary 和 none。以下示例显示了已对 pool 本地设置的所有属性。
# zfs get -s local all pool NAME PROPERTY VALUE SOURCE pool compression on local |
以上任何选项均可与 -r 选项结合使用,以便以递归方式显示指定数据集的所有子级的指定属性。在以下示例中,以递归方式显示了 tank 中所有数据集的所有临时属性:
# zfs get -r -s temporary all tank NAME PROPERTY VALUE SOURCE tank/home atime off temporary tank/home/bonwick atime off temporary tank/home/marks atime off temporary |
可以在不指定目标文件系统的情况下使用 zfs get 命令查询属性值,这意味着该命令对所有池或文件系统有效。例如:
# zfs get -s local all tank/home atime off local tank/home/bonwick atime off local tank/home/marks quota 50G local |
有关 zfs get 命令的更多信息,请参见 zfs(1M)。
zfs get 命令支持为编写脚本而设计的 -H 和 -o 选项。可以使用 -H 选项省去标头信息并用 Tab 字符替换空格。使用一致的空格可使数据便于分析。可以使用 -o 选项以如下方式自定义输出:
字符 name 可以与逗号分隔的属性列表一起使用,如 ZFS 属性介绍 部分所述。
输出逗号分隔的字面字段、name、value、property 和 source 列表,后面跟随空格和参数,这就是逗号分隔的属性列表。
以下示例说明如何使用 -zfs get 的 -H 和 o 选项来检索单个值:
# zfs get -H -o value compression tank/home on |
-p 选项会将数字值报告为精确值。例如,1MB 将报告为 1000000。此选项可按如下方式使用:
# zfs get -H -o value -p used tank/home 182983742 |
可以结合使用 -r 选项与前述任何选项,以递归方式为所有后代检索请求值。以下示例使用 -H、-o 和 -r 选项为 export/home 及其后代检索数据集名称和 used 属性值,同时忽略标题输出:
# zfs get -H -o name,value -r used export/home export/home 5.57G export/home/marks 1.43G export/home/maybee 2.15G |