跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris 11.1 管理:ZFS 文件系统 Oracle Solaris 11.1 Information Library (简体中文) |
1. Oracle Solaris ZFS 文件系统(介绍)
6. 使用 Oracle Solaris ZFS 快照和克隆
7. 使用 ACL 和属性保护 Oracle Solaris ZFS 文件
数据集属性通过 zfs 命令的 set、inherit 和 get 子命令来管理。
可以使用 zfs set 命令修改任何可设置的数据集属性。或者,也可以使用 zfs create 命令在创建数据集时设置属性。有关可设置的数据集属性的列表,请参见可设置的 ZFS 本机属性。
zfs set 命令采用 property=value 格式的属性/值序列,然后是数据集名称。zfs set 的每次调用只能设置或修改一个属性。
以下示例将 tank/home 的 atime 属性设置为 off。
# zfs set atime=off tank/home
此外,任何文件系统属性均可在创建文件系统时设置。例如:
# zfs create -o atime=off tank/home
可以使用以下易于理解的后缀(按大小递增顺序)指定数字属性值:BKMGTPEZ。其中任一后缀都可后跟可选的 b,用于表示字节,但 B 后缀除外,因为它已表示了字节。以下四个 zfs set 调用是等效的数字表达式,在 users/home/mark 文件系统中将 quota 属性设置为值 20 GB:
# zfs set quota=20G users/home/mark # zfs set quota=20g users/home/mark # zfs set quota=20GB users/home/mark # zfs set quota=20gb users/home/mark
如果尝试在 100% 全满的文件系统上设置属性,则会显示类似于以下内容的消息:
# zfs set quota=20gb users/home/mark cannot set property for '/users/home/mark': out of space
非数字属性的值区分大小写,并且必须为小写字母,但 mountpoint 例外。该属性的值既可以包含大写字母,也可以包含小写字母。
有关 zfs set 命令的更多信息,请参见 zfs(1M)。
除非已对后代文件系统显式设置了配额或预留空间,否则除了配额和预留空间外,所有可设置的属性都从父文件系统继承各自的值。如果没有祖先为继承的属性设置显式值,则使用该属性的缺省值。可以使用 zfs inherit 命令清除某个属性值,从而促使从父文件系统继承该值。
以下示例使用 zfs set 命令为 tank/home/jeff 文件系统启用压缩。然后,使用 zfs inherit 清除 compression 属性,从而使该属性继承缺省值 off。由于 home 和 tank 都未本地设置 compression 属性,因此会使用缺省值。如果两者都启用了压缩,则使用最直接的祖先中设置的值(在本示例中为 home)。
# zfs set compression=on tank/home/jeff # zfs get -r compression tank/home NAME PROPERTY VALUE SOURCE tank/home compression off default tank/home/eric compression off default tank/home/eric@today compression - - tank/home/jeff compression on local # zfs inherit compression tank/home/jeff # zfs get -r compression tank/home NAME PROPERTY VALUE SOURCE tank/home compression off default tank/home/eric compression off default tank/home/eric@today compression - - tank/home/jeff compression off default
如果指定了 -r 选项,则会以递归方式应用 inherit 子命令。在以下示例中,该命令将使 tank/home 以及它可能具有的所有后代都继承 compression 属性的值:
# zfs inherit -r compression tank/home
注 - 请注意,使用 -r 选项会清除所有后代文件系统的当前属性设置。
有关 zfs inherit 命令的更多信息,请参见 zfs(1M)。
查询属性值的最简单方法是使用 zfs list 命令。有关更多信息,请参见列出基本 ZFS 信息。但是,对于复杂查询和脚本编写,请使用 zfs get 命令以定制格式提供更详细的信息。
可以使用 zfs get 命令检索任何数据集属性。以下示例说明如何在数据集中检索单个属性值:
# zfs get checksum tank/ws NAME PROPERTY VALUE SOURCE tank/ws checksum on default
第四栏 SOURCE 表示此属性值的来源。下表定义可能的源值。
表 5-3 可能的 SOURCE 值 (zfs get 命令)
|
可以使用特殊关键字 all 检索所有数据集属性值。以下示例使用 all 关键字:
# zfs get all tank/home NAME PROPERTY VALUE SOURCE tank/home aclinherit restricted default tank/home aclmode discard default tank/home atime on default tank/home available 66.9G - tank/home canmount on default tank/home casesensitivity mixed - tank/home checksum on default tank/home compression off default tank/home compressratio 1.00x - tank/home copies 1 default tank/home creation Fri May 11 10:58 2012 - tank/home dedup off default tank/home devices on default tank/home encryption off - tank/home exec on default tank/home keysource none default tank/home keystatus none - tank/home logbias latency default tank/home mlslabel none - tank/home mounted yes - tank/home mountpoint /tank/home default tank/home multilevel off - tank/home nbmand off default tank/home normalization none - tank/home primarycache all default tank/home quota none default tank/home readonly off default tank/home recordsize 128K default tank/home referenced 43K - tank/home refquota none default tank/home refreservation none default tank/home rekeydate - default tank/home reservation none default tank/home rstchown on default tank/home secondarycache all default tank/home setuid on default tank/home shadow none - tank/home share.* ... local tank/home snapdir hidden default tank/home sync standard default tank/home type filesystem - tank/home used 8.54M - tank/home usedbychildren 8.49M - tank/home usedbydataset 43K - tank/home usedbyrefreservation 0 - tank/home usedbysnapshots 0 - tank/home utf8only off - tank/home version 6 - tank/home vscan off default tank/home xattr on default tank/home zoned off default
通过 zfs get 的 -s 选项,可以按源类型指定要显示的属性。通过此选项可获取一个逗号分隔列表,用于指明所需的源类型。仅会显示具有指定源类型的属性。有效的源类型包括 local、default、inherited、temporary 和 none。以下示例显示了已在 tank/ws 上本地设置的所有属性。
# zfs get -s local all tank/ws NAME PROPERTY VALUE SOURCE tank/ws compression on local
以上任何选项均可与 -r 选项结合使用,以便以递归方式显示指定文件系统的所有子级的指定属性。在以下示例中,以递归方式显示了 tank/home 中所有文件系统的所有临时属性:
# zfs get -r -s temporary all tank/home NAME PROPERTY VALUE SOURCE tank/home atime off temporary tank/home/jeff atime off temporary tank/home/mark quota 20G temporary
可以在不指定目标文件系统的情况下使用 zfs get 命令查询属性值,这意味着该命令对所有池或文件系统有效。例如:
# zfs get -s local all tank/home atime off local tank/home/jeff atime off local tank/home/mark quota 20G 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