'\" te .\" Copyright (c) 2004, 2015, Oracle and/or its affiliates.All rights reserved. .TH zpool 1M "2015 年 9 月 23 日" "SunOS 5.11" "系统管理命令" .SH 名称 zpool \- 配置 ZFS 存储池 .SH 用法概要 .LP .nf \fBzpool\fR [\fB-?\fR] .fi .LP .nf \fBzpool help\fR \fIcommand\fR | help | \fIproperty\fR \fIproperty-name\fR .fi .LP .nf \fBzpool\fR \fBhelp\fR \fB-l\fR \fBproperties\fR .fi .LP .nf \fBzpool add\fR [\fB-f\fR] [\fB-n\fR [\fB-l\fR]] \fIpool\fR \fIvdev\fR ... .fi .LP .nf \fBzpool attach\fR [\fB-f\fR] \fIpool\fR \fIdevice\fR \fInew_device\fR .fi .LP .nf \fBzpool clear\fR [\fB-nF\fR [\fB-f\fR]] \fIpool\fR [\fIdevice\fR] .fi .LP .nf \fBzpool create\fR [\fB-f\fR] [\fB-n\fR [\fB-l\fR]] [\fB-B\fR] [\fB-N\fR] [\fB-o\fR \fIproperty=value\fR] ... [\fB-O\fR \fIfile-system-property=value\fR] ... [\fB-m\fR \fImountpoint\fR] [\fB-R\fR \fIroot\fR] [\fB-t\fR \fItmppool\fR] \fIpool\fR \fIvdev\fR ... .fi .LP .nf \fBzpool destroy\fR [\fB-f\fR] \fIpool\fR .fi .LP .nf \fBzpool detach\fR \fIpool\fR \fIdevice\fR .fi .LP .nf \fBzpool export\fR [\fB-f\fR] \fIpool\fR ... .fi .LP .nf \fBzpool get\fR \fBall\fR | \fIproperty\fR[,...] \fIpool\fR ... .fi .LP .nf \fBzpool history\fR [\fB-il\fR] [\fIpool\fR] ... .fi .LP .nf \fBzpool import\fR [\fB-d\fR \fIpath\fR ...] [\fB-D\fR] [-l] .fi .LP .nf \fBzpool import\fR [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile\fR][\fB-F\fR [\fB-n\fR <\fIpool\fR | \fIid\fR> .fi .LP .nf \fBzpool import\fR [\fB-o \fImntopts\fR\fR] [\fB-o\fR \fIproperty=value\fR] ... [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile\fR] [\fB-D\fR] [\fB-f\fR] [\fB-m\fR] [\fB-N\fR] [\fB-R\fR \fIroot\fR] [\fB-F\fR [\fB-n\fR]] \fB-a\fR \fIpool\fR | \fIid\fR [\fInewpool\fR] .fi .LP .nf \fBzpool import\fR [\fB-o \fImntopts\fR\fR] [\fB-o\fR \fIproperty=value\fR] ... [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile\fR] [\fB-D\fR] [\fB-f\fR] [\fB-m\fR] [\fB-N\fR] [\fB-R\fR \fIroot\fR] [\fB-F\fR [\fB-n\fR]] [\fB-t\fR \fBtmppool\fR] \fIpool\fR | \fIid\fR [\fInewpool\fR] .fi .LP .nf \fBzpool iostat\fR [\fB-T\fR d|u ] [\fB-v\fR [\fB-l\fR]] [\fIpool\fR] ... [\fIinterval\fR[\fIcount\fR]] .fi .LP .nf \fBzpool list\fR [\fB-H\fR] [\fB-o\fR \fIproperty\fR[,...]] [\fB-T\fR d|u ] [\fIpool\fR] ... [\fIinterval\fR[\fIcount\fR]] .fi .LP .nf \fBzpool offline\fR [\fB-t\fR] \fIpool\fR \fIdevice\fR ... .fi .LP .nf \fBzpool online\fR [\fB-e\fR] \fIpool\fR \fIdevice\fR ... .fi .LP .nf \fBzpool remove\fR \fIpool\fR \fIdevice\fR ... .fi .LP .nf \fBzpool replace\fR [\fB-f\fR] \fIpool\fR \fIdevice\fR [\fInew_device\fR] .fi .LP .nf \fBzpool scrub\fR [\fB-s\fR] \fIpool\fR ... .fi .LP .nf \fBzpool set\fR \fIproperty\fR=\fIvalue\fR \fIpool\fR .fi .LP .nf \fBzpool split\fR [\fB-n\fR [\fB-l\fR]] [\fB-R\fR \fIaltroot\fR] [\fB-o\fR \fImntopts\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] \fIpool\fR \fInewpool\fR [\fIdevice\fR ...] .fi .LP .nf \fBzpool status\fR [\fB-l\fR] [\fB-v\fR] [\fB-x\fR] [\fB-T\fR d|u ] [\fIpool\fR] ... [\fIinterval\fR[\fIcount\fR]] .fi .LP .nf \fBzpool upgrade\fR .fi .LP .nf \fBzpool upgrade\fR \fB-v\fR .fi .LP .nf \fBzpool upgrade\fR [\fB-V\fR \fIversion\fR] \fB-a\fR | \fIpool\fR ... .fi .LP .nf \fBzpool monitor\fR -t provider [-T d|u] [[-p] -o \fIfield\fR[,. . .]] [\fIpool\fR] . . . [\fIinterval\fR [\fIcount\fR]] .fi .SH 描述 .sp .LP \fBzpool\fR 命令配置 \fBZFS\fR 存储池。存储池是一种设备集合,提供 \fBZFS\fR 数据集的物理存储和数据复制。 .sp .LP 存储池内的所有数据集共享同一个空间。有关管理数据集的信息,请参见 \fBzfs\fR(1M)。 .SS "虚拟设备 (vdev)" .sp .LP \fB虚拟设备\fR描述的是单个设备或者按特定的性能和故障特征组织的设备集合。支持的虚拟设备如下: .sp .ne 2 .mk .na \fB\fBdisk\fR\fR .ad .sp .6 .RS 4n 一种块设备,通常位于 \fB/dev/dsk\fR 下。\fBZFS\fR 可以使用单个分片或分区,但推荐的操作模式是使用整个磁盘。可以通过全路径指定磁盘,也可以使用缩略名称(\fB/dev/dsk\fR 下的相对路径部分)。通过省略分片或分区部分,可以指定整个磁盘。或者,可以使用描述磁盘当前位置的 \fB/dev/chassis/.../disk\fR 路径指定整个磁盘。如果指定整个磁盘,\fBZFS\fR 会在必要时自动为磁盘添加标签。 .RE .sp .ne 2 .mk .na \fB\fBfile\fR\fR .ad .sp .6 .RS 4n 一种常规文件。强烈建议不要使用文件作为后备存储。它主要是为试验目的而设计的,因为文件的容错能力与其所属的文件系统相同。必须用全路径指定文件。 .RE .sp .ne 2 .mk .na \fB\fBmirror\fR\fR .ad .sp .6 .RS 4n 两个或更多设备的镜像。数据以完全相同的方式在一个镜像的所有组件之间进行复制。包含 \fIN\fR 个大小为 \fIX\fR 的磁盘的镜像可以存放 \fIX\fR 字节,并可承受 (\fIN-1\fR) 个设备故障而不会损害数据完整性。 .RE .sp .ne 2 .mk .na \fB\fBraidz\fR\fR .ad .br .na \fB\fBraidz1\fR\fR .ad .br .na \fB\fBraidz2\fR\fR .ad .br .na \fB\fBraidz3\fR\fR .ad .sp .6 .RS 4n \fBRAID-5\fR 的一种变体,可以更好地分配奇偶校验,消除“\fBRAID-5\fR 写入漏洞”(在这种漏洞中,数据和奇偶校验会在断电后变得不一致)。数据和奇偶校验在 \fBraidz\fR 组内的所有磁盘间呈条带分布。 .sp \fBraidz\fR 组可以有单一、双重或三重奇偶校验,即 \fBraidz\fR 组分别可以承受一次、两次或三次故障而不会丢失任何数据。\fBraidz1\fR \fBvdev\fR 类型指定单一奇偶校验 \fBraidz\fR 组,\fBraidz2\fR \fBvdev\fR 类型指定双重奇偶校验 \fBraidz\fR 组,\fBraidz3\fR \fBvdev\fR 类型指定三重奇偶校验 \fBraidz\fR 组。\fBraidz\fR \fBvdev\fR 类型是 \fBraidz1\fR 的一个别名。 .sp 一个包含 \fIN\fR 个大小为 \fIX\fR 的 \fBraidz\fR 组(其中有 \fIP\fR 个奇偶校验磁盘)可以存放大约 (\fIN-P\fR)*\fIX\fR 字节,并可承受 \fIP\fR 个设备故障而不会损害数据完整性。一个 \fBraidz\fR 组中的设备数量至少比奇偶校验磁盘数多一个。推荐的数量在 3 到 9 个之间,这有助于提高性能。 .RE .sp .ne 2 .mk .na \fB\fBspare\fR\fR .ad .sp .6 .RS 4n 一种特殊的伪 vdev,可以跟踪池的可用热备件。有关更多信息,请参见“热备件”部分。 .RE .sp .ne 2 .mk .na \fB\fBlog\fR\fR .ad .sp .6 .RS 4n 独立意图日志设备。如果指定了多个日志设备,则将在设备之间进行写负载平衡。可以镜像日志设备。但是,意图日志不支持 \fBraidz\fR \fBvdev\fR 类型。有关更多信息,请参见“意图日志”部分。 .RE .sp .ne 2 .mk .na \fB\fBcache\fR\fR .ad .sp .6 .RS 4n 用于高速缓存存储池数据的设备。不能将高速缓存设备配置为镜像或 \fBraidz\fR 组。有关更多信息,请参见“高速缓存设备”部分。 .RE .sp .LP 虚拟设备不能嵌套,因此镜像或 \fBraidz\fR 虚拟设备只能包含文件或磁盘。不允许有镜像的镜像(或其他组合)。 .sp .LP 一个池可以在配置的顶层具有任意数目的虚拟设备,称为\fB根 vdev\fR。数据在所有顶层设备间动态分布,以平衡设备间的数据。添加新的虚拟设备时,\fBZFS\fR 自动将数据放在新近可用的设备上。 .sp .LP 虚拟设备在命令行上是逐次指定的,多个虚拟设备间用空格分隔。关键字 \fBmirror\fR 和 \fBraidz\fR 用于区分一个组的结束和另一个组的开始。例如,以下命令将创建两个根 vdev,其中每个根 vdev 都是两个磁盘的镜像。 .sp .in +2 .nf # \fBzpool create mypool mirror c0t0d0 c0t1d0 mirror c1t0d0 c1t1d0\fR .fi .in -2 .sp .sp .LP 或者,可以使用以下命令: .sp .in +2 .nf # \fBzpool create tank \e mirror \e /dev/chassis/RACK29.U01-04/DISK_00/disk \e /dev/chassis/RACK29.U05-08/DISK_00/disk \e mirror \e /dev/chassis/RACK29.U01-04/DISK_01/disk \e /dev/chassis/RACK29.U05-08/DISK_01/disk\fR .fi .in -2 .sp .SS "池或设备故障以及恢复" .sp .LP \fBZFS\fR 支持一套丰富的机制,用于处理设备故障和数据损坏。会对所有元数据和数据进行校验和计算,在检测到数据损坏时,\fBZFS\fR 会自动根据好的副本修复坏数据。 .sp .LP 为了利用这些功能,池必须采用某种形式的冗余(使用镜像组或 \fBraidz\fR 组)。虽然 \fBZFS\fR 支持在非冗余配置下运行,但在每个根 vdev 都只是一个磁盘或文件的情况下,强烈建议不要这样做。只要出现一个数据位损坏,就会导致部分或所有数据不可用。 .sp .LP 池的运行状态用以下四种状态之一来表示: .sp .ne 2 .mk .na \fB\fBDEGRADED\fR\fR .ad .sp .6 .RS 4n 池中有一个或多个设备发生了故障,但由于有冗余配置,数据仍然可用。 .RE .sp .ne 2 .mk .na \fB\fBONLINE\fR\fR .ad .sp .6 .RS 4n 池中的所有设备都正常运行。 .RE .sp .ne 2 .mk .na \fB\fBSUSPENDED\fR\fR .ad .sp .6 .RS 4n 池在等待设备连接恢复。在设备问题得到解决之前,挂起的池一直处于等待状态。 .RE .sp .ne 2 .mk .na \fB\fBUNAVAIL\fR\fR .ad .sp .6 .RS 4n 池中有损坏的元数据,或者有一个或多个设备不可用,并且没有足够的副本支持继续运行。 .RE .sp .LP 顶层 vdev(如镜像或 \fBraidz\fR 设备)的运行状况可能会受与其关联的 vdev 或组件设备状态的影响。顶层 vdev 或组件设备处于以下状态之一: .sp .ne 2 .mk .na \fB\fBDEGRADED\fR\fR .ad .sp .6 .RS 4n 一个或多个顶层 vdev 处于降级状态,因为有一个或多个组件设备脱机。有足够的副本支持继续运行。 .sp 一个或多个组件设备处于降级或故障状态,但有足够的副本支持继续运行。底层条件如下: .RS +4 .TP .ie t \(bu .el o 校验和错误的数量超出了可接受的程度,设备降级,这表明某个组件可能出现问题。\fBZFS\fR 在必要时会继续使用该设备。 .RE .RS +4 .TP .ie t \(bu .el o I/O 错误的数量超出了可接受的程度。不能将该设备标记为故障,因为还有足够的副本支持继续运行。 .RE .RE .sp .ne 2 .mk .na \fB\fBOFFLINE\fR\fR .ad .sp .6 .RS 4n 已通过 \fBzpool offline\fR 命令明确将设备置于脱机状态。 .RE .sp .ne 2 .mk .na \fB\fBONLINE\fR\fR .ad .sp .6 .RS 4n 设备联机并正常运行。 .RE .sp .ne 2 .mk .na \fB\fBREMOVED\fR\fR .ad .sp .6 .RS 4n 系统正在运行时已物理移除了该设备。设备移除检测依赖于硬件,而且并非在所有平台上都受支持。 .RE .sp .ne 2 .mk .na \fB\fBUNAVAIL\fR\fR .ad .sp .6 .RS 4n 无法打开设备。如果在设备不可用时导入了某个池,则将用唯一标识符(而不是路径)标识该设备,因为最初的路径绝对不会正确。 .RE .sp .LP 如果移除设备后重新将其连接到系统,\fBZFS\fR 会自动尝试将设备置于联机状态。设备连接检测依赖于硬件,而且并非在所有平台上都受支持。 .SS "热备件" .sp .LP \fBZFS\fR 允许设备以\fB热备件\fR的方式与池关联。这些设备在池中的使用情况并不活跃,但在某个活动设备发生故障时,热备件会自动替换它。要创建带热备件的池,请对任意数量的设备指定 \fBspare\fR vdev。例如, .sp .in +2 .nf # \fBzpool create pool mirror c0d0 c1d0 spare c2d0 c3d0\fR .fi .in -2 .sp .sp .LP 可以使用 \fBzpool add\fR 命令添加备件,使用 \fBzpool remove\fR 命令删除备件。一旦启动了备件替换,将在配置中创建一个新的备件 vdev,并且该备件将保留到原始设备被替换为止。此时,如果又有另外的设备发生故障,热备件将重新变得可用。 .sp .LP 通过分离热备件,可以取消正在进行的备件替换。如果分离了原始故障设备,则热备件将取代故障备件在配置中的位置,并会从所有活动池的备件列表中移除。 .sp .LP 如果以物理方式替换了原始故障设备、使其重新联机或者清除了错误(通过 FMA 事件或者通过使用 \fBzpool online\fR 或 \fBzpool clear\fR 命令),且原始设备的状态变为正常运行,则 \fBINUSE\fR 备件设备将再次变为 \fBAVAIL\fR。 .sp .LP 备件不能替换日志设备。 .SS "意图日志" .sp .LP \fBZFS\fR 意图日志 (\fBZIL\fR) 可满足同步事务的 \fBPOSIX\fR 要求。例如,数据库通常要求其事务在从系统调用返回时在稳定的存储设备上。\fBNFS\fR 和其他应用程序也可以使用 \fBfsync\fR() 来确保数据的稳定性。缺省情况下,意图日志是从主池内的块中分配的。但是,使用单独的意图日志设备(如 \fBNVRAM\fR 或专用磁盘)可能会获得更好的性能。例如: .sp .in +2 .nf # \fBzpool create pool c0d0 c1d0 log c2d0\fR .fi .in -2 .sp .sp .LP 此外,还可以指定多个日志设备,并对它们进行镜像。有关镜像多个日志设备的示例,请参见“示例”部分。 .sp .LP 可以将日志设备作为较大池的一部分添加、替换、附加、分离以及导入和导出。通过为日志指定顶层镜像,可以移除镜像日志设备。 .SS "高速缓存设备" .sp .LP 可以将设备作为\fB高速缓存设备\fR添加到存储池中。这些设备在主内存和磁盘之间提供了一个进行高速缓存的附加层。对于读取操作量很大的工作负荷,当工作集大小比主内存中可高速缓存的内容大得多时,使用高速缓存设备可以通过低延迟介质处理此工作集的更大部分。使用高速缓存设备,可以最大程度地提高大多数静态内容的随机读取工作量的性能。 .sp .LP 要创建带高速缓存设备的池,请对任意数量的设备指定 \fBcache\fR \fIvdev\fR。例如: .sp .in +2 .nf # \fBzpool create pool c0d0 c1d0 cache c2d0 c3d0\fR .fi .in -2 .sp .sp .LP 高速缓存设备不能镜像,也不能成为 \fBraidz\fR 配置的一部分。如果高速缓存设备发生读取错误,则该读取 \fBI/O\fR 会重新发送给原始存储池设备(它可能是镜像配置或 \fBraidz\fR 配置的一部分)。 .sp .LP 高速缓存设备的内容被认为具有易失性,其他系统的高速缓存也具有这个特点。 .SS "进程" .sp .LP 每个导入的池都有一个关联的进程 \fBzpool-\fR\fIpoolname\fR。此进程中的线程是该池的 I/O 处理线程,该线程处理压缩、检验和操作以及与该池关联的所有 I/O 的其他任务。此进程的目的是呈现系统存储池的 CPU 使用率信息。此进程的存在形成了一个不稳定的接口。 .SS "属性" .sp .LP 每个池都有多个关联的属性。有些属性是只读的统计信息,而其他属性是可配置的,可以改变池的行为。以下是只读属性: .sp .ne 2 .mk .na \fB\fBallocated\fR\fR .ad .sp .6 .RS 4n 池中已实际分配的存储空间量。该属性也可通过其简短列名 \fBalloc\fR 来引用。 .RE .sp .ne 2 .mk .na \fB\fBcapacity\fR\fR .ad .sp .6 .RS 4n 已用的池空间百分比。此属性也可通过其简短列名 \fBcap\fR 来引用。 .RE .sp .ne 2 .mk .na \fB\fBdedupratio\fR\fR .ad .sp .6 .RS 4n 为池指定的重复数据删除比率,用乘数因子表示。该值用一个十进制数表示。例如,\fBdedupratio\fR 值 \fB1.76\fR 表示存储了 1.76 个单位的数据,但实际消耗的磁盘空间只有 1 个单位。该属性也可通过其简短列名 \fBdedup\fR 来引用。 .sp 可按如下方式启用重复数据删除: .sp .in +2 .nf # \fBzfs set dedup=on \fIpool\fR/\fIdataset\fR\fR .fi .in -2 .sp 缺省值为 \fBoff\fR(关闭)。 .sp 有关重复数据删除功能的说明,请参见 \fBzfs\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fBfree\fR\fR .ad .sp .6 .RS 4n 池中未分配的块的数量。 .RE .sp .ne 2 .mk .na \fB\fBguid\fR\fR .ad .sp .6 .RS 4n 池的唯一标识符。 .RE .sp .ne 2 .mk .na \fB\fBhealth\fR\fR .ad .sp .6 .RS 4n 池的当前运行状况。运行状态可以是 \fBONLINE\fR、\fBDEGRADED\fR、\fBUNAVAIL\fR 或 \fBSUSPENDED\fR。 .RE .sp .ne 2 .mk .na \fB\fBsize\fR\fR .ad .sp .6 .RS 4n 存储池的总大小。 .RE .sp .LP 这些空间使用属性报告存储池的实际可用物理空间。物理空间可能与空间总量不同,后者是所有包含的数据集可以实际使用的空间量。\fBraidz\fR 配置中使用的空间量取决于写入的数据的特征。此外,\fBZFS\fR 会保留一些空间用于内部记帐,\fBzfs\fR(1M) 命令会考虑这一点,但 \fBzpool\fR 命令则不会。对于合理大小的未满池,应该看不出这些影响。对于小型池,或者接近全满的池,这些差异可能会变得更加明显。 .sp .LP 以下属性可在创建或导入时设置: .sp .ne 2 .mk .na \fB\fBaltroot\fR\fR .ad .sp .6 .RS 4n 备用根目录。如果进行了设置,则该目录会被前置到池中的任何挂载点。检查未知池(无法信任其中的挂载点)时,或在典型路径无效的备用启动环境中,可以使用此属性。\fBaltroot\fR 不是持久属性。它仅在系统运行期间有效。设置 \fBaltroot\fR 即表示缺省情况下使用 \fBcachefile=none\fR,但此设置可以使用显式设置来覆盖。 .RE .sp .LP 以下属性可在导入时设置: .sp .ne 2 .mk .na \fB\fBreadonly\fR=\fBon\fR | \fBoff\fR\fR .ad .sp .6 .RS 4n 控制是否可以修改池。启用后,在以读写模式导入池之前,任何仅存在于意图日志中的同步数据都不可访问。 .sp 以只读模式导入池具有以下限制: .RS +4 .TP .ie t \(bu .el o 导入期间试图设置其他池属性将被忽略。 .RE .RS +4 .TP .ie t \(bu .el o 所有文件系统挂载都将转换为包括只读 (\fBro\fR) 挂载选项。 .RE 通过导出和导入池可将已以只读模式导入的池恢复为读写模式。 .RE .sp .LP 以下属性可在创建时和导入时设置,并可在以后使用 \fBzpool set\fR 命令更改: .sp .ne 2 .mk .na \fB\fBautoexpand\fR=\fBon\fR | \fBoff\fR\fR .ad .sp .6 .RS 4n 在底层 LUN 增长时控制自动池扩展。如果设置为 \fBon\fR,池将根据扩展设备的大小重新调整大小。如果设备是某个镜像或 \fBraidz\fR 的一部分,则在新空间对池可用之前,该镜像/\fBraidz\fR 组内的所有设备都必须扩展。缺省行为为 \fBoff\fR。该属性也可通过其简短列名 \fBexpand\fR(扩展)来引用。 .RE .sp .ne 2 .mk .na \fB\fBautoreplace\fR=\fBon\fR | \fBoff\fR\fR .ad .sp .6 .RS 4n 控制设备的自动替换。如果设置为 \fBoff\fR(关闭),则必须由管理员使用 \fBzpool replace\fR 命令来启动设备替换。如果设置为 \fBon\fR(打开),则会自动对与先前属于池的设备在同一物理位置的任何新设备进行格式化和替换。缺省行为为 \fBoff\fR。此属性也可通过其简短列名 \fBreplace\fR 来引用。 .RE .sp .ne 2 .mk .na \fB\fBbootfs\fR=\fIpool\fR/\fIdataset\fR\fR .ad .sp .6 .RS 4n 标识根池的缺省可引导数据集。此属性应主要通过安装和升级程序设置。 .RE .sp .ne 2 .mk .na \fB\fBcachefile\fR=\fIpath\fR | \fBnone\fR\fR .ad .sp .6 .RS 4n 控制高速缓存池配置的位置。要在系统启动时发现所有池,需要存储在根文件系统上的配置数据的高速缓存副本。系统引导时会自动导入此高速缓存中的所有池。有些环境(如安装和群集)需要将此信息高速缓存在其他位置,从而使池不会被自动导入。设置此属性后,池配置将高速缓存在其他位置,以后可以使用 \fBzpool import -c\fR 将其导入。如果将其设置为特殊值 \fBnone\fR(无),将创建一个永远不会高速缓存的临时池;如果设置为特殊值 \fB\&''\fR(空字符串),则将使用缺省位置。 .sp 多个池可以共享同一个高速缓存文件。因为在添加或移除池时,内核会销毁并重新创建此文件,因此在试图访问此文件时应小心。在导出或销毁了最后一个使用 \fBcachefile\fR 的池后,将删除该文件。 .RE .sp .ne 2 .mk .na \fB\fBdedupditto\fR=\fInumber\fR\fR .ad .sp .6 .RS 4n 设置副本数的阈值。如果某个消重后的块的引用数超过了此阈值,将自动存储该块的另一个相同副本。缺省值为 "\fB0\fR"。 .RE .sp .ne 2 .mk .na \fB\fBdelegation\fR=\fBon\fR | \fBoff\fR\fR .ad .sp .6 .RS 4n 控制是否根据在数据集上定义的数据集权限授予非特权用户访问权。缺省值为 \fBon\fR。有关 \fBZFS\fR 委托管理的更多信息,请参见 \fBzfs\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fBfailmode\fR=\fBwait\fR | \fBcontinue\fR | \fBpanic\fR\fR .ad .sp .6 .RS 4n 控制在出现灾难性池故障时的系统行为。这种情况通常是由于失去与基础存储设备的连接或池中所有设备出现故障而导致的。此类事件的行为按以下方式确定: .sp .ne 2 .mk .na \fB\fBwait\fR\fR .ad .sp .6 .RS 4n 阻止对池的所有 \fBI/O\fR 访问,直到恢复设备连接并清除错误。在设备问题得到解决之前,池一直处于 wait 状态。这是缺省行为。 .RE .sp .ne 2 .mk .na \fB\fBcontinue\fR\fR .ad .sp .6 .RS 4n 使 \fBEIO\fR 返回到任何新的写入 \fBI/O\fR 请求,但允许对其余任何运行状况良好的设备执行读取操作。将会阻止必须提交到磁盘的任何写入请求。 .RE .sp .ne 2 .mk .na \fB\fBpanic\fR\fR .ad .sp .6 .RS 4n 向控制台列显一则消息,并生成一个系统故障转储。 .RE .RE .sp .ne 2 .mk .na \fB\fBlistshares\fR=on | off\fR .ad .sp .6 .RS 4n 控制使用 \fBzfs list\fR 命令是否可显示此池中的共享信息。缺省值为 \fBoff\fR(关闭)。 .RE .sp .ne 2 .mk .na \fB\fBlistsnapshots\fR=on | off\fR .ad .sp .6 .RS 4n 控制在不使用 \fB-t\fR 选项运行 \fBzfs list\fR 时,是否输出与该池关联的快照的相关信息。缺省值为 \fBoff\fR(关闭)。该属性也可通过其简短列名 \fBlistsnaps\fR 来引用。 .RE .sp .ne 2 .mk .na \fB\fBversion\fR=\fIversion\fR\fR .ad .sp .6 .RS 4n 池的当前盘上版本。此版本可以提高,但绝不能降低。尽管在为了实现向后兼容性而需要一个特定版本时可以使用此属性,但首选的池更新方法是使用 \fBzpool upgrade\fR 命令。此属性可以是 1 与 \fBzpool upgrade -v\fR 所报告的当前版本之间的任何数值。 .RE .SS "子命令" .sp .LP 修改状态的所有子命令将以原始形式永久记录到池中。 .sp .LP \fBzpool\fR 命令提供了一些子命令,可以创建和销毁存储池,为存储池增加容量,以及提供有关存储池的信息。支持以下子命令: .sp .ne 2 .mk .na \fB\fBzpool\fR \fB-?\fR\fR .ad .sp .6 .RS 4n 显示帮助消息。 .RE .sp .ne 2 .mk .na \fB\fBzpool help\fR \fIcommand\fR | \fBhelp\fR | \fIproperty\fR \fIproperty-name\fR\fR .ad .sp .6 .RS 4n 显示 \fBzpool\fR 命令用法。可以显示特定命令或属性的帮助。如果显示特定命令或属性的帮助,将会显示命令语法或可用的属性值。使用不带任何参数的 \fBzpool help\fR 可显示 \fBzpool\fR 命令的完整列表。 .RE .sp .ne 2 .mk .na \fB\fBzpool help\fR \fB-l\fR \fBproperties\fR\fR .ad .sp .6 .RS 4n 显示 \fBzfs\fR 属性信息,包括属性值是否可编辑以及可能的属性值。如果显示特定子命令或属性的帮助信息,将显示命令语法或属性值。使用不带任何参数的 \fBzpool help\fR 可显示 \fBzpool\fR 子命令的完整列表。 .RE .sp .ne 2 .mk .na \fB\fBzpool add\fR [\fB-f\fR] [\fB-n\fR [\fB-l\fR]]\fIpool\fR \fIvdev\fR ...\fR .ad .sp .6 .RS 4n 将指定的虚拟设备添加到给定的池。\fIvdev\fR 规范在“虚拟设备”部分中介绍。\fB-f\fR 选项的行为以及所执行的设备检查将在 \fBzpool create\fR 子命令中进行介绍。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制使用 vdev,即使它们显示为正在使用;或者指定一个冲突的复制级别。并非所有设备都可以通过这种方式覆盖。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 显示将使用的配置,但不实际添加 vdev。实际的池创建操作仍可能因特权不足或设备共享的原因而失败。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-n\fR 以当前 \fB/dev/chassis\fR 位置格式显示配置。 .RE 不要添加当前配置为 ZFS 存储池的法定设备的磁盘。某个磁盘进入池中后,就可将该磁盘配置为法定设备。 .RE .sp .ne 2 .mk .na \fB\fBzpool attach\fR [\fB-f\fR] \fIpool\fR \fIdevice\fR \fInew_device\fR\fR .ad .sp .6 .RS 4n 将 \fInew_device\fR 连接到现有的 \fBzpool\fR 设备。现有设备不能是 \fBraidz\fR 配置的一部分。如果 \fIdevice\fR 当前不是某个镜像配置的一部分,\fIdevice\fR 将自动转换为 \fIdevice\fR 和 \fInew_device\fR 的双向镜像。如果 \fIdevice\fR 是某个双向镜像的一部分,则连接 \fInew_device\fR 将创建一个三向镜像,依此类推。无论哪种情况,\fInew_device\fR 都会立即开始重新同步。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制使用 \fInew_device\fR,即使它显示为正在使用。并非所有设备都可以通过这种方式覆盖。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool clear\fR [\fB-nF\fR [\fB-f\fR]] \fIpool\fR [\fIdevice\fR] ...\fR .ad .sp .6 .RS 4n 清除某个池中的设备错误。如果未指定任何参数,将清除池中的所有设备错误。如果指定了一个或多个设备,将仅清除与指定设备关联的错误。 .sp .ne 2 .mk .na \fB\fB-F\fR\fR .ad .sp .6 .RS 4n 启动不可打开池的恢复模式。尝试放弃池中最后少数几个事务会将其恢复到可打开状态。并非所有损坏的池都能使用此选项恢复。如果成功,将不可挽回地丢失所放弃事务中的数据。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 与 \fB-F\fR 标志结合使用。检查放弃事务是否会使池可打开,但不会实际放弃任何事务。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 这是一个特殊的池恢复选项,如果 \fBfmadm acquit\fR 或 \fBfmadm repair\fR 命令无法清除池故障,可以使用该选项。如果系统重新引导,FMA 将重放池故障,因此需要在池恢复后解决 FMA 故障。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool create\fR [\fB-f\fR] [\fB-n\fR [\fB-l\fR]] [\fB-B\fR] [\fB-N\fR] [\fB-o\fR \fIproperty=value\fR] ... [\fB-O\fR \fIfile-system-property=value\fR] ... [\fB-m\fR \fI mountpoint\fR] [\fB-R\fR \fIroot\fR] [\fB-t\fR \fItmppool\fR] \fIpool\fR \fIvdev\fR ...\fR .ad .sp .6 .RS 4n 创建一个新的存储池,其中包含在命令行上指定的虚拟设备。池名称必须以字母开头,并且可以包含字母数字字符以及下划线 (_)、破折号 (-)、冒号 (:)、空格 ( ) 和句点 (.)。池名称 \fBmirror\fR、\fBraidz\fR、\fBspare\fR 和 \fBlog\fR 是保留名称,就像以 \fBc\fR[\fB0-9\fR] 模式开头的名称一样。vdev 规范在“虚拟设备”部分中介绍。 .sp 该命令确认指定的每个设备可访问,并且其他子系统当前未使用这些设备。有一些使用情况(如当前正在挂载,或者被指定为专用转储设备)会阻止设备被 \fBZFS\fR 使用。其他使用情况(例如,有预先存在的 \fBUFS\fR 文件系统)可以用 \fB-f\fR 选项覆盖。 .sp 该命令还会检查池的复制策略是否一致。除非指定 \fB-f\fR,否则试图将冗余和非冗余存储组合在一个池中或者混合磁盘和文件会导致错误。除非指定 \fB-f\fR,否则在单个 \fBraidz\fR 或镜像组中使用不同大小的设备也会加上错误标志。 .sp 除非指定了 \fB-R\fR 选项,否则缺省挂载点为 /\fIpool\fR。不得有挂载点,或者即使存在,也必须为空,否则将无法挂载根数据集。此选项可用 \fB-m\fR 选项覆盖。 .sp .ne 2 .mk .na \fB\fB-B\fR\fR .ad .sp .6 .RS 4n 当在整个磁盘设备上运行时,将创建引导分区(如果它是从平台上的 EFI (GPT) 标签磁盘进行引导所必需的)。\fB-B\fR 选项对不是整个磁盘的设备不起作用。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制使用 vdev,即使它们显示为正在使用;或者指定一个冲突的复制级别。并非所有设备都可以通过这种方式覆盖。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-n\fR 以当前 \fB/dev/chassis\fR 位置格式显示配置。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 显示将在不实际创建池的情况下使用的配置。实际的池创建操作仍可能因特权不足或设备当前正处于使用状态而失败。 .RE .sp .ne 2 .mk .na \fB\fB-N\fR\fR .ad .sp .6 .RS 4n 创建池而不挂载或共享新创建的池的根文件系统。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIproperty=value\fR [\fB-o\fR \fIproperty=value\fR] ...\fR .ad .sp .6 .RS 4n 设置指定的池属性。有关可设置的有效属性列表,请参见“属性”部分。 .RE .sp .ne 2 .mk .na \fB\fB-O\fR \fIfile-system-property=value\fR\fR .ad .br .na \fB[\fB-O\fR \fIfile-system-property=value\fR] ...\fR .ad .sp .6 .RS 4n 设置池的顶层文件系统的指定属性。有关可设置的有效属性列表,请参见 \fBzfs\fR(1M) 的“属性”部分。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIroot\fR\fR .ad .sp .6 .RS 4n 等效于 \fB-o cachefile=none,altroot=\fR\fIroot\fR。 .RE .sp .ne 2 .mk .na \fB\fB-m\fR \fImountpoint\fR\fR .ad .sp .6 .RS 4n 设置池的顶层文件系统的挂载点。如果指定了 \fIaltroot\fR,则缺省挂载点为 /\fIpool\fR 或 /\fIaltroot\fR。挂载点必须是一个绝对路径 \fBlegacy\fR(传统)或 \fBnone\fR(无)。有关数据挂载点的更多信息,请参见 \fBzfs\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fItmppool\fR\fR .ad .sp .6 .RS 4n 将指定的临时池名称用于初始导入。暗指 \fB-o\fR \fIcachefile\fR=\fBnone\fR。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool destroy\fR [\fB-f\fR] \fIpool\fR\fR .ad .sp .6 .RS 4n 销毁指定的池,释放所有设备,使之可用于其他用途。此命令会尝试在销毁池之前卸载所有活动的数据集。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制卸载池中包含的所有活动数据集。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool detach\fR \fIpool\fR \fIdevice\fR\fR .ad .sp .6 .RS 4n 从镜像存储池分离 \fIdevice\fR 或备件。如果以物理方式替换了现有设备,则也可以从 RAID-Z 存储池分离备件。或者,可以分离 RAID-Z 存储池中的现有设备(如果已替换为备件)。如果没有数据的其他有效副本,将拒绝该操作。 .RE .sp .ne 2 .mk .na \fB\fBzpool export\fR [\fB-f\fR] \fIpool\fR ...\fR .ad .sp .6 .RS 4n 从系统中导出指定的池。所有设备将标记为已导出,但其他子系统仍认为它们在使用。只要存在足够的设备数量,就可以在系统之间移动设备(即使这些设备采用不同的字节存储顺序 (endianness))以及导入这些设备。 .sp 在导出池之前,将卸载池中的所有数据集。 .sp 要使池可移植,必须在 \fBzpool\fR 命令中指定整个磁盘(而不仅仅是分片),从而使 \fBZFS\fR 可以使用可移植的 \fBEFI\fR 标签来设置磁盘标签。否则,采用不同字节存储顺序的平台上的磁盘驱动程序将无法识别磁盘。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 使用 \fBunmount -f\fR 命令强制卸载所有数据集。 .sp 此命令将强制导出池。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool get\fR all | \fIproperty\fR[,...] \fIpool\fR ...\fR .ad .sp .6 .RS 4n 检索指定存储池的给定属性列表或所有属性(如果使用了 \fBall\fR)。这些属性以下列字段显示: .sp .in +2 .nf name Name of storage pool property Property name value Property value source Property source, either 'default' or 'local'. .fi .in -2 .sp 有关可用池属性的更多信息,请参见“属性”部分。 .RE .sp .ne 2 .mk .na \fB\fBzpool history\fR [\fB-il\fR] [\fIpool\fR] ...\fR .ad .sp .6 .RS 4n 显示指定池或所有池(如果没有指定任何池)的命令历史记录。 .sp .ne 2 .mk .na \fB\fB-i\fR\fR .ad .sp .6 .RS 4n 显示内部记录的 \fBZFS\fR 事件以及用户启动的事件。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 以长格式显示日志记录;长格式除了标准格式以外,还包括用户名、主机名以及执行操作所在的区域。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool import\fR [\fB-d\fR \fIpath\fR ... ] [\fB-D\fR]\fR .ad .br .na \fB\fBzpool import\fR [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile\fR] [\fB-F\fR [\fB- n\fR]] \fIpool\fR | \fIid\fR\fR .ad .sp .6 .RS 4n 列出可导入的池。如果未指定 \fB-d\fR 选项,此命令将在 \fB/dev/dsk\fR 中搜索设备。可以多次指定 \fB-d\fR 选项,将搜索所有目录和设备路径。如果设备显示为导出池的一部分,则此命令将显示池的摘要,其中包括池的名称、数字标识符以及 \fIvdev\fR 布局和每个设备或文件的当前运行状况。除非指定了 \fB-D\fR 选项,否则不会列出以前使用 \fBzpool destroy\fR 命令销毁的池。 .sp 数字标识符是唯一的,当有多个名称相同的导出池时,可用于代替池名称。 .sp .ne 2 .mk .na \fB\fB-c\fR \fIcachefile\fR\fR .ad .sp .6 .RS 4n 从使用 \fBcachefile\fR 池属性创建的指定 \fBcachefile\fR 中读取配置。将使用此 \fBcachefile\fR 代替搜索设备。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR \fIpath\fR\fR .ad .sp .6 .RS 4n 在 \fIpath\fR 中搜索设备或文件,其中 \fIpath\fR 可以是目录或设备路径。\fI\fR可以多次指定 \fB-d\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-D\fR\fR .ad .sp .6 .RS 4n 仅列出销毁的池。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool import\fR [\fB-o\fR \fImntopts\fR] [ \fB-o\fR \fIproperty\fR=\fIvalue\fR] ... [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile \fR] [\fB-D\fR] [\fB-f\fR] [\fB-m\fR] [\fB-N\fR] [\fB-R\fR \fIroot\fR] [\fB-F\fR [\fB-n\fR [\fB-l\fR]]] \fB-a\fR\fR .ad .sp .6 .RS 4n 导入在搜索目录或设备路径中找到的所有池。与前一个命令相同,但会导入具有足够的可用设备数量的所有池。除非指定了 \fB-D\fR 选项,否则不会导入以前使用 \fBzpool destroy\fR 命令销毁的池。 .sp .ne 2 .mk .na \fB\fB-o\fR \fImntopts\fR\fR .ad .sp .6 .RS 4n 挂载池中的数据集时要使用的挂载选项列表(用逗号分隔)。有关数据集属性和挂载选项的说明,请参见 \fBzfs\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIproperty=value\fR\fR .ad .sp .6 .RS 4n 对导入的池设置指定属性。有关可用池属性的更多信息,请参见“属性”部分。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR \fIcachefile\fR\fR .ad .sp .6 .RS 4n 从使用 \fBcachefile\fR 池属性创建的指定 \fBcachefile\fR 中读取配置。将使用此 \fBcachefile\fR 代替搜索设备。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR \fIpath\fR\fR .ad .sp .6 .RS 4n 在 \fIpath\fR 中搜索设备或文件。可以多次指定 \fB-d\fR 选项。此选项与 \fB-c\fR 选项不兼容。 .RE .sp .ne 2 .mk .na \fB\fB-D\fR\fR .ad .sp .6 .RS 4n 仅导入销毁的池。还需要 \fB-f\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制导入,即使池看上去可能处于活动状态。 .RE .sp .ne 2 .mk .na \fB\fB-F\fR\fR .ad .sp .6 .RS 4n 不可导入池的恢复模式。尝试通过放弃最后几个事务将池恢复到可导入状态。并非所有损坏的池都能使用此选项恢复。如果成功,将不可挽回地丢失所放弃事务中的数据。如果池是可导入的,或者已经导入,将忽略此选项。 .RE .sp .ne 2 .mk .na \fB\fB-a\fR\fR .ad .sp .6 .RS 4n 搜索并导入所有找到的池。 .RE .sp .ne 2 .mk .na \fB\fB-m\fR\fR .ad .sp .6 .RS 4n 允许在缺少日志设备时导入池。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIroot\fR\fR .ad .sp .6 .RS 4n 将 \fBcachefile\fR 属性设置为 \fBnone\fR(无),将 \fIaltroot\fR 属性设置为 \fIroot\fR。 .RE .sp .ne 2 .mk .na \fB\fB-N\fR\fR .ad .sp .6 .RS 4n 导入池而不挂载或共享任何文件系统。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 与 \fB-F\fR 恢复选项一起使用。确定是否可将不可导入的池重新变得可导入,但不实际执行池恢复。有关池恢复模式的更多详细信息,请参见前面的 \fB-F\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-n\fR 以当前 \fB/dev/chassis\fR 位置格式显示信息。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool import\fR [\fB-o\fR \fImntopts\fR] [ \fB-o\fR \fIproperty\fR=\fIvalue\fR] ... [\fB-d\fR \fIpath\fR ... | \fB-c\fR \fIcachefile \fR] [\fB-D\fR] [\fB-f\fR] [\fB-m\fR] [\fB-N\fR] [\fB-R\fR \fIroot\fR] [\fB-F\fR [\fB-n\fR [\fB-l\fR]]] [\fB-t\fR \fItmppool\fR] \fIpool\fR | \fIid\fR [\fInewpool \fR]\fR .ad .sp .6 .RS 4n 导入特定的池。池可以用名称或数字标识符来标识。如果指定了 \fInewpool\fR,将使用持久名称 \fInewpool\fR 导入池。否则,使用与其导出名称相同的名称导入。请不要使用新名称导入根池。否则,系统可能无法引导。 .sp 如果没有先运行 \fBzpool export\fR 就从系统中移除了设备,则设备看上去可能处于活动状态。这将无法确定这是失败的导出,还是真的有其他主机在使用该设备。要导入处于此状态的池,必须使用 \fB-f\fR 选项。 .sp .ne 2 .mk .na \fB\fB-o\fR \fImntopts\fR\fR .ad .sp .6 .RS 4n 挂载池中的数据集时要使用的挂载选项列表(用逗号分隔)。有关数据集属性和挂载选项的说明,请参见 \fBzfs\fR(1M)。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIproperty=value\fR\fR .ad .sp .6 .RS 4n 对导入的池设置指定属性。有关可用池属性的更多信息,请参见“属性”部分。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR \fIcachefile\fR\fR .ad .sp .6 .RS 4n 从使用 \fBcachefile\fR 池属性创建的指定 \fBcachefile\fR 中读取配置。将使用此 \fBcachefile\fR 代替搜索设备。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR \fIpath\fR\fR .ad .sp .6 .RS 4n 在 \fIpath\fR 中搜索设备或文件。可以多次指定 \fB-d\fR 选项。此选项与 \fB-c\fR 选项不兼容。 .RE .sp .ne 2 .mk .na \fB\fB-D\fR\fR .ad .sp .6 .RS 4n 导入销毁的池。还需要 \fB-f\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制导入,即使池看上去可能处于活动状态。 .RE .sp .ne 2 .mk .na \fB\fB-F\fR\fR .ad .sp .6 .RS 4n 不可导入池的恢复模式。尝试通过放弃最后几个事务将池恢复到可导入状态。并非所有损坏的池都能使用此选项恢复。如果成功,将不可挽回地丢失所放弃事务中的数据。如果池是可导入的,或者已经导入,将忽略此选项。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIroot\fR\fR .ad .sp .6 .RS 4n 将 \fBcachefile\fR 属性设置为 \fBnone\fR(无),将 \fIaltroot\fR 属性设置为 \fIroot\fR。 .RE .sp .ne 2 .mk .na \fB\fB-N\fR\fR .ad .sp .6 .RS 4n 在不挂载任何文件系统的情况下导入池。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 与 \fB-F\fR 恢复选项一起使用。确定是否可将不可导入的池重新变得可导入,但不实际执行池恢复。有关池恢复模式的更多详细信息,请参见前面的 \fB-F\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-n\fR 以当前 \fB/dev/chassis\fR 位置格式显示信息。 .RE .sp .ne 2 .mk .na \fB\fB-m\fR\fR .ad .sp .6 .RS 4n 允许在缺少日志设备时导入池。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fItmppool\fR\fR .ad .sp .6 .RS 4n 将指定的临时池名称用于初始导入。暗指 \fB-o\fR \fIcachefile\fR=\fBnone\fR。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool iostat\fR [\fB-T\fR \fBd\fR|\fBu\fR] [\fB-v\fR [\fB-l\fR]] [\fIpool\fR] ... [\fIinterval\fR[\fIcount\fR]]\fR .ad .sp .6 .RS 4n 显示指定池的 \fBI/O\fR 统计信息。如果指定了一个时间间隔,则每隔 \fIinterval\fR 秒就会输出统计信息,直到按 \fBCtrl-C\fR 为止。如果未指定 \fIpools\fR,将显示系统中每个池的统计信息。如果指定了 \fIcount\fR,该命令将在输出 \fIcount\fR 报告后退出。 .sp .ne 2 .mk .na \fB\fB-T\fR \fBd\fR|\fBu\fR\fR .ad .sp .6 .RS 4n 显示时间戳。 .sp 指定 \fBd\fR 表示标准日期格式。请参见\fBdate\fR(1)。指定 \fBu\fR 表示时间的内部表示形式的印刷表示形式。请参见 \fBtime\fR(2)。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .sp .6 .RS 4n 详细统计信息。除了报告池范围的统计信息外,还报告池中单个 \fIvdev\fR 的使用统计信息。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-v\fR 以当前 \fB/dev/chassis\fR 位置格式显示 \fBvdev\fR 统计信息。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool list\fR [\fB-H\fR] [\fB-o\fR \fIprops\fR[,...]] [\fB-T\fR \fBd\fR|\fBu\fR] [\fIpool\fR] ...\fR .ad .sp .6 .RS 4n 列出指定池以及运行状态和空间使用情况。如果未指代任何参数,将列出系统中的所有池。 .sp 如果指定了时间间隔,将每隔 \fIinterval\fR 秒就会显示状态和空间使用情况,直到按 Ctrl-C 为止。如果指定了 \fIcount\fR,该命令将在显示 \fIcount\fR 报告后退出。 .sp .ne 2 .mk .na \fB\fB-H\fR\fR .ad .sp .6 .RS 4n 脚本模式。不显示标题,以单个制表符(而不是任意空格)来分隔字段。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIprops\fR\fR .ad .sp .6 .RS 4n 要显示的属性的逗号分隔列表。有关有效属性列表,请参见“属性”部分。缺省列表为 \fBname\fR, \fBsize\fR, \fBallocated\fR, \fBfree\fR, \fBcapacity\fR, \fBhealth \fR, \fBaltroot\fR。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR \fBd\fR|\fBu\fR\fR .ad .sp .6 .RS 4n 显示时间戳。 .sp 指定 \fBd\fR 表示标准日期格式。请参见\fBdate\fR(1)。指定 \fBu\fR 表示时间的内部表示形式的印刷表示形式。请参见 \fBtime\fR(2)。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool offline\fR [\fB-t\fR] \fIpool\fR \fIdevice\fR ...\fR .ad .sp .6 .RS 4n 将指定的物理设备脱机。当 \fIdevice\fR 处于脱机状态时,不会尝试对设备进行任何读或写操作。 .sp 此命令不适用于备件或高速缓存设备。 .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .sp .6 .RS 4n 临时。重新引导时,指定的物理设备将恢复到其以前的状态。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool online\fR [\fB-e\fR] \fIpool\fR \fIdevice\fR...\fR .ad .sp .6 .RS 4n 将指定的物理设备联机。 .sp 此命令不适用于备件或高速缓存设备。 .sp .ne 2 .mk .na \fB\fB-e\fR\fR .ad .sp .6 .RS 4n 扩展设备以使用所有可用空间。如果设备是某个镜像或 \fBraidz\fR 的一部分,则在新空间对池可用之前,所有设备都必须扩展。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool remove\fR \fIpool\fR \fIdevice\fR ...\fR .ad .sp .6 .RS 4n 从池中移除指定的设备。此命令当前仅支持移除热备件设备、高速缓存设备和日志设备。通过为日志指定顶层镜像,可以移除一个镜像日志设备。可以使用 \fBzpool detach\fR 命令移除属于某个镜像配置一部分的非日志设备。不能从池中移除非冗余设备和 \fBraidz\fR 设备。 .RE .sp .ne 2 .mk .na \fB\fBzpool replace\fR [\fB-f\fR] \fIpool\fR \fIold_device\fR [\fInew_device\fR]\fR .ad .sp .6 .RS 4n 将 \fIold_device\fR 替换为 \fInew_device\fR。该命令等效于连接 \fInew_device\fR,等待它重新同步,然后分离 \fIold_device\fR。 .sp \fInew_device\fR 的大小必须大于或等于镜像配置或 \fBraidz\fR 配置中所有设备的最小大小。 .sp 如果池不是冗余池,则必须要有 \fInew_device\fR。如果不指定 \fInew_device\fR,将缺省为 \fIold_device\fR。在现有磁盘出现故障并已进行物理更换后,这种形式的替换很有用。在这种情况下,新磁盘可能有着与旧设备相同的 \fB/dev/dsk\fR 路径,尽管它实际上是一个不同的磁盘。\fBZFS\fR 会识别这一情况。 .sp 在 \fBzpool status\fR 输出中,\fIold_device\fR 显示在 \fBreplacing\fR 一词下,其后附有字符串 \fB/old\fR。重新同步完成后,将自动移除 \fBreplacing\fR 和 \fIold_device\fR。如果新设备在重新同步之前发生故障,并且有第三个设备安装在它的位置,则两个故障设备都将显示为后面附有 \fB/old\fR,并且重新同步过程将重新开始。重新同步完成后,两个 \fB/old\fR 设备将与 \fBreplacing\fR 一词一起被移除。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 强制使用 \fInew_device\fR,即使它显示为正在使用。并非所有设备都可以通过这种方式覆盖。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool scrub\fR [\fB-s\fR] \fIpool\fR ...\fR .ad .sp .6 .RS 4n 开始一次清理。scrub 将检查指定池中的所有数据以验证其校验和是否正确。对于复制的(镜像或 \fBraidz\fR)设备,\fBZFS\fR 会自动修复在清理过程中发现的所有损坏。\fBzpool status\fR 命令报告清理的进度,并在完成时汇总清理的结果。 .sp 清理和重新同步是非常相似的操作。不同之处在于,重新同步仅检查 \fBZFS\fR 已知将要过期的数据(例如,在将新设备连接到某个镜像或者替换现有设备时),而清理将检查所有数据以发现由于硬件故障或磁盘故障而产生的无提示错误。 .sp 由于清理和重新同步都是 \fBI/O\fR 密集型操作,因此 \fBZFS\fR 一次仅允许使用其中的一个。如果已经在进行清理,则后续的 \fBzpool scrub\fR 将返回错误,并建议使用 \fBzpool scrub\fR \fB- s\fR 取消当前的清理。如果正在进行重新同步,\fBZFS\fR 将不允许启动清理,直到重新同步完成为止。 .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .sp .6 .RS 4n 停止清理。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool set\fR \fIproperty\fR=\fIvalue\fR \fIpool\fR\fR .ad .sp .6 .RS 4n 对指定池设置指定属性。有关可设置哪些属性和可接受的值的更多信息,请参见“属性”一节。 .RE .sp .ne 2 .mk .na \fB\fBzpool split\fR [\fB-n\fR [\fB-l\fR]] [\fB-R\fR \fIaltroot\fR] [\fB-o\fR \fImntopts\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] \fI pool\fR \fInewpool\fR [\fIdevice\fR ...]\fR .ad .sp .6 .RS 4n 从某个池中每个镜像的顶层 vdev 中分割出一个磁盘,然后使用分割出的磁盘新建一个池。原始池必须包含一个或多个镜像,并且不能处在重新同步过程中。\fBsplit\fR 子命令会选择每个镜像 vdev 中的最后一个设备,除非被命令行上的设备指定覆盖。 .sp 使用 \fIdevice\fR 参数时,\fBsplit\fR 会将指定的设备包括在新池中;如果有任何设备仍处于未指定状态,则会将每个镜像 vdev 中的最后一个设备分配到该池,就像其正常操作时一样。如果不确定 \fBsplit\fR 命令的结果,请使用 \fB-n\fR(“预运行”)选项确保命令会产生您想要的结果。 .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n 显示在不实际分割池的情况下会创建的配置。实际的池分割操作仍可能因特权不足或设备状态的原因而失败。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,让 \fB-n\fR 以当前 \fB/dev/chassis\fR 位置格式显示配置。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIaltroot\fR\fR .ad .sp .6 .RS 4n 在分割后自动导入新创建的池,将指定的 \fIaltroot\fR 参数用于新池的备用根。请参见前面“属性”部分中的 \fBaltroot\fR 说明。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fImntopts\fR\fR .ad .sp .6 .RS 4n 挂载池中的数据集时要使用的挂载选项列表(用逗号分隔)。有关数据集属性和挂载选项的说明,请参见 \fBzfs\fR(1M)。仅在与 \fB-R\fR 选项结合时有效。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIproperty\fR=\fIvalue\fR\fR .ad .sp .6 .RS 4n 对新池设置指定的属性。有关可用池属性的更多信息,请参见前面的“属性”部分。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool status\fR [\fB-l\fR] [\fB-v\fR] [\fB-x\fR] [\fB-T\fR \fBd\fR|\fBu\fR] [\fIpool\fR] ... [\fIinterval\fR[\fIcount\fR]]\fR .ad .sp .6 .RS 4n 显示指定池的详细运行状态。如果未指定任何 \fIpool\fR,将显示系统中每个池的状态。有关池和设备运行状况的更多信息,请参见“设备故障和恢复”部分。 .sp 如果指定了时间间隔,将每隔 \fIinterval\fR 秒就会显示状态和空间使用情况,直到按 Ctrl-C 为止。如果指定了 \fIcount\fR,该命令将在显示 \fIcount\fR 报告后退出。 .sp 如果正在清理或重新同步,此命令将报告完成百分比以及估计的完成时间。这两项数据都只是近似值,因为池中的数据量以及系统上的其他工作负荷可能会发生变化。 .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 如果可能,以当前 \fB/dev/chassis\fR 位置格式显示 vdev 状态。 .RE .sp .ne 2 .mk .na \fB\fB-x\fR\fR .ad .sp .6 .RS 4n 仅显示呈现错误或者因其他原因不可用的池的状态。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .sp .6 .RS 4n 显示详细数据错误信息,列显自上次完成池清理以来所有数据错误的完整列表。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR \fBd\fR|\fBu\fR\fR .ad .sp .6 .RS 4n 显示时间戳。 .sp 指定 \fBd\fR 表示标准日期格式。请参见\fBdate\fR(1)。指定 \fBu\fR 表示时间的内部表示形式的印刷表示形式。请参见 \fBtime\fR(2)。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool upgrade\fR\fR .ad .sp .6 .RS 4n 标识池的盘上版本,该版本确定当前正在运行的软件版本中的可用池功能。可以继续使用较旧的池版本,但有些功能可能不可用。可以通过使用 \fBzpool upgrade\fR \fB- a\fR 命令升级池。无法在运行较早软件版本的系统上访问较新版本的池。 .RE .sp .ne 2 .mk .na \fB\fBzpool upgrade\fR \fB-v\fR\fR .ad .sp .6 .RS 4n 显示当前软件支持的 \fBZFS\fR 池版本。当前 \fBZFS\fR 池版本以及所有以前支持的版本都会显示,还会显示随每个版本提供的功能的说明。 .RE .sp .ne 2 .mk .na \fB\fBzpool upgrade\fR [\fB-V\fR \fIversion\fR] \fB-a\fR | \fIpool\fR ...\fR .ad .sp .6 .RS 4n 将指定的池升级到最新的盘上版本。如果此命令显示某个池已过期,随后可使用 \fBzpool upgrade\fR \fB-a\fR 命令来升级该池。升级后的池在运行较早软件版本的系统上将不可访问。 .sp .ne 2 .mk .na \fB\fB-a\fR\fR .ad .sp .6 .RS 4n 升级所有池。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR \fIversion\fR\fR .ad .sp .6 .RS 4n 升级到指定版本,该版本必须高于当前版本。如果不指定 \fB-V\fR 标志,则会将池升级到最新的版本。 .RE .RE .sp .ne 2 .mk .na \fB\fBzpool monitor\fR \fB-t\fR \fIprovider\fR [\fB-T\fR \fBd|u\fR] [[\fB-p\fR] \fB-o\fR \fIfield\fR[,. . .]] [\fIpool\fR] . . . [\fIinterval\fR [\fIcount\fR]]\fR .ad .sp .6 .RS 4n 显示给定池的状态或进度信息。如果未输入池,则显示所有池的信息。当给定了间隔时,将每隔 \fIinterval\fR 秒输出一次信息,直到按了 \fBCtrl\fR-\fBC\fR。如果指定了 \fIcount\fR,则命令将在输出 count 个报告后退出。 .sp .ne 2 .mk .na \fB\fB-o\fR \fIfield\fR[,. . .]\fR .ad .RS 20n .rt 仅显示选定的字段。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fIprovider\fR\fR .ad .RS 20n .rt 显示来自列出的提供器的数据。当前提供器为 send、receive(或 recv)、destroy、scrub 和 resilver。可以通过 '\fBzpool help monitor\fR' 获得最新的提供器列表。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR \fBd|u\fR\fR .ad .RS 20n .rt 显示时间戳。指定 \fBd\fR 表示标准日期格式。请参见\fBdate\fR(1)。指定 \fBu\fR 表示时间的内部表示形式的印刷表示形式。请参见 \fBtime\fR(2)。 .RE .RE .SS "显示字段" .sp .LP 对于不同的提供器,字段也不同。如果选择了提供器不支持的字段,则会返回错误。 .sp .ne 2 .mk .na \fB\fBDONE\fR\fR .ad .RS 12n .rt 迄今为止已完成或已处理的数据量。 .RE .sp .ne 2 .mk .na \fB\fBOTHER\fR\fR .ad .RS 12n .rt 取决于提供器。提供额外的信息,例如正在处理的当前项或任务的当前状态。例如,在 zfs send 操作中,此值可能反映当前正在发送的个体数据集或快照。报告为 \fBOTHER\fR 的特定值不是接口,可能会更改且不进行通知。 .RE .sp .ne 2 .mk .na \fB\fBPCTDONE\fR\fR .ad .RS 12n .rt 已处理的数据所占百分比。 .RE .sp .ne 2 .mk .na \fB\fBPOOL\fR\fR .ad .RS 12n .rt 从中检索信息的池。 .RE .sp .ne 2 .mk .na \fB\fBPROVIDER\fR\fR .ad .RS 12n .rt 提供信息的任务。send、receive、destroy、scrub 和 resilver 中的一个。 .RE .sp .ne 2 .mk .na \fB\fBSPEED\fR\fR .ad .RS 12n .rt 每秒单位数。通常为字节,但取决于数据提供器使用的单位。 .RE .sp .ne 2 .mk .na \fB\fBSTRTTIME\fR\fR .ad .RS 12n .rt 提供器在所显示的任务上的启动时间。 .RE .sp .ne 2 .mk .na \fB\fBTAG\fR\fR .ad .RS 12n .rt TAG 用于消除整个操作的歧义。它在任一时刻都是唯一的,但是值在后续的操作中可以重复。例如,两个同时进行的发送操作将具有不同的 TAG,即使它们发送的是同一数据集也是如此。 .RE .sp .ne 2 .mk .na \fB\fBTIMELEFT\fR\fR .ad .RS 12n .rt 完成此任务将需要的相对时间。它是根据当前的数据处理速率计算得到的。 .RE .sp .ne 2 .mk .na \fB\fBTIMESTMP\fR\fR .ad .RS 12n .rt 所监视的数据快照的拍摄时间。 .RE .sp .ne 2 .mk .na \fB\fBTOTAL\fR\fR .ad .RS 12n .rt 估计要处理的数据总量。 .RE .SS "可解析的输出格式" .sp .LP "\fBzpool monitor\fR" 命令提供了一个 \fB-p\fR 选项,该选项以可供机器解析的格式显示输出。输出格式是一行或多行以冒号 (:) 分隔的字段。输出仅包括通过 \fB-o\fR 选项请求的字段,这些字段按请求的顺序排列。请注意,显示所有字段的 \fB-o\fR \fBall\fR 选项不能与可解析的输出选项配合使用。 .sp .LP 当请求多个字段时,将在输出之前使用反斜杠 (\) 对任何文本冒号字符进行转义。类似地,也会对文本反斜杠字符进行转义 (\\)。通过使用环境变量设置为 \fBIFS=:\fR 的 shell \fBread\fR(1) 函数,可以解析此转义格式。请注意,当仅请求一个字段时,不会进行转义。 .SH 示例 .LP \fB示例 1 \fR创建 RAID-Z 存储池 .sp .LP 以下命令创建一个池,其中包含由六个磁盘组成的单个 \fBraidz\fR 根 \fIvdev\fR。 .sp .in +2 .nf # \fBzpool create tank raidz c0t0d0 c0t1d0 c0t2d0 c0t3d0 c0t4d0 c0t5d0\fR .fi .in -2 .sp .LP \fB示例 2 \fR创建镜像存储池 .sp .LP 以下命令创建包含两个镜像的池,其中每个镜像各包含两个磁盘。 .sp .in +2 .nf # \fBzpool create tank mirror c0t0d0 c0t1d0 mirror c0t2d0 c0t3d0\fR .fi .in -2 .sp .sp .LP 或者,可以使用描述磁盘当前位置的 \fB/dev/chassis\fR 路径指定整个磁盘。 .sp .in +2 .nf # \fBzpool create tank \e mirror \e /dev/chassis/RACK29.U01-04/DISK_00/disk \e /dev/chassis/RACK29.U05-08/DISK_00/disk \e mirror \e /dev/chassis/RACK29.U01-04/DISK_01/disk \e /dev/chassis/RACK29.U05-08/DISK_01/disk\fR .fi .in -2 .sp .LP \fB示例 3 \fR将镜像添加到 ZFS 存储池 .sp .LP 以下命令将两个镜像磁盘添加到池 \fBtank\fR 中(假定该池由双向镜像组成)。增加的空间可立即供池中的任何数据集使用。 .sp .in +2 .nf # \fBzpool add tank mirror c1t0d0 c1t1d0\fR .fi .in -2 .sp .LP \fB示例 4 \fR列出可用的 ZFS 存储池 .sp .LP 以下命令列出系统上的所有可用池。 .sp .in +2 .nf # \fBzpool list\fR NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT pool 278G 4.19G 274G 1% 1.00x ONLINE - rpool 278G 78.2G 200G 28% 1.00x ONLINE - .fi .in -2 .sp .LP \fB示例 5 \fR列出池的所有属性。 .sp .LP 以下命令列出某个池的所有属性。 .sp .in +2 .nf % \fBzpool get all pool\fR NAME PROPERTY VALUE SOURCE pool allocated 4.19G - pool altroot - default pool autoexpand off default pool autoreplace off default pool bootfs - default pool cachefile - default pool capacity 1% - pool dedupditto 0 default pool dedupratio 1.00x - pool delegation on default pool failmode wait default pool free 274G - pool guid 1907687796174423256 - pool health ONLINE - pool listshares off local pool listsnapshots off default pool readonly off - pool size 278G - pool version 34 default .fi .in -2 .sp .LP \fB示例 6 \fR销毁 ZFS 存储池 .sp .LP 以下命令销毁池 \fItank\fR 以及其中包含的所有数据集。 .sp .in +2 .nf # \fBzpool destroy -f tank\fR .fi .in -2 .sp .LP \fB示例 7 \fR导出 ZFS 存储池 .sp .LP 以下命令导出池 \fItank\fR 中的设备,使这些设备可以重新定位,或在以后导入。 .sp .in +2 .nf # \fBzpool export tank\fR .fi .in -2 .sp .LP \fB示例 8 \fR导入 ZFS 存储池 .sp .LP 以下命令显示可用的池,然后导入池 tank 供系统使用。 .sp .LP 此命令的结果与以下内容相似: .sp .in +2 .nf # \fBzpool import\fR pool: tank id: 7678868315469843843 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: tank ONLINE mirror-0 ONLINE c1t2d0 ONLINE c1t3d0 ONLINE # \fBzpool import tank\fR .fi .in -2 .sp .LP \fB示例 9 \fR将所有 ZFS 存储池升级到当前版本 .sp .LP 以下命令将所有 ZFS 存储池升级到软件的当前版本。 .sp .in +2 .nf # \fBzpool upgrade -a\fR This system is currently running ZFS pool version 22. All pools are formatted using this version. .fi .in -2 .sp .LP \fB示例 10 \fR管理热备件 .sp .LP 以下命令创建一个包含可用热备件的新池: .sp .in +2 .nf # \fBzpool create tank mirror c0t0d0 c0t1d0 spare c0t2d0\fR .fi .in -2 .sp .sp .LP 如果其中的一个磁盘发生故障,池会缩减至降级状态。可以使用以下命令替换故障设备: .sp .in +2 .nf # \fBzpool replace tank c0t0d0 c0t3d0\fR .fi .in -2 .sp .sp .LP 设备重新同步后,将自动分离备件,并使其在其他设备发生故障时可用。使用以下命令可将热备件从池中永久移除: .sp .in +2 .nf # \fBzpool remove tank c0t2d0\fR .fi .in -2 .sp .LP \fB示例 11 \fR创建具有单独的镜像日志设备的 ZFS 池 .sp .LP 以下命令创建一个 ZFS 存储池,该池包含两个双向镜像和镜像日志设备。 .sp .in +2 .nf # \fBzpool create pool mirror c0d0 c1d0 mirror c2d0 c3d0 log mirror \e c4d0 c5d0\fR .fi .in -2 .sp .LP \fB示例 12 \fR将高速缓存设备添加到 ZFS 池中 .sp .LP 以下命令添加两个磁盘,用作 ZFS 存储池的高速缓存设备: .sp .in +2 .nf # \fBzpool add pool cache c2d0 c3d0\fR .fi .in -2 .sp .sp .LP 添加以后,高速缓存设备会逐渐被主内存中的内容填满。填充它们可能需要一个多小时的时间,具体取决于高速缓存设备的大小。使用 \fBiostat\fR 选项可以监视容量和读取操作,如下所示: .sp .in +2 .nf # \fBzpool iostat -v pool 5\fR .fi .in -2 .sp .LP \fB示例 13 \fR移除镜像日志设备 .sp .LP 指定下面所示的配置后,以下命令即删除池 \fBtank\fR 中的镜像日志设备 \fBmirror-2\fR。 .sp .in +2 .nf pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c6t0d0 ONLINE 0 0 0 c6t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c6t2d0 ONLINE 0 0 0 c6t3d0 ONLINE 0 0 0 logs mirror-2 ONLINE 0 0 0 c4t0d0 ONLINE 0 0 0 c4t1d0 ONLINE 0 0 0 .fi .in -2 .sp .sp .in +2 .nf # \fBzpool remove tank mirror-2\fR .fi .in -2 .sp .LP \fB示例 14 \fR恢复发生故障的 ZFS 池 .sp .LP 如果某个池发生了可恢复的故障,在该池已高速缓存(请参见前面的 \fBcachefile\fR)时,\fBzpool status\fR 将提供指示此状态的消息,或者在因为池的 \fBzpool import\fR 失败而显示的错误输出中提供。 .sp .LP 使用 \fBzpool clear\fR 命令恢复高速缓存的池: .sp .in +2 .nf # \fBzpool clear -F data\fR Pool data returned to its state as of Thu Jun 07 10:50:35 2012. Discarded approximately 29 seconds of transactions. .fi .in -2 .sp .sp .LP 如果池配置未高速缓存,请使用带恢复模式标志的 \fBzpool import\fR: .sp .in +2 .nf # \fBzpool import -F data\fR Pool data returned to its state as of Thu Jun 07 10:50:35 2012. Discarded approximately 29 seconds of transactions. .fi .in -2 .sp .LP \fB示例 15 \fR导入缺少日志设备的 ZFS 池 .sp .LP 以下示例说明尝试导入缺少日志设备的池。\fB-m\fR 选项用于完成导入操作。 .sp .LP 尽管无法确定其他设备的准确配置,但知道它们是该池的一部分。 .sp .in +2 .nf # \fBzpool import tank\fR The devices below are missing, use '-m' to import the pool anyway: c5t0d0 [log] cannot import 'tank': one or more devices is currently unavailable # \fBzpool import -m tank\fR # \fBzpool status tank\fR pool: tank state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.support.oracle.com/msg/ZFS-8000-2Q scan: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 c7t0d0 ONLINE 0 0 0 logs 1693927398582730352 UNAVAIL 0 0 0 was /dev/dsk/c5t0d0 errors: No known data errors .fi .in -2 .sp .sp .LP 以下示例说明如何导入缺少\fB镜像\fR日志设备的池。 .sp .in +2 .nf # \fBzpool import tank\fR The devices below are missing, use ?-m? to import the pool anyway: mirror-1 [log] c5t0d0 c5t1d0 # \fBzpool import -m tank\fR # \fBzpool status tank\fR pool: tank state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.support.oracle.com/msg/ZFS-8000-2Q scan: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 c7t0d0 ONLINE 0 0 0 logs mirror-1 UNAVAIL 0 0 0 insufficient replicas 46385995713041169 UNAVAIL 0 0 0 was /dev/dsk/c5t0d0 13821442324672734438 UNAVAIL 0 0 0 was /dev/dsk/c5t1d0 errors: No known data errors .fi .in -2 .sp .LP \fB示例 16 \fR通过特定路径导入池 .sp .LP 以下命令通过标识 \fBtank\fR 池的特定设备路径(在本例中为 \fB/dev/dsk/c9t9d9\fR 和 \fB/dev/dsk/c9t9d8\fR)来导入该池。 .sp .in +2 .nf # \fBzpool import -d /dev/dsk/c9t9d9s0 /dev/dsk/c9t9d8s0 tank\fR .fi .in -2 .sp .sp .LP 现有的限制在于,即使该池由完整的磁盘组成,该命令也必须包括特定设备的分片标识符。 .LP \fB示例 17 \fR获取可解析的输出 .sp .LP 以下命令用来获取可解析的输出并且将提供一个间隔。 .sp .in +2 .nf # \fBzpool monitor -p -o pool,pctdone,other -t send poolA poolC\fR poolA:20.4:poolA/fs2/team2@fs2_all poolA:0.0:poolA/fs2/team2@all poolA:28.6:poolA/fs\:1/team3@fs1_all poolC:33.3:poolC/fs1/team2@fs1_all poolC:50.0:poolC/fs2/team1@fs2_all .fi .in -2 .sp .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .sp .6 .RS 4n 成功完成。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .sp .6 .RS 4n 出现错误。 .RE .sp .ne 2 .mk .na \fB\fB2\fR\fR .ad .sp .6 .RS 4n 指定的命令行选项无效。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/file-system/zfs _ 接口稳定性Committed(已确定) .TE .SH 另请参见 .sp .LP \fBps\fR(1)、\fBzfs\fR(1M)、\fBattributes\fR(5)、\fBSDC\fR(7) .SH 附注 .sp .LP 每个 ZFS 存储池具有一个关联的进程 \fBzpool-\fR\fIpoolname\fR,在 \fBps\fR(1) 之类的工具中可见。用户与这些进程没有交互。请参见 \fBSDC\fR(7)。