跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- 配置 ZFS 文件系统
zfs [-?]
zfs help subcommand | help | property property-name | permission
zfs create [-p] [-o property=value] ... filesystem
zfs create [-ps] [-b blocksize] [-o property=value] ... -V size volume
zfs destroy [-rRf] filesystem|volume
zfs destroy [-rRd] snapshot
zfs snapshot [-r] [-o property=value]... filesystem@snapname|volume@snapname
zfs rollback [-rRf] snapshot
zfs clone [-p] [-K] [-o property=value] ... snapshot filesystem|volume
zfs promote clone-filesystem
zfs rename filesystem|volume|snapshot filesystem|volume|snapshot
zfs rename [-p] filesystem|volume filesystem|volume
zfs rename -r snapshot snapshot
zfs list [-rH|-d depth][-o property[,...]] [-t type[,...]] [-s property] ... [-S property] ... [filesystem|volume|snapshot|path] ...
zfs set [-r] property=value filesystem|volume|snapshot ...
zfs get [-rHp|-d depth][-o all | field[,...]] [-s source[,...]] all | property[,...] filesystem|volume|snapshot ...
zfs set share=name=sharename,path=pathname,[desc=description], prot=smb | nfs[,property=value[,...]] filesystem
zfs set -c share=name=sharename filesystem
zfs get share [filesystem]
zfs inherit [-rS] property filesystem|volume|snapshot ...
zfs upgrade
zfs upgrade [-v]
zfs upgrade [-r] [-V version] -a | filesystem
zfs userspace [-hniHp] [-o field[,...]] [-sS field] ... [-t type [,...]] filesystem|snapshot
zfs groupspace [-hniHpU] [-o field[,...]] [-sS field] ... [-t type [,...]] filesystem|snapshot
zfs mount
zfs mount [-vOS] [-o options] -a | filesystem
zfs unmount [-f] -a | filesystem|mountpoint
zfs share -a | dataset
zfs unshare -a dataset|mountpoint
zfs send [-DvRbp] [-[iI] snapshot] snapshot
zfs send -r [-Dvbcp] [-i snapshot] snapshot
zfs receive [-vnFu] [[-o property=value] | [-x property]] ... filesystem|volume|snapshot
zfs receive [-vnFu] [[-o property=value] | [-x property]] ... [-d | -e] filesystem
zfs allow filesystem|volume
zfs allow [-ldug] everyone|user|group[,...] perm|@setname[,...] filesystem|volume
zfs allow [-ld] -e perm|@setname[,...] filesystem|volume
zfs allow -c perm|@setname[,...] filesystem|volume
zfs allow -s @setname perm|@setname[,...] filesystem|volume
zfs unallow [-rldug] everyone|user|group[,...] [perm|@setname[,... ]] filesystem|volume
zfs unallow [-rld] -e [perm|@setname[,... ]] filesystem|volume
zfs unallow [-r] -c [perm|@setname[ ... ]] filesystem|volume
zfs unallow [-r] -s @setname [perm|@setname[,... ]] filesystem|volume
zfs hold [-r] tag snapshot...
zfs holds [-r] snapshot...
zfs release [-r] tag snapshot...
zfs diff [-FHte] [-o field] ... snapshot [snapshot|filesystem]
zfs diff -E [-FHt] [-o field] ... snapshot|filesystem
zfs key -l {-a | [-r] filesystem|volume}
zfs key -u [-f] {-a | [-r] filesystem|volume}
zfs key -c [-o keysource=value] {-a | [-r] filesystem|volume}
zfs key -K {-a | [-r] filesystem|volume}
zfs 命令按照 zpool(1M) 中描述的方式配置 ZFS 存储池中的 ZFS 数据集。数据集由 ZFS 名称空间中的唯一路径进行标识。例如:
pool/{filesystem,volume,snapshot}
其中,数据集名称的最大长度为 MAXNAMELEN(256 字节)。
数据集可以为下列类型之一:
filesystem 类型的 ZFS 数据集可以挂载在标准系统名称空间中,并且行为与其他文件系统相似。虽然 ZFS 文件系统旨在符合 POSIX 标准,但是在某些情况下仍然存在一些已知的妨碍符合性的问题。依赖于标准符合性的应用程序可能会在检查文件系统可用空间时由于非标准行为而失败。
作为原始设备或块设备导出的逻辑卷。此类型的数据集只应在特殊情况下使用。文件系统通常适用于大多数环境。
文件系统或卷在给定时间点的只读版本。它被指定为 filesystem@name 或 volume@name。
ZFS 存储池是为数据集提供空间的设备的逻辑集合。存储池也是 ZFS 文件系统分层结构的根。
存储池的根可作为文件系统进行访问,例如挂载和卸载、创建快照以及设置属性。但是,物理存储特征由 zpool(1M) 命令管理。
有关创建和管理存储池的更多信息,请参见 zpool(1M)。
快照是文件系统或卷的只读副本。快照可以非常快速地创建,而且最初不占用池中的其他空间。当活动数据集中的数据发生变化时,快照占用的数据多于按其他方式与活动数据集共享的数据。
快照可以具有任意名称。卷的快照可进行克隆或回滚,但是不能单独访问。
可从文件系统根目录中的 .zfs/snapshot 目录下访问文件系统快照。快照会自动根据需要进行挂载,并可以按固定的间隔卸载。.zfs 目录的可见性可由 snapdir 属性控制。
克隆是可写的卷或文件系统,其初始内容与其他数据集相同。与快照一样,创建克隆也几乎是即时的,而且最初不占用其他空间。
克隆只能从快照创建。在克隆快照时,会在父项与子项之间创建隐式相关性。即使克隆是在数据集分层结构中的某个其他位置创建的,但只要存在克隆,就无法销毁原始快照。origin 属性显示此相关性,而 destroy 命令会列出任何此类相关性(如果存在)。
使用 promote 子命令,可以颠倒克隆父项-子项相关性关系。这将导致“原始”文件系统成为所指定文件系统的克隆,从而可能销毁创建克隆时所基于的文件系统。
创建 ZFS 文件系统是一项简单的操作,因此每个系统可能有多个文件系统。为处理这种情况,ZFS 自动管理文件系统的挂载和卸载,而不需要编辑 /etc/vfstab 文件。所有自动管理的文件系统均由 ZFS 在引导时挂载。
缺省情况下,文件系统挂载在 /path 下,其中 path 是 ZFS 名称空间中文件系统的名称。可根据需要创建和销毁目录。
文件系统也可以在 mountpoint 属性中设置挂载点。此目录会根据需要进行创建;在调用 zfs mount -a 命令时,ZFS 将自动挂载文件系统(无需编辑 /etc/vfstab)。mountpoint 属性可以继承,因此如果 pool/home 有一个挂载点 /export/stuff,则 pool/home/user 会自动继承挂载点 /export/stuff/user。
通过为 zfs mount 命令指定 -o mountpoint=value 选项,可以在文件系统的持久性挂载点以外的位置临时挂载文件系统。仅允许对具有非先前挂载点的文件系统执行此操作。
文件系统的 mountpoint 属性 none 可防止挂载此文件系统。
如果需要,也可以用传统工具(mount、umount、/etc/vfstab)来管理 ZFS 文件系统。如果将文件系统的挂载点设置为 legacy,则 ZFS 不会尝试管理文件系统,并且管理员将负责挂载和卸载文件系统。
添加的文件系统的物理属性由全局管理员控制。但是,区域管理员可以根据添加的文件系统的挂载方式,在该文件系统中创建、修改或销毁文件。
使用 zonecfg add dataset 子命令也可以将数据集委托给非全局区域。您不能将数据集委托给一个区域,也不能将同一数据集的子项委托给另一个区域。区域管理员可以更改数据集或其任何子项的属性。但是,quota 属性由全局管理员控制。
通过 zonecfg add device 子命令,可以将 ZFS 卷作为一个设备添加到非全局区域。但是,只有全局管理员才可修改其物理属性。
有关 zonecfg 语法的更多信息,请参见 zonecfg(1M)。
将数据集委托给非全局区域后,将自动设置 zoned 属性。在全局区域中,只能通过使用临时的 mountpoint 属性(参见“临时挂载点属性”)挂载区域文件系统。
全局管理员可强制清除 zoned 属性,但是完成此操作应非常谨慎。全局管理员应在清除该属性前确认所有挂载点是可接受的。
重复数据删除是在块级别删除冗余数据以减少存储的总数据量的过程。重复数据删除面向存储池范围;每个数据集都可以使用自己的 dedup 属性增减内容。如果文件系统启用了 dedup 属性,则在写入时将同步删除重复数据块。因此,在存储池已启用 dedup 的所有数据集中只会存储唯一的数据,并且会在这些数据集的文件中共享公共组件。
有关 ZFS 加密和 ZFS 加密语法的完整描述,请参见 zfs_encrypt(1M)。
属性分为两种类型:本机属性和用户定义的(或“用户”)属性。本机属性用于提供内部统计信息或控制 ZFS 行为。此外,本机属性分为可编辑属性和只读属性。用户属性对 ZFS 行为没有影响,但可通过用户环境中有意义的方式来注释数据集。有关用户属性的更多信息,请参见下文的“用户属性”一节。
每个数据集都有一组属性,用于提供有关数据集的统计信息并控制各种行为。属性继承自父项,但子项所覆盖的除外。有些属性仅适用于某些类型的数据集(文件系统、卷或快照)。
数值属性的值可使用便于阅读的后缀(例如 k、KB、M、Gb 等,直到表示泽字节的 Z)来指定。下面都是有效(且等效)的指定:
1536M, 1.5g, 1.50GB
非数值属性的值区分大小写,并且必须为小写形式,mountpoint 属性除外。
以下本机属性包含数据集的相关只读统计信息。既不能设置这些属性,也不能继承这些属性。除非另有说明,否则本机属性适用于所有数据集类型。
数据集及其所有子项的可用空间的数量(假定池中没有其他活动)。由于池中会共享空间,因此可用空间会受到许多因素的限制,包括物理池大小、配额、预留空间或池中的其他数据集。
此属性也可通过其简短列名 avail 来引用。
为此数据集实现的压缩率,以倍数形式表示。通过运行 zfs set compression=on dataset 可以启用压缩。缺省值为 off。
创建此数据集的时间。
如果已使用 zfs destroy -d 命令将快照标记为延期销毁,则此属性为 on。否则,此属性为 off。
有关更多信息,请参见 zfs_encrypt(1M)。
对于文件系统,指示当前是否已挂载文件系统。此属性可以是 yes 或 no。
对于克隆的文件系统或卷,指示创建克隆时所基于的快照。只要克隆存在,便不能销毁克隆源(即使使用 -r 或 -f 选项也是如此)。
此数据集可访问的数据量,这些数据可以与池中其他数据集共享,也可以不与其他数据集共享。创建快照或克隆时,首先会引用与创建时所基于的文件系统或快照相同的空间量,因为其内容相同。
该属性也可通过其简短列名 refer 来引用。
有关更多信息,请参见 zfs_encrypt(1M)。
数据集类型:filesystem、volume 或 snapshot。
此数据集及其所有后代占用的空间量。这是根据此数据集的配额和预留空间进行检查的值。使用的空间不包括此数据集的预留空间,但是会考虑 refreservation(通过 usedbyrefreservation)以及任何后代数据集的预留空间(通过 usedbychildren)。数据集占用其父项的空间量以及以递归方式销毁此数据集时所释放的空间量,应为其使用空间和预留空间的较大者。
创建快照时(参见“快照”一节),其空间最初将在快照与文件系统之间共享,也可能与以前的快照共享。随着文件系统的变化,以前共享的空间将供快照专用,并会计算在快照的使用空间内。此外,删除快照可增加其他快照专用(和使用)的空间量。
使用的空间量、可用的空间量或引用的空间量不会考虑暂挂更改。通常,暂挂更改仅占用几秒钟的时间。使用 fsync(3C) 或 O_SYNC 提交对磁盘的更改,不一定可以保证空间使用情况信息会立即更新。
usedby* 属性将 used 属性分解为使用该空间的各种原因。具体而言,used = usedbychildren + usedbydataset + usedbyrefreservation + usedbysnapshots。这些属性只能用于在“版本 13”或更高版本的池上创建的数据集。
此数据集的子项使用的空间量,如果销毁此数据集的所有子项,将释放该空间。
此数据集本身使用的空间量,如果销毁此数据集,将释放该空间(首次删除任何 refreservation 并销毁任何必需的快照或后代之后)。
针对此数据集设置的 refreservation 占用的空间量,如果删除 refreservation,将释放该空间。
此属性所占用的空间表示未来写操作可能消耗的空间,预留以防此数据集出现写分配故障。这可能包括未写入的数据、当前与快照共享的空间,以及卷的压缩节省空间(当用更少的可压缩数据替换时可能丢失)。当为后续写操作分配空间增加 usedbydataset 或 usedbysnapshots 时,将相应减少 usedbyrefreservation。
此数据集的快照占用的空间量。特别地,此空间量是销毁此数据集的所有快照后将释放的空间量。请注意,此空间量不是快照的 used 属性的简单总和,因为空间可被多个快照共享。
此数据集中指定的用户占用的空间量。空间由每个文件的所有者占用,如 ls -l 显示的内容所示。占用的空间量由 du 和 ls -s 显示。有关更多信息,请参见 zfs userspace 子命令。
未授权的用户只能访问各自的空间使用情况。root 用户或已用 zfs allow 授予 userused 特权的用户,可以访问每个人的空间使用情况。
zfs get all 不会显示 userused@... 属性。必须使用以下形式之一在 @ 符号后加上用户名:
POSIX name(例如 joe)
POSIX numeric ID(例如 789)
SID name(例如 joe.smith@mydomain)
SID numeric ID(例如 S-1-123-456-789)
为此快照上的用户保留量可设置此属性。通过使用 zfs hold 命令可设置用户保留量。
此数据集中指定的组占用的空间量。空间由每个文件的组所占用,如 ls -l 显示的内容所示。有关更多信息,请参见 userused@user 属性。
未授权的用户只能访问各自的组的空间使用情况。root 用户或已用 zfs allow 授予 groupused 特权的用户,可以访问所有组的空间使用情况。
可为卷指定卷的块大小。在写入卷后无法更改 blocksize,因此应在创建卷时设置该值。卷的缺省 blocksize 是 8 KB。范围位于 512 字节到 1 MB 之间的 2 的任意次幂都有效。
该属性也可通过其简短列名 volblock 来引用。
使用以下本机属性可以更改 ZFS 数据集的行为。
控制 chmod(2) 执行期间如何修改 ACL。带有 aclmode 属性 discard(缺省值)的文件系统删除不表示文件模式的所有 ACL 条目。aclmode 属性 mask 减少用户或组的权限。除非用户项与文件或目录的属主具有相同的 UID,否则将减少权限,以使其不会大于组权限位。在这种情况下,减少 ACL 权限,以使其不会大于属主权限位。mask 还跨模式更改保留 ACL(两次模式更改之间没有进行显式 ACL 设置 [通过 chmod(1)])。带有 aclmode 属性 passthrough 的文件系统指示除了生成必要的 ACL 条目来表示文件或目录的新模式以外,不会对 ACL 进行其他更改。
控制创建文件和目录时继承 ACL 项的方法。aclinherit 属性为 discard 的文件系统不继承任何 ACL 项。aclinherit 属性值为 noallow 的文件系统仅继承指定了“拒绝”权限的可继承 ACL 项。在继承 ACL 项时,属性值 restricted(缺省值)会删除 write_acl 和 write_owner 权限。如果文件系统的 aclinherit 属性值为 passthrough,则会继承所有可继承的 ACL 项,并且继承 ACL 项时不会对其进行任何修改。如果文件系统的 aclinherit 属性值为 passthrough-x,则与 passthrough 具有同样的意义,区别在于仅当文件创建模式也需要执行位时,所有 ACE 均继承执行权限。
当属性值设置为 passthrough 时,由可继承的 ACE 确定的模式来创建文件。如果不存在会影响模式的可继承的 ACE,则按照应用程序要求的模式来设置模式。
控制文件被读取后是否更新该文件的访问时间。禁用该属性可避免在读取文件时产生写入流量,因此可显著提高性能,但可能会使邮件程序与其他相似的实用程序感到困惑。缺省值为 on。
如果此属性设置为 off,则无法挂载文件系统,并且 zfs mount -a 将忽略此文件系统。将此属性设置为 off 与将 mountpoint 属性设置为 none 的效果相似,区别在于数据集仍有一个可继承的正常 mountpoint 属性。通过将此属性设置为 off,可以将数据集单独用作一种继承属性的机制。例如,设置 canmount=off 将使两个数据集具有相同的 mountpoint,因此两个数据集的子项会出现在同一个目录中,但是可能具有不同的继承特征。
设置 noauto 选项时,只能显式挂载和取消挂载数据集。数据集不会在创建或导入时自动挂载,也不能通过 zfs mount -a 命令挂载或通过 zfs unmount -a 命令取消挂载。
不会继承此属性。
控制用于验证数据完整性的校验和。缺省值是 on,它将自动选择正确的算法(当前为 fletcher4,但是在将来的版本中可能改变)。值为 off 将禁止对用户数据进行完整性检查。实际操作中建议不要禁用校验和。
更改此属性只会影响新写入的数据。
只有在启用加密时,值 sha256+mac 才可用。在启用加密时,校验和属性变为 readonly,然后始终将其设置为 sha256+mac。
控制用于此数据集的压缩算法。在提供适当的数据压缩时,将为 lzjb 压缩算法优化性能。将压缩设置为 on 会使用 lzjb 压缩算法。gzip 压缩算法使用与 gzip(1) 命令相同的压缩。通过使用值 gzip-N 可以指定 gzip 级别,其中 N 是一个从 1(最快)至 9(最佳压缩率)的整数。当前,gzip 等效于 gzip-6(这也是 gzip(1) 的缺省值)。
该属性也可通过其简短列名 compress 来引用。更改此属性只会影响新写入的数据。
控制为此数据集存储的数据副本数量。除了作为池提供的任何冗余,这些副本还可作为镜像或 RAID-Z。如果可能,这些副本会存储在不同磁盘上。多个副本使用的空间由相关联的文件和数据集占用,按照配额和预留空间更改 used 属性和计算方式。
更改此属性只会影响新写入的数据。因此,在创建文件系统时通过使用 -o copies=N 选项设置此属性。
在数据集上启用加密时,可设置的最大副本数量是 2。
控制重复数据删除对数据集是否有效。缺省值为 off。用于重复数据删除的缺省校验和是 sha256(可能会更改)。在启用 dedup 时,dedup 校验和算法会覆盖 checksum 属性。将值设置为 verify 等效于指定 sha256,verify。
如果将属性设置为 verify,则只要两个块具有相同的签名,ZFS 都会与现有块进行逐字节比较,以确保内容完全相同。
控制是否可在此文件系统中打开设备节点。缺省值为 on。
控制是否可从此文件系统中执行进程。缺省值为 on。
控制 ZFS 如何为此数据集优化同步请求。如果 logbias 设置为 latency,ZFS 将使用池的不同日志设备(如有)低延迟地处理请求。如果 logbias 设置为 throughput,ZFS 将不使用池的不同日志设备。相反,ZFS 将优化同步操作,以提高池的全局吞吐量并有效使用资源。缺省值为 latency。
mlslabel 属性是一个敏感标签,用于确定能否在启用了 Trusted Extensions 的系统的区域中挂载数据集。如果有标签的数据集与有标签的区域相符,则可以从有标签的区域挂载和访问数据集。
如果未设置 mlslabel 属性,缺省值将为 none。将 mlslabel 属性设置为 none 等效于删除该属性。
只有在启用了 Trusted Extensions 并且具有相应的特权时,才能修改 mlslabel 属性。不可委托用于修改此属性的权限。将标签更改为较高级别标签或设置初始数据集标签时,需要 {PRIV_FILE_UPGRADE_SL} 特权。将标签更改为较低级别标签或缺省标签 (none) 时,需要 {PRIV_FILE_DOWNGRADE_SL} 特权。只有在未挂载数据集时,才能将数据集更改为缺省值以外的标签。将具有缺省标签的数据集挂载到有标签区域时,挂载操作会自动将 mlslabel 属性设置为该区域的标签。
如果未启用 Trusted Extensions,则只能挂载具有缺省标签 (none) 的数据集。
控制用于此文件系统的挂载点。有关如何使用此属性的更多信息,请参见“挂载点”一节。
当文件系统的 mountpoint 属性发生更改时,将取消挂载该文件系统以及继承挂载点的任何子项。如果新值为 legacy,则该文件系统和子项将保持取消挂载状态。否则,如果属性以前为 legacy 或 none,或者该文件系统和子项在属性发生更改之前处于挂载状态,则会自动在新位置重新挂载它们。此外,任何共享文件系统都将取消共享,并在新位置进行共享。
有关更多信息,请参见 zfs_share(1M)。
控制在主高速缓冲存储器 (ARC) 中缓存的内容。如果将此属性设置为 all,则会高速缓存用户数据和元数据。如果将此属性设置为 none,则不会高速缓存用户数据和元数据。如果将此属性设置为 metadata,则只会高速缓存元数据。缺省值为 off。
限制数据集及其后代可占用的空间量。此属性对使用的空间量强制实施硬限制。这包括后代(含文件系统和快照)占用的所有空间。对已有配额的数据集的后代设置配额不会覆盖祖先的配额,但会施加额外的限制。
不能对卷设置配额,因为 volsize 属性可用作隐式配额。
确定文件系统事务的同步程度。在创建数据集时可设置此属性,也可动态设置此属性,并且属性将会立即生效。此属性可能具有以下设置之一:
缺省选项。将同步文件系统事务写入到意图日志,然后刷新写入的所有设备,以确保数据稳定(即设备控制器未进行高速缓存)。
将每个文件系统事务写入到稳定的存储器中并刷新。此值对性能具有重大不利影响,但是适合为同步文件系统事务排除故障。
禁用同步请求。仅当下一次提交 DMU 事务组时,文具系统事务才会提交至稳定的存储器,这可能会延迟好几秒钟。此设置提供最高性能。但是,这是非常危险的,因为 ZFS 会忽略应用程序的同步事务要求,例如数据库或 NFS。而且,当此设置对当前活动的根或 /var 文件系统生效时,可能导致行为不合规范、应用程序数据丢失以及增加反复攻击的漏洞。管理员只应在了解这些风险时才使用此选项。
限制指定的用户占用的空间量。与 refquota 属性相似,计算 userquota 空间不包括后代数据集(例如快照和克隆)使用的空间。用户空间占用由 userspace@user 属性标识。
用户配额的实施可能会延迟几秒钟。这种延迟意味着在系统注意到用户超出配额前,用户可以超出其配额。系统然后会开始拒绝额外的写入内容,并提示 EDQUOT 错误消息。有关更多信息,请参见 zfs userspace 子命令。
未授权的用户只能访问各自的组的空间使用情况。root 用户或已用 zfs allow 授予 userquota 特权的用户,可以获取和设置每个人的配额。
对于卷、第 4 版以前的文件系统或第 15 版以前的池,此属性均不可用。zfs get all 不会显示 userquota@... 属性。必须使用以下形式之一在 @ 符号后加上用户名:
POSIX name(例如 joe)
POSIX numeric ID(例如 789)
SID name(例如 joe.smith@mydomain)
SID numeric ID(例如 S-1-123-456-789)
限制指定的组占用的空间量。组空间占用由 userspace@user 属性标识。
未授权的用户只能访问各自的组的空间使用情况。root 用户或已用 zfs allow 授予 groupquota 特权的用户,可以获取和设置所有组的配额。
控制是否可以修改此数据集。缺省值为 off。
该属性也可通过其简短列名 rdonly 来引用。
为文件系统中的文件指定建议的块大小。该属性专门设计用于对大小固定的记录中的文件进行访问的数据库工作负荷。ZFS 会根据为典型的访问模式优化的内部算法来自动调整块大小。
对于创建很大的文件但访问较小的随机块中的文件的数据库而言,这些算法可能不是最优的。将 recordsize 指定为大于或等于数据库的记录大小的值可以显著提高性能。强烈建议不要将该属性用于一般用途的文件系统,否则可能会对性能产生不利影响。
确实记录大小是 128 KB。指定的大小必须是 2 的若干次幂,并且必须大于或等于 512 字节同时小于或等于 1 MB。
更改文件系统的 recordsize 只影响以后创建的文件,现有文件和接收的数据不受影响。
该属性也可通过其简短列名 recsize 来引用。
限制数据集可以占用的空间量。此属性对使用的空间量强制实施硬限制。这种硬限制不包括后代以及文件系统和快照使用的空间。
为数据集(不含其后代)预留的最小空间量。如果 usedbydataset 空间低于此值,则认为数据集正在使用 refreservation 指定的空间量。usedbyrefreservation 数字表示该额外空间,并添加到数据集占用的总 used 空间,继而占用父数据集的用量、配额和预留空间。这将通过确保提前预留用于未来写操作的空间,防止数据集过度承载池资源。
与快照共享的空间此后将被新数据替换,快照表示承诺保留两份副本。如果设置了 refreservation,则必须考虑此承诺将 usedbyrefreservation 增加到拍摄新快照时 refreservation 的最大空间。如果对此增量没有足够空间可用于数据集,则将拒绝创建快照。
该属性也可通过其简短列名 refreserv 来引用。
为数据集及其后代预留的最小空间量。如果使用的空间量低于该值,则认为数据集正在占用其预留空间指定的空间量。父数据集的使用空间中会包含预留空间,并会针对父数据集的配额和预留空间对其进行计数。
该属性也可通过其简短列名 reserv 来引用。
指示文件系统是否通过 chown(1) 或 chown(2) 系统调用来限制用户放弃其文件。缺省值是限制 chown。如果 rstchown 为 off,则 chown 的行为将如同用户具有 PRIV_FILE_CHOWN_SELF 特权一样。
控制在二级高速缓存 (L2ARC) 中缓存的内容。如果将此属性设置为 all,则会高速缓存用户数据和元数据。如果将此属性设置为 none,则不会高速缓存用户数据和元数据。如果将此属性设置为 metadata,则只会高速缓存元数据。缺省值为 all。
控制文件系统是否遵照 set-UID 位。缺省值为 on。
将 ZFS 文件系统标识为 URI 所描述的文件系统的“影子”。设置该属性时,数据从 URI 标识的文件系统迁移到影子文件系统。将迁移的文件系统必须为只读才能进行完整迁移。
对影子文件系统中尚未迁移的目录的访问会被阻止,直到迁移了整个目录。对影子文件系统中尚未迁移的文件进行访问将导致只迁移被访问文件的一部分。多个进程可以同时迁移一个文件的不同部分。
接受两种格式的 URI,一种用于将本地文件系统迁移到同一物理系统上的其他文件系统,另一个用于从 NFS 服务器远程迁移文件系统。这两种格式为:
file:///path nfs://host/path
如果迁移完成时 shadowd(1M) 仍在运行,则文件系统将自动重新挂载(影子属性设置为 none)。或者,迁移完成时,您可以手动将影子属性设置为 none。
有关更多信息,请参见 zfs_share(1M)。
有关更多信息,请参见 zfs_share(1M)。
按照“快照”一节的讨论,控制在文件系统的根中是否隐藏或显示 .zfs 目录。缺省值为 hidden。
此文件系统的盘上版本,与池版本无关。只可以为后续支持的版本设置此属性。设置 zfs upgrade 命令。
指定卷的逻辑大小。缺省情况下,创建卷将建立稍大于实际逻辑卷大小的 refreservation,以用于 ZFS 源数据开销。对 volsize 的任何更改都会反映为对 refreservation 的等效更改。volsize 只可以设置为多个 volblocksize,并且不能为零。
在卷上设置 refreservation,以防止使用者的意外行为。如果没有预留空间,则卷可能用完空间,导致不明确的行为或数据损坏,具体取决于卷的使用方式。如果在卷的使用过程中(特别是在缩减大小时)更改卷大小,也会出现上述影响。调整卷大小时,需要格外小心。
可以通过指定 zfs create -V 命令的 -s 选项来创建“稀疏卷”(也称为“瘦置备”),但并不建议这样做。“稀疏卷”是预留空间小于卷大小的卷。因此,当池空间不足时,对稀疏卷的写操作可能因 ENOSPC 而失败。对于稀疏卷,预留空间中不会反映对 volsize 的更改。
有关更多信息,请参见 zfs_share(1M)。
控制是否为此文件系统启用扩展属性。缺省值为 on。
控制是否从非全局区域管理数据集。有关更多信息,请参见“区域”一节。缺省值为 off。
在创建文件系统后无法更改以下属性,因此在创建文件系统时应设置这些属性。如果未使用 zfs create 或 zpool create 命令设置属性,则从父数据集继承这些属性。如果在这些功能获得支持以前已创建的父数据集缺少这些属性,则新文件系统将为这些属性采用缺省值。
有关更多信息,请参见 zfs_share(1M)。
有关更多信息,请参见 zfs_share(1M)。
有关更多信息,请参见 zfs_share(1M)。
有关更多信息,请参见 zfs_encrypt(1M)。
在创建时必须指定以下属性,并可以使用特殊命令修改该属性:
有关更多信息,请参见 zfs_encrypt(1M)。
通过传统 mount(1M) 命令或 zfs mount 命令挂载文件系统时,将会根据其属性设置其挂载选项。属性与挂载选项之间的相互关系如下:
PROPERTY MOUNT OPTION devices devices/nodevices exec exec/noexec readonly ro/rw setuid setuid/nosetuid xattr xattr/noxattr rstchown rstchown/norstchown
此外,可以使用 -o 选项在每次挂载基础上设置这些选项,而不影响磁盘上存储的属性。命令行上指定的值会覆盖数据集中存储的值。-nosuid 选项是 nodevices,nosetuid 的别名。zfs get 命令将这些属性作为“临时”属性进行报告。对于 mountpoint 以外的属性,如果在挂载数据集时更改属性,则新设置会覆盖任何临时设置。在临时挂载点属性生效时(即在临时位置挂载数据集时),无法更改 mountpoint 属性。
除了标准的本机属性外,ZFS 还支持任意用户属性。用户属性对 ZFS 行为没有影响,但是应用程序或管理员可以使用这些属性来注释数据集(文件系统、卷和快照)。
用户属性名称必须含有一个冒号 (:) 字符,以便与本机属性区分。这些名称可包含小写字母、数字和以下标点符号:冒号 (:)、破折号 (-)、句号 (.) 和下划线 (_)。预期约定是将属性名称分为两部分,例如 module:property,但是 ZFS 并不强制执行这种名称空间。用户属性名称最多可有 256 个字符,不能以破折号 (-) 开头。
在程序中使用用户属性时,强烈建议对属性名的 module 部分使用反向 DNS 域名,以尽量避免两个独立开发的软件包将同一属性名用于不同用途。在 Oracle Solaris 发行版中,为 beadm 命令和库保留了 com.oracle 用户属性。
用户属性的值是任意字符串,始终会继承但是从不会验证这些值。对属性执行操作的所有命令(如 zfs list、zfs get、zfs set 等)都可用来处理本机属性和用户属性。使用 zfs inherit 命令可清除用户属性。如果任意父数据集中均未定义该属性,则会将其完全删除。属性值仅限于 1024 个字符。
初始安装期间,将会在 ZFS 根池的 ZFS 卷上创建交换设备和转储设备。必须将单独的 ZFS 卷用于交换区域和转储设备。在 ZFS 文件系统中,不要交换到文件。不支持 ZFS 交换文件配置。
通过为该设备指定 encryption 属性,以及在 vfstab(4) 中指定 encrypted 选项,可以对用作交换设备的 ZFS 卷进行加密。有关加密属性的更多信息,请参见 zfs_encrypt.1m。
如果您需要在安装或升级系统后更改交换区域或转储设备,请使用 swap(1M) 和 dumpadm(1M) 命令。如果需要更改交换区域或转储设备的大小,请参见《Oracle Solaris 管理:ZFS 文件系统》
修改状态的所有子命令将以原始形式永久记录到池中。
显示帮助消息。
显示 zfs 命令的用法信息。可以显示特定命令、属性或委托权限的帮助。如果显示特定命令或属性的帮助,将显示命令语法或属性值。在不带任何参数的情况下使用 zfs help 将显示完整的 zfs 命令列表。
创建新的 ZFS 文件系统。该文件系统会根据从父项继承的 mountpoint 属性自动挂载。
创建所有非现有的父数据集。以这种方式创建的数据集会根据从父项继承的 mountpoint 属性自动挂载。在命令行上使用 -o 选项指定的任何属性将被忽略。如果目标文件系统已经存在,则会成功完成此操作。
与在创建数据集时调用命令 zfs set property=value 一样设置指定的属性。在创建时也可设置任何可编辑的 ZFS 属性。可以指定多个 -o 选项。如果在多个 -o 选项中指定了相同的属性,则会导致错误。
创建一个给定大小的卷。该卷作为 /dev/zvol/{dsk,rdsk}/path 中的一个块设备导出,其中 path 是 ZFS 名称空间中卷的名称。size 表示设备导出的逻辑大小。缺省情况下,创建一个同等大小的预留空间。
size 自动舍入到最接近的 128 KB,确保无论 blocksize 有多大,卷具有的块数量均为整数。
创建所有非现有的父数据集。以这种方式创建的数据集会根据从父项继承的 mountpoint 属性自动挂载。在命令行上使用 -o 选项指定的任何属性将被忽略。如果目标文件系统已经存在,则会成功完成此操作。
创建一个不带预留空间的稀疏卷。有关稀疏卷的更多信息,请参见“本机属性”一节中的 volsize。
与在创建数据集时调用 zfs set property=value 命令一样设置指定的属性。在创建时也可设置任何可编辑的 ZFS 属性。可以指定多个 -o 选项。如果在多个 -o 选项中指定了相同的属性,则会导致错误。
相当于 -o volblocksize=blocksize。如果结合 -o volblocksize 指定此选项,则产生的行为不确定。
销毁给定的数据集。缺省情况下,此命令会取消共享当前已共享的任何文件系统,卸载当前已挂载的任何文件系统,并拒绝销毁具有活动相关项(子项或克隆)的数据集。
以递归方式销毁所有子项。
以递归方式销毁所有相关项,包括在目标分层结构以外克隆的文件系统。
强制使用 unmount -f 命令卸载任何文件系统。此选项对非文件系统或已卸载的文件系统没有影响。
在应用 -r 或 -f 选项时应非常谨慎,因为这些选项可以销毁大部分池,并导致正在使用的挂载文件系统出现意外行为。
当且仅当不带 -d 选项的 zfs destroy 命令会销毁快照时,才会立即销毁给定的快照。例如快照没有克隆和用户启动的引用计数为零的情况下,会发生此类立即销毁。
如果快照不符合立即销毁的资格,则将其标记为延期删除。在此状态下,此快照作为可用的可见快照存在,直到满足上述两个先决条件时将其删除。
延迟快照删除。
销毁后代文件系统中具有此名称的所有快照(或标记为延期删除)。
以递归方式销毁所有相关项。
以给定的名称创建快照。通过成功的系统调用对文件系统进行的所有以前的修改都是快照的一部分。zfs snap 可以用作 zfs snapshot 的别名。有关详细信息,请参见“快照”一节。
以递归方式创建所有后代数据集的快照。以原子方式创建快照,以便所有递归快照与创建快照的时刻相对应。
设置指定的属性;有关详细信息,请参见 zfs create。
将给定的数据集回滚到以前的快照。在回滚数据集时,将放弃自创建快照以来更改的所有数据,而且数据集会返回到创建快照时的状态。缺省情况下,该命令无法回滚到除最新快照以外的快照。为了执行此操作,必须通过指定 -r 选项销毁所有中间快照。
-rR 选项不以递归方式销毁递归快照的子快照。 这其中的任一选项仅销毁顶层递归快照。要完全回滚递归快照,必须回滚各个子快照。
递归销毁比指定的快照更新的快照。
递归销毁任何最新快照以及这些快照的任何克隆。
与 -R 选项配合使用以强制卸载要销毁的任何克隆文件系统。
创建给定快照的克隆。有关详细信息,请参见“克隆”一节。目标数据集可以位于 ZFS 分层结构中的任意位置,并且创建为与原始数据集相同的数据类型。
创建所有非现有的父数据集。以这种方式创建的数据集会根据从父项继承的 mountpoint 属性自动挂载。如果目标文件系统或卷已存在,则操作将成功完成。
设置指定的属性;有关详细信息,请参见 zfs create。
有关信息,请参见 zfs_encrypt(1M)。
将克隆文件系统提升为不再依赖于其“原始”快照。这使得可以销毁创建克隆所基于的文件系统。克隆父项-子项相关性关系将被颠倒,以便原始文件系统变为指定文件系统的克隆。
所克隆的快照和此快照之前的任何快照现在都归提升的克隆所有。这些快照使用的空间将从原始文件系统转移至提升的克隆,因此必须提供足够的空间容纳这些快照。此操作不占用任何新空间,但会调整空间记帐。提升的克隆不能有与其自身的名称冲突的任何快照名称。rename 子命令可用于重命名任何冲突的快照。
重命名给定的数据集。新目标可以位于 ZFS 分层结构中的任意位置(快照除外)。只能在父文件系统或卷中重命名快照。重命名快照时,无需将快照的父文件系统指定为第二个参数的一部分。重命名的文件系统可以继承新挂载点,在这种情况下,将卸载这些文件系统并在新挂载点重新挂载。
创建所有不存在的父数据集。以这种方式创建的数据集会根据从父项继承的 mountpoint 属性自动挂载。
递归重命名所有后代数据集的快照。快照是唯一可以递归重命名的数据集。
以表格格式列出给定数据集的属性信息。如果已指定,可以通过绝对路径名或相对路径名列出属性信息。缺省情况下,将显示所有文件系统和卷。如果 listsnaps 属性为 on(缺省值为 off),将显示快照。将显示以下字段:name、used、available、referenced、mountpoint。
用于脚本模式。不输出标题并通过单个制表符而不是任意空格分隔各个字段。
在命令行上递归显示数据集的任何子项。
递归显示数据集的任何子项,并将递归限制为最大 depth。深度为 1 时将仅显示数据集及其直接子项。
要显示的属性的逗号分隔列表。属性必须为:
“本机属性”一节中介绍的属性之一
用户属性
值 name,将显示数据集名称
值 space,将显示文件系统和卷上的空间使用情况属性。这是指定 -o name,avail,used,usedsnap,usedds,usedrefreserv,usedchild -t filesystem,volume 语法的快捷方式。
基于属性的值按列的升序对输出排序的属性。该属性必须为“属性”一节中介绍的属性之一,或者为按数据集名称排序的特殊值 name。可以使用多个 -s 属性选项一次指定多个属性。多个 -s 选项按重要性降序从左至右进行计算。
下面列出了排序条件:
数字类型按数字顺序排序。
字符串类型按字母顺序排序。
不适合某行的类型会将该行排序到字面值底部,而不管指定的排序方式为何。
如果未指定任何排序选项,将保留 zfs list 的现有行为。
与 -s 选项相同,但按属性的降序排序。
将显示逗号分隔的类型列表,其中 type 是 filesystem、snapshot、volume 或 all 之一。例如,指定 -t snapshot 时将仅显示快照。以下别名可用于替换类型说明符:fs(文件系统)、snap(快照)和 vol(卷)。
对每个数据集将该属性设置为给定值。只能编辑某些属性。有关可设置哪些属性和可接受的值的更多信息,请参见“属性”一节。指定数值作为确切值,或者使用后缀 B、K、M、G、T、P、E、Z (分别代表字节、KB、MB、GB、TB、PB、EB 和 ZB)以可读的格式指定数值。可以对快照设置用户属性。有关更多信息,请参见“用户属性”一节。
在子数据集的整个子树中递归应用设置的有效值。根据属性,可以设置或继承有效值。
显示给定数据集的属性。如果未指定任何数据集,则该命令将显示系统中所有数据集的属性。对于每个属性,将显示以下列:
name Dataset name property Property name value Property value source Property source. Can either be local, default, temporary, inherited, or none (-).
缺省情况下,将显示除 RECEIVED 列之外的所有列;使用 -o 选项指定特定列或所有列。此命令接受“本机属性”和“用户属性”一节中介绍的逗号分隔的属性列表。
特殊值 all 可用于显示应用于给定数据集的类型(文件系统、卷或快照)的所有属性。
递归显示任何子项的属性。
递归显示数据集的任何子项,并将递归限制为 depth。深度为 1 时将仅显示数据集及其直接子项。
以更容易被脚本解析的格式显示输出。将省略所有标题,并通过单个制表符而不是任意数量的空格显式分隔各个字段。
将显示字段集。包括一个或多个:
name,property,value,received,source
以逗号分隔的列表形式显示多个字段。缺省值为:
name,property,value,source
关键字 all 指定所有资源。
将显示逗号分隔的源列表。将忽略来自此列表中的源之外的某个源的属性。每个源必须是以下源之一:
local,default,inherited,temporary,received,none
缺省值是所有源。
显示可解析(确切)值中的数字。
有关 zfs set share 语法的完整描述,请参见 zfs_share(1M)。
清除指定的属性,以使从祖先继承该属性。如果没有祖先设置该属性,则将使用缺省值。有关缺省值的列表和可以继承的属性的详细信息,请参见“属性”一节。
递归继承所有子项的给定属性。
恢复为接收的属性值(如果有)。如果属性没有接收值,则 zfs inherit -S 的行为与不带 -S 的 zfs inherit 相同。如果属性有接收值,则 zfs inherit 会用继承的值覆盖接收的值,直到 zfs inherit -S 恢复为接收的值。
标识文件系统版本,这将确定当前运行的软件发行版中可用的文件系统功能。您可以继续使用旧文件系统版本,但某些功能可能不可用。文件系统可以使用 zfs upgrade - a 命令进行升级。无法在运行早期软件版本的系统上访问更高版本的文件系统。
显示当前软件支持的 ZFS 文件系统版本。将显示当前 ZFS 文件系统版本和所有先前支持的版本,同时显示每一版本所提供功能的说明。
将文件系统升级到新的盘上版本。如果升级文件系统,则意味着在运行旧软件版本的系统上将不再可以访问该文件系统。无法在运行旧软件版本的系统上访问从新文件系统快照生成的 zfs send 流。
通常,文件系统版本与池版本无关。有关 zpool upgrade 命令的信息,请参见 zpool(1M)。
在某些情况下,文件系统版本和池版本是相互关联的,在升级文件系统版本之前,必须升级池版本。
升级所有已导入池中的所有文件系统。
升级指定的文件系统。
升级指定的文件系统和所有后代文件系统。
升级到指定的 version。如果未指定 -V 标志, 此命令将升级到最新版本。此选项只能用于增加版本号,最高只能增加到此软件支持的最新版本。
显示指定文件系统或快照中每个用户占用的空间和每个用户的配额。这对应于 userused@user 和 userquota@user 属性。
显示语法帮助消息并退出。
输出数字 ID 而不是用户/组名称。
不输出标题,使用制表符分隔的输出。
使用确切的(可解析的)数字输出。
仅显示以下集中的指定字段:type,name,used,quota。缺省设置是显示所有字段。
按此字段对输出排序。可以多次指定 s 和 S 标志,以先按一个字段排序,然后按另一个字段排序。缺省值为 -s type -s name。
按此字段的相反顺序排序。请参见 -s。
仅输出以下集中的指定类型:all,posixuser,smbuser,posixgroup,smbgroup。
缺省值为 -t posixuser,smbuser
缺省值可以更改为包含组类型。
将 SID 转换为 POSIX ID。如果不存在映射,POSIX ID 可能是临时的。一般 POSIX 接口(例如,stat(2)、ls - l)执行此转换,因此通过 -i 选项,可以将 zfs userspace 的输出直接与这些实用程序进行比较。但是,如果在建立 SMB 至 POSIX 名称映射之前,SMB 用户已创建了某些文件,-i 可能会引起混淆。在这种情况下,一些文件归 SMB 实体所有,一些归 POSIX 实体所有。但是,-i 选项将报告,POSIX 实体具有这两种实体的总计使用量和配额。
显示指定文件系统或快照中每个组占用的空间和每个组的配额。此子命令等同于 zfs userspace,但不同的是将显示的缺省类型为 -t posixgroup,smbgroup。
-
显示当前挂载的所有 ZFS 文件系统。
挂载 ZFS 文件系统。自动在引导过程中调用。
将临时在挂载的持续时间中使用的可选、逗号分隔的挂载选项列表。有关详细信息,请参见“临时挂载点属性”一节。
执行覆盖挂载。有关更多信息,请参见 mount(1M)。
报告挂载进度。
挂载所有可用的 ZFS 文件系统。自动在引导过程中调用。
挂载指定的文件系统。
针对已加密数据集的 zfs mount 操作可能会提示您输入密钥,具体取决于 keysource 属性值。例如,如果 keysource 定位器设置为 prompt,可能会发生这种情况。
卸载当前挂载的 ZFS 文件系统。自动在关闭过程中调用。
强制卸载文件系统,即使当前正在使用该文件系统。
卸载所有可用的 ZFS 文件系统。自动在引导过程中调用。
卸载指定的文件系统。也可以为该命令指定系统上 ZFS 文件系统挂载点的路径。
对于已加密的数据集,卸载文件系统时,不会卸载密钥。要卸载密钥,请参见 zfs key。
有关 zfs share 语法和示例的完整描述,请参见 zfs_share(1M)。
有关 zfs unshare 语法和示例的完整描述,请参见 zfs_share(1M)。
创建第二个 snapshot 的流表示,该快照将写入标准输出。输出可以重定向到文件或不同的系统(例如,使用 ssh(1))。缺省情况下,生成完整的流。
仅发送接收的属性值,无论这些值是否将被本地设置覆盖,但仅当已接收到数据集时才发送。当希望 zfs receive 恢复在所发送数据集中备份的接收属性,并避免发送可能与源数据集没有任何关系的本地设置,但仅通过备份数据的方式时,可使用此选项。
创建自包含流。自包含流不依赖于任何不包含在流软件包中的数据集。仅在与 -r 选项一起使用时有效。如果与 -i 选项一起使用,则流将依赖于指定为该选项的参数的快照。
有关详细信息,请参见《Solaris ZFS 管理指南》中的“ZFS 流”部分。
对流执行 dedup 处理。在不支持流重复数据删除功能的系统上,无法接收重复数据删除流。
要了解复制流软件包与递归流软件包的不同之处,请参见《Solaris ZFS 管理指南》中的“ZFS 流”部分。
从第一个 snapshot 到第二个 snapshot 执行增量流。增量源(第一个 snapshot)可以指定为快照名称的最后一部分(例如,@ 之后的部分),假设其来自于与第二个 snapshot 相同的文件系统。
如果目标是克隆,则源可以是原始快照,必须完整指定该快照(例如 pool/fs@origin,而不仅是 @origin)。
生成流软件包,该软件包将第一个快照中的所有中间快照发送到第二个快照。例如,-I @a fs@d 类似于 -i @a fs@b; -i @b fs@c; -i @c fs@d。可以与 -i 选项一样指定增量源快照。
生成复制流软件包,这将复制指定的文件系统、所有后代文件系统以及命名快照。接收时,所有属性、快照、后代文件系统和克隆都将被保留。
如果将 -i 或 -I 标志与 -R 标志结合使用,则会生成增量复制流。属性的当前值、当前快照和文件系统名称是在接收流时设置的。如果接收该流时指定了 -F 标志,则会销毁发送端不存在的快照和文件系统。
生成递归流软件包。递归流软件包包含一系列完整流和/或增量流。接收后,将保留所有属性和后代文件系统。不同于使用 -R 标识生成的复制流软件包,中间快照不被保留,除非中间快照是包含在流中的克隆的原始版本。
如果 -i 选项与 -r 选项结合使用,则生成增量式递归流。属性的当前值、当前快照以及文件系统名称是在接收流时设置的。如果接收该流时指定了 -F 选项,则会销毁发送端不存在的快照和文件系统。-I 选项不能与 -r 选项一起使用。
与 -c 选项结合时,将创建自包含递归流软件包。如果同时使用 -c 和 -i 选项,则不具有使用 -i 选项指定的快照的文件系统和卷将作为自包含流发送。
要了解递归流软件包与复制流软件包的不同之处,请参见《Solaris ZFS 管理指南》中的“ZFS 流”部分。
发送属性。
输出有关所生成流软件包的详细信息。
将提交流的格式。您将接收到有关将来版本的 ZFS 的流。
创建一个快照,其内容与在标准输入中提供的流中指定的内容相同。如果接收了完整的流,那么同时会创建一个新文件系统。流使用 zfs send 子命令创建,缺省情况下通过该命令将创建完整的流。 zfs recv 可以用作 zfs receive 的别名。
如果接收增量流,则目标文件系统必须已存在,并且其最新快照必须与增量流的源匹配。对于 ZFS 卷,将销毁并重新创建目标设备链接,这意味着在 receive 操作期间无法访问该卷。
当接收使用 zfs send -R 命令生成的快照复制软件包流时,将使用 zfs destroy -d 命令销毁发送位置中不存在的任何快照。如果指定了 - o property=value 或 -x 属性,则其将应用于复制数据集的整个子树中属性的有效值。可以设置或继承有效属性值,具体取决于属性以及数据集是否位于复制子树中的最顶层。接收的属性尽管将被覆盖仍会保留,可以使用 zfs inherit -rS 或 zfs send -Rb 恢复。
此子命令创建的快照的名称(和文件系统,如果接收完整的流)取决于参数类型和 -d 或 -e 选项。
如果参数为快照名称,则将创建指定的 snapshot。如果参数为文件系统或卷名称,则会在指定的 filesystem 或volume 中创建与发送的快照名称相同的快照。如果指定了 -d 或 -e 选项,则快照的名称通过将所发送快照的名称附加到指定的文件系统来确定。如果指定了 -d 选项,则将附加除所发送快照路径的池名称之外的所有内容(例如,附加的 b/c@1 来自所发送的快照 a/b/c@1),如果指定了 -e 选项,则仅附加所发送快照路径的尾部(例如,附加的 c@1 来自所发送的快照 a/b/c@1)。在使用 -d 的情况下,将在指定的文件系统中创建复制所发送快照的路径需要的所有文件系统。
使用除所发送快照路径的第一个元素之外的任何元素(除池名称之外的所有内容)确定上述段落中介绍的新快照的名称。
使用所发送快照路径的最后一个元素确定上述段落中介绍的新快照的名称。
执行接收操作之前,将文件系统强制回滚到最新快照。如果接收增量复制流(例如,zfs send -R -[iI] 生成的流),则将销毁发送端不存在的快照和文件系统。
不实际接收该流。此选项可与 -v 选项结合使用来验证接收操作将使用的名称。
设置指定的属性,就好像在调用命令 zfs set property=value 的同时,从非增量 send 流创建了接收的数据集,或从增量 send 流更新了接收的数据集。也可以在接收时设置任何可编辑的 ZFS 属性。绑定到接收数据的一次性设置属性(例如 normalization 和 casesensitivity)无法在接收时编辑,甚至当通过 zfs receive 新创建数据集时也是如此。可以指定多个 -o 选项。如果在多个 -o 或 -x 选项中指定相同的属性,则会发生错误。
未挂载与接收流关联的文件系统。
输出有关执行接收操作所需的流和时间的详细信息。
确保 receive 后的指定属性的有效值不受 send 流(如果有)中该属性的值的影响,就好像属性已从 send 流中排除一样。如果指定的属性在 send 流中不存在,则此选项不起作用。如果需要覆盖接收的属性,则可以设置或继承有效值,具体取决于属性。在使用增量更新的情况下,-x 会保持任何现有的本地设置或显式继承不变(因为已覆盖接收属性)。所有 -o 限制同样适用于 -x。
有关 zfs allow 语法和示例的完整描述,请参见 zfs_allow(1M)。
有关 zfs unallow 语法和示例的完整描述,请参见 zfs_allow(1M)。
向指定快照中添加通过 tag 参数命名的单个引用。每个快照都有其自己的标志名称空间,标志在该空间内必须是唯一的。
如果一个快照上存在一个保持,尝试使用 zfs destroy 命令销毁该快照将返回 EBUSY。
指定将具有特定标志的保持递归应用于所有后代文件系统的快照。
列出指定快照的所有现有用户引用。
除了列出命名快照上的保持外,还列出在命名后代快照上设置的保持。
从指定快照中删除通过 tag 参数命名的单个引用。每个快照的标志必须已经存在。
如果一个快照上存在一个保持,尝试使用 zfs destroy 命令销毁该快照将返回 EBUSY。
在所有后代文件系统的快照上递归释放具有特定标志的保持。
提供快照与后代数据集之间的区别的高级说明。后代可以是数据集的快照或当前数据集。
如果指定单个快照,将提供该快照和当前数据集之间的区别。
对于已执行原始快照与后代之间的更改的每个文件,将与文件名一起说明更改的类型。如果重命名,旧名称和新名称都显示。对于在文件名中找到的空格字符、反斜杠字符及其他无法输出或非 7 位的 ASCII 字符,都显示为三位八进制表示的字节值前面的反斜杠字符。
如果已指定 -t 选项,该命令的第一列输出是文件的 st_ctim 值。对于已删除的文件,这是以前快照中的最终 st_ctim。
更改类型遵循显示的任何时间戳并通过单字符说明:
指明文件是在后来的数据集内添加的。
指明文件是在后来的数据集内删除的。
指明文件是在后来的数据集内修改的。
指明文件是在后来的数据集内重命名的。
如果已指定 -F 选项,下一列输出将是说明文件类型的单字符。这些映射为:
正规文件
目录
块设备
门
FIFO
符号链接
事件门户
套接字
如果修改涉及非目录文件的链接计数中的更改,该更改将表示为修改行中的圆扩号内的增量。如果重命名该文件,则会使用字符串 "->" 将旧名称与新名称隔开。
如果选择 -H 选项,将生成更易于解析的输出。字段用单个制表符隔开,重命名的旧名称与新名称之间不放置箭头字符串 (->)。不能保证非 -H 输出的字段之间存在间距。
如果选中 -e 选项,则将逐一列出两个快照之间添加或修改的所有文件,不会显示删除的文件。无论修改是何种类型,更改类型将始终报告为 "+"。
如果选中 -E 选项,则提供的区别与空的快照和指定快照或数据集之间的区别一样。
如果选中 -o 字段选项,则只显示选中字段。每行以通过 -F 和 -t 选项请求的标准字段开始,后跟后续 -o 选项中请求的字段。与 -H 选项一样,所有字段都以单个制表符分隔。允许的字段名称包括:
ls-i 输出的文件编号
ls-i 输出的文件所在目录的编号
ls-s 显示的文件大小
指向文件的链接数
指向文件的链接数的更改
文件名称
重命名之前文件的名称,或者 —(连字符)(如果文件未重命名)
ls 显示的文件属主的用户名
ls 显示的文件的组名
上一次修改文件元数据的时间戳
上一次修改文件的时间戳
上一次访问文件的时间戳
创建文件的时间戳
除非用户已具有 {PRIV_SYS_CONFIG} 或 {PRIV_SYS_MOUNT} 特权,否则必须通过 zfs allow 向他们授予 diff 权限才能使用该子命令。
有关 zfs key 语法和示例的完整描述,请参见 zfs_encrypt(1M)。
示例 1 创建 ZFS 文件系统分层结构
以下命令创建名为 pool/home 的文件系统和名为 pool/home/bob 的文件系统。对父文件系统设置挂载点 /export/home,子文件系统将自动继承该挂载点。
# zfs create pool/home # zfs set mountpoint=/export/home pool/home # zfs create pool/home/bob
示例 2 创建 ZFS 快照
以下命令创建名为 yesterday 的快照。该快照按要求挂载在 pool/home/bob 文件系统根目录中的 .zfs/snapshot 目录下。
# zfs snapshot pool/home/bob@yesterday
示例 3 创建和销毁多个快照
以下命令为 pool/home 及其所有后代文件系统创建名为 yesterday 的快照。每个快照都按要求挂载在其文件系统根目录中的 .zfs/snapshot 目录下。第二个命令销毁新建的快照。
# zfs snapshot -r pool/home@yesterday # zfs destroy -r pool/home@yesterday
示例 4 禁用和启用文件系统压缩
以下命令禁用 pool/home 下的所有文件系统的 compression 属性。下一个命令显式启用 pool/home/anne 的 compression。
# zfs set compression=off pool/home # zfs set compression=on pool/home/anne
示例 5 列出 ZFS 数据集
以下命令列出所有的活动文件系统和系统中的卷。如果 listsnaps 属性为 on,将显示快照。缺省值为 off。有关池属性的更多信息,请参见 zpool(1M)。
# zfs list NAME USED AVAIL REFER MOUNTPOINT pool 450K 457G 18K /pool pool/home 315K 457G 21K /export/home pool/home/anne 18K 457G 18K /export/home/anne pool/home/bob 276K 457G 276K /export/home/bob
示例 6 在 ZFS 文件系统上设置配额
以下命令将 pool/home/bob 的配额设置为 30 GB。
# zfs set quota=30G pool/home/bob
示例 7 列出 ZFS 属性
以下命令列出 pool/home/bob 的所有属性。
# zfs get all pool/home/bob NAME PROPERTY VALUE SOURCE pool/home/bob type filesystem - pool/home/bob creation Fri Jul 15 11:53 2011 - pool/home/bob used 31K - pool/home/bob available 30.0G - pool/home/bob referenced 31K - pool/home/bob compressratio 1.00x - pool/home/bob mounted yes - pool/home/bob quota 30G local pool/home/bob reservation none default pool/home/bob recordsize 128K default pool/home/bob mountpoint /pool/home/bob default pool/home/bob sharenfs off default pool/home/bob checksum on default pool/home/bob compression on default pool/home/bob atime on default pool/home/bob devices on default pool/home/bob exec on default pool/home/bob setuid on default pool/home/bob readonly off default pool/home/bob zoned off default pool/home/bob snapdir hidden default pool/home/bob aclmode discard default pool/home/bob aclinherit restricted default pool/home/bob canmount on default pool/home/bob xattr on default pool/home/bob copies 1 default pool/home/bob version 5 - pool/home/bob utf8only off - pool/home/bob normalization none - pool/home/bob casesensitivity mixed - pool/home/bob vscan off default pool/home/bob nbmand off default pool/home/bob sharesmb off default pool/home/bob refquota none default pool/home/bob refreservation none default pool/home/bob primarycache all default pool/home/bob secondarycache all default pool/home/bob usedbysnapshots 0 - pool/home/bob usedbydataset 31K - pool/home/bob usedbychildren 0 - pool/home/bob usedbyrefreservation 0 - pool/home/bob logbias latency default pool/home/bob dedup off default pool/home/bob mlslabel none default pool/home/bob sync standard default pool/home/bob encryption off - pool/home/bob keysource none default pool/home/bob keystatus none - pool/home/bob rekeydate - default pool/home/bob rstchown on default pool/home/bob shadow none -
以下命令获取单个属性值。
# zfs get -H -o value compression pool/home/bob on
以下命令列出具有 pool/home/bob 的本地设置的所有属性。
# zfs get -r -s local -o name,property,value all pool/home/bob NAME PROPERTY VALUE pool/home/bob quota 30G pool/home/bob compression on
示例 8 回滚 ZFS 文件系统
以下命令将 pool/home/anne 的内容恢复为名为 yesterday 的快照,并删除所有中间快照。
# zfs rollback -r pool/home/anne@yesterday
示例 9 创建 ZFS 克隆
以下命令创建初始内容与 pool/home/bob@yesterday 相同的可写文件系统。
# zfs clone pool/home/bob@yesterday pool/clone
示例 10 提升 ZFS 克隆
以下命令说明如何使用克隆、克隆提升及重命名检验文件系统的更改,然后将原始文件系统替换为更改的文件系统。
# zfs create pool/project/production populate /pool/project/production with data # zfs snapshot pool/project/production@today # zfs clone pool/project/production@today pool/project/beta make changes to /pool/project/beta and test them # zfs promote pool/project/beta # zfs rename pool/project/production pool/project/legacy # zfs rename pool/project/beta pool/project/production once the legacy version is no longer needed, it can be destroyed # zfs destroy pool/project/legacy
示例 11 继承 ZFS 属性
以下命令使 pool/home/bob 和 pool/home/anne 继承其父项的 checksum 属性。
# zfs inherit checksum pool/home/bob pool/home/anne
示例 12 远程复制 ZFS 数据
以下命令将完整流和增量流依次发送到远程计算机中,以将它们分别恢复到 poolB/received/fs@a 和 poolB/received/fs@b 中。poolB 必须包含文件系统 poolB/received,最初不能包含 poolB/received/fs。
# zfs send pool/fs@a | \ ssh host zfs receive poolB/received/fs@a # zfs send -i a pool/fs@b | ssh host \ zfs receive poolB/received/fs
示例 13 使用 zfs receive -d 选项
以下命令将 poolA/fsA/fsB@snap 的完整流发送到远程计算机中,以将其接收到 poolB/received/fsA/fsB@snap 中。已接收快照的名称中的 fsA/fsB@snap 部分是基于发送快照的名称决定的。poolB 必须包含文件系统 poolB/received。如果 poolB/received/fsA 不存在,将其作为空文件系统创建。
# zfs send poolA/fsA/fsB@snap | \ ssh host zfs receive -d poolB/received
示例 14 设置用户属性
以下示例可以为数据集设置用户定义的 com.example:department 属性。
# zfs set com.example:department=12345 tank/accounting
示例 15 执行滚动快照
以下示例显示如何通过一致的命名方案维护快照的历史信息。为保留一周的快照,用户销毁最早的快照,重命名剩余的快照,然后创建新快照,如下所示:
# zfs destroy -r pool/users@7daysago # zfs rename -r pool/users@6daysago @7daysago # zfs rename -r pool/users@5daysago @6daysago # zfs rename -r pool/users@4daysago @5daysago # zfs rename -r pool/users@3daysago @4daysago # zfs rename -r pool/users@2daysago @3daysago # zfs rename -r pool/users@yesterday @2daysago # zfs rename -r pool/users@today @yesterday # zfs snapshot -r pool/users@today
示例 16 显示 ZFS 快照的差别
以下示例是指定的 zfs diff -F 和 -t 选项的输出:
# zfs diff -Ft myfiles@snap1 1269962501.206726811 M / /myfiles/ 1269962444.207369955 M F /myfiles/link_to_me (+1) 1269962499.207519034 R /myfiles/rename_me -> /myfiles/renamed 1269962431.813566720 - F /myfiles/delete_me 1269962518.666905544 + F /myfiles/new_file 1269962501.393099817 + | /myfiles/new_pipe
将返回以下退出值:
成功完成。
出现错误。
指定的命令行选项无效。
有关以下属性的说明,请参见 attributes(5):
|
chmod(1)、chown(1)、pktool(1)、ssh(1)、mount(1M)、shadowd(1M)、share(1M)、share_nfs(1M)、share_smb(1M)、unshare(1M)、zonecfg(1M)、zpool(1M)、chmod(2)、chown(2)、stat(2)、write(2)、fsync(3C)、dfstab(4)、vfstab(4)、attributes(5)
请参见 gzip(1) 手册页,该页不属于 SunOS 手册页集合。
有关其他 ZFS 功能的信息,请参见 zfs_allow(1M)、zfs_encrypt(1M)、zfs_share(1M) 和《Oracle Solaris 管理:ZFS 文件系统》。
如通过 diff 子命令修改中所述的文件可能已通过多种方式进行了修改。使 st_ctim(请参见 stat(2))中发生更改的任何操作都是报告修改的基础。