跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris ZFS 管理指南 Oracle Solaris 10 8/11 Information Library (简体中文) |
1. Oracle Solaris ZFS 文件系统(介绍)
3. Oracle Solaris ZFS 与传统文件系统之间的差别
5. 安装和引导 Oracle Solaris ZFS 根文件系统
7. 使用 Oracle Solaris ZFS 快照和克隆
8. 使用 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
非数字属性的值区分大小写,并且必须为小写字母,但 mountpoint 和 sharenfs 除外。这两个属性的值既可以包含大写字母,也可以包含小写字母。
有关 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 表示此属性值的来源。下表定义可能的源值。
表 6-3 可能的 SOURCE 值 (zfs get 命令)
|
可以使用特殊关键字 all 检索所有数据集属性值。以下示例使用 all 关键字:
# zfs get all tank/home NAME PROPERTY VALUE SOURCE tank/home type filesystem - tank/home creation Wed Jun 22 15:47 2011 - tank/home used 31K - tank/home available 33.2G - tank/home referenced 31K - 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 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 5 - 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 31K - tank/home usedbychildren 0 - tank/home usedbyrefreservation 0 - tank/home logbias latency default tank/home sync standard default tank/home rstchown on default
注 - casesensitivity、nbmand、normalization、sharesmb、utf8only 和 vscan 属性在 Oracle Solaris 10 发行版中并不能全面使用,因为 Oracle Solaris 10 发行版不支持 Oracle Solaris SMB 服务。
通过 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