Oracle Solaris ZFS 管理指南

管理 ZFS 存储池中的设备

ZFS 存储池的组件中介绍了有关设备的大多数基本信息。创建池后,即可执行几项任务来管理池中的物理设备。

向存储池中添加设备

通过添加新的顶层虚拟设备,可以向池中动态添加磁盘空间。此磁盘空间立即可供池中的所有数据集使用。要向池中添加新虚拟设备,请使用 zpool add 命令。例如:


# zpool add zeepool mirror c2t1d0 c2t2d0

用于指定虚拟设备的格式与 zpool create 命令中使用的虚拟设备格式相同。将对设备进行检查以确定是否正在使用这些设备,此命令在不使用 -f 选项的情况下无法更改冗余级别。此命令还支持 -n 选项,以便可以执行预运行。例如:


# zpool add -n zeepool mirror c3t1d0 c3t2d0
would update 'zeepool' to the following configuration:
      zeepool
        mirror
            c1t0d0
            c1t1d0
        mirror
            c2t1d0
            c2t2d0
        mirror
            c3t1d0
            c3t2d0

此命令语法会将镜像设备 c3t1d0c3t2d0 添加到 zeepool 池的现有配置中。

有关如何执行虚拟设备验证的更多信息,请参见检测使用中的设备


示例 4–1 向镜像 ZFS 配置中添加磁盘

在以下示例中,会将另一个镜像添加到 Oracle Sun Fire x4500 系统上的某个现有镜像 ZFS 配置中。


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors
# zpool add tank mirror c0t3d0 c1t3d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror-2  ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

errors: No known data errors


示例 4–2 向 RAID-Z 配置中添加磁盘

可按类似方式向 RAID-Z 配置中添加其他磁盘。以下示例说明如何将包含一个 RAID-Z 设备(含 3 个磁盘)的存储池转换为包含两个 RAID-Z 设备(各含 3 个磁盘)的存储池。


# zpool status rzpool
  pool: rzpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rzpool      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0

errors: No known data errors
# zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0
# zpool status rzpool
  pool: rzpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rzpool      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
          raidz1-1  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
            c2t4d0  ONLINE       0     0     0

errors: No known data errors


示例 4–3 添加和删除镜像日志设备

以下示例说明如何向镜像存储池中添加镜像日志设备。有关在存储池中使用日志设备的更多信息,请参见设置单独的 ZFS 日志设备


# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0

errors: No known data errors
# zpool add newpool log mirror c0t6d0 c0t7d0
# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0
        logs
          mirror-1  ONLINE       0     0     0
            c0t6d0  ONLINE       0     0     0
            c0t7d0  ONLINE       0     0     0

errors: No known data errors

可以将日志设备附加到现有日志设备,以创建镜像日志设备。此操作等同于在未镜像的存储池中附加设备。

可以使用 zpool remove 命令删除日志设备。通过指定 mirror-1 参数,可以删除上例中的镜像日志设备。例如:


# zpool remove newpool mirror-1
# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        newpool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0

errors: No known data errors

如果池配置仅包含一个日志设备,则应通过指定设备名称的方式删除该日志设备。例如:


# zpool status pool
  pool: pool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c0t8d0  ONLINE       0     0     0
            c0t9d0  ONLINE       0     0     0
        logs
          c0t10d0   ONLINE       0     0     0

errors: No known data errors
# zpool remove pool c0t10d0


示例 4–4 添加和删除高速缓存设备

可以向 ZFS 存储池中添加高速缓存设备,不再需要时可以删除。

可使用 zpool add 命令添加高速缓存设备。例如:


# zpool add tank cache c2t5d0 c2t8d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
        cache
          c2t5d0    ONLINE       0     0     0
          c2t8d0    ONLINE       0     0     0

errors: No known data errors

高速缓存设备不能镜像或成为 RAID-Z 配置的一部分。

可使用 zpool remove 命令删除高速缓存设备。例如:


# zpool remove tank c2t5d0 c2t8d0
# zpool status tank
 pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0

errors: No known data errors

目前,zpool remove 命令仅支持删除热备件、日志设备和高速缓存设备。可以使用 zpool detach 命令删除属于主镜像池配置的设备。非冗余设备和 RAID-Z 设备无法从池中删除。

有关在 ZFS 存储池中使用高速缓存设备的更多信息,请参见使用高速缓存设备创建 ZFS 存储池


附加和分离存储池中的设备

除了 zpool add 命令外,还可以使用 zpool attach 命令将新设备添加到现有镜像设备或非镜像设备中。

如果要附加磁盘以创建镜像根池,请参见如何创建镜像根池(安装后)

如果要替换 ZFS 根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘


示例 4–5 将双向镜像存储池转换为三向镜像存储池

在本示例中,zeepool 是现有的双向镜像,通过将新设备 c2t1d0 附加到现有设备 c1t1d0 可将其转换为三向镜像。


# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0

errors: No known data errors
# zpool attach zeepool c1t1d0 c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 12:59:20 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0  592K resilvered

errors: No known data errors

如果现有设备是三向镜像的一部分,则附加新设备将创建四向镜像,依此类推。在任一情况下,新设备都会立即开始重新同步。



示例 4–6 将非冗余 ZFS 存储池转换为镜像 ZFS 存储池

此外,还可以通过使用 zpool attach 命令将非冗余存储池转换为冗余存储池。例如:


# zpool create tank c0t1d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c0t1d0    ONLINE       0     0     0

errors: No known data errors
# zpool attach tank c0t1d0 c1t1d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 14:28:23 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0  73.5K resilvered

errors: No known data errors

可以使用 zpool detach 命令从镜像存储池中分离设备。例如:


# zpool detach zeepool c2t1d0

但是,如果不存在该数据的其他有效副本,此操作将失败。例如:


# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs

通过分割镜像 ZFS 存储池创建新池

使用 zpool split 命令可以很快将镜像 ZFS 存储池克隆为备用池。

目前无法使用此功能来分割镜像根池。

可以使用 zpool split 命令从镜像 ZFS 存储池分离磁盘,以利用其中一个分离的磁盘创建新池。新池的内容与原镜像 ZFS 存储池完全相同。

缺省情况下,对镜像池执行 zpool split 操作将分离最后一个磁盘以用于新创建的池。分割操作之后,导入新池。例如:


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors
# zpool split tank tank2
# zpool import tank2
# zpool status tank tank2
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c1t0d0    ONLINE       0     0     0

errors: No known data errors

  pool: tank2
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank2       ONLINE       0     0     0
          c1t2d0    ONLINE       0     0     0

errors: No known data errors

通过在 zpool split 命令中指定,您可以标识哪个磁盘应用于新创建的池。例如:


# zpool split tank tank2 c1t0d0

发生实际的分割操作之前,内存中的数据被刷新到镜像磁盘。数据刷新后,将磁盘从池中分离,并将其指定给一个新池 GUID。新池 GUID 即产生,以便能在分割该池的系统上导入该池。

如果要分割的该池具有非缺省的数据集挂载点,并且在同一系统上创建了新池,则需要使用 zpool split -R 选项标识新池的备用根目录,使得现有挂载点不会发生冲突。例如:


# zpool split -R /tank2 tank tank2

如果不使用 zpool split -R 选项,您可能会看到,当您尝试使用 -R 选项导入新池时,挂载点发生冲突。如果在不同的系统上创建新池,则不需要指定备用根目录,除非发生挂载点冲突。

使用 zpool split 功能之前,请检查以下几点:


示例 4–7 分割镜像 ZFS 存储池 (zpool split)

以下示例分割一个称为 trinity 的镜像存储池,它具有三个磁盘:c1t0d0c1t2d0 c1t3d0。结果产生两个池:镜像池 trinity 包括磁盘 c1t0d0c1t2d0,新池 neo 包括磁盘 c1t3d0。每个池的内容完全相同。


# zpool status trinity
  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

errors: No known data errors
# zpool split trinity neo
# zpool import neo
# zpool status trinity neo
  pool: neo
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        neo         ONLINE       0     0     0
          c1t3d0    ONLINE       0     0     0

errors: No known data errors

  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0

errors: No known data errors

使存储池中的设备联机和脱机

使用 ZFS 可使单个设备脱机或联机。硬件不可靠或无法正常工作时(假定该情况只是暂时的),ZFS 会继续对设备读写数据。如果该情况不是暂时的,您可以指示 ZFS 通过使设备脱机来忽略该设备。ZFS 不会向已脱机的设备发送任何请求。


注 –

设备无需脱机即可进行替换。


需要临时断开存储器时,可以使用 zpool offline 命令。例如,如果需要以物理方式将阵列与一组光纤通道交换机断开连接,并将该阵列连接到另一组交换机,则可使 LUN 从 ZFS 存储池所使用的阵列中脱机。在该阵列重新连接并可正常使用新的一组交换机后,便可使上述 LUN 联机。在 LUN 脱机期间添加到存储池中的数据将在 LUN 恢复联机后重新同步到 LUN 中。

假定所涉及的系统在连接到新交换机后可以立即检测到存储器(可能采用与以前不同的控制器),并且您的池设置为 RAID-Z 配置或镜像配置,则上述情况是可能的。

使设备脱机

可以使用 zpool offline 命令使设备脱机。如果设备是磁盘,则可以使用路径或短名称指定设备。例如:


# zpool offline tank c1t0d0
bringing device c1t0d0 offline

使设备脱机时,请考虑以下几点:

查询池的状态时,已脱机的设备以 OFFLINE 状态显示。有关查询池的状态的信息,请参见查询 ZFS 存储池的状态

有关设备运行状况的更多信息,请参见确定 ZFS 存储池的运行状况

使设备联机

使设备脱机后,可以使用 zpool online 命令使其恢复联机。例如:


# zpool online tank c1t0d0
bringing device c1t0d0 online

使设备联机时,已写入池中的任何数据都将与最新可用的设备重新同步。请注意,不能通过使设备联机来替换磁盘。如果使设备脱机,然后替换该设备并尝试使其联机,则设备将一直处于故障状态。

如果尝试使故障设备联机,则会显示类似以下内容的消息:


# zpool online tank c1t0d0
warning: device 'c1t0d0' onlined, but remains in faulted state
use 'zpool replace' to replace devices that are no longer present

您还可能会看到故障磁盘消息显示在控制台上,或者写入 /var/adm/messages 文件中。例如:


SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010
PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8
DESC: A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3 for more information.
AUTO-RESPONSE: No automated response will occur.
IMPACT: Fault tolerance of the pool may be compromised.
REC-ACTION: Run 'zpool status -x' and replace the bad device.

有关更换故障设备的更多信息,请参见解决缺少设备的问题

您可以使用 zpool online -e 命令扩展 LUN。 缺省情况下,添加至池中的 LUN 不会扩展到其完整大小,除非启用了 autoexpand 池属性。使用 zpool online -e 命令可以自动扩展 LUN,即使 LUN 已经联机或者 LUN 目前脱机。例如:


# zpool online -e tank c1t13d0

清除存储池设备错误

如果设备因出现故障(导致在 zpool status 输出中列出错误)而脱机,则可以使用 zpool clear 命令清除错误计数。

如果不指定任何参数,则此命令将清除池中的所有设备错误。例如:


# zpool clear tank

如果指定了一个或多个设备,则此命令仅清除与指定设备关联的错误。例如:


# zpool clear tank c1t0d0

有关清除 zpool 错误的更多信息,请参见清除瞬态错误

替换存储池中的设备

可以使用 zpool replace 命令替换存储池中的设备。

如果使用冗余池中同一位置的另一设备以物理方式替换某一设备,则可能只需标识被替换的设备。ZFS 会意识到该设备是某一硬件上同一位置的不同磁盘。例如,要通过删除磁盘并在同一位置替换该磁盘来替换出现故障的磁盘 (c1t1d0),请使用以下语法:


# zpool replace tank c1t1d0

如果用位于不同物理位置的磁盘替换存储池中的设备,则需要指定两个设备。例如:


# zpool replace tank c1t1d0 c1t2d0

如果要替换 ZFS 根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘

下面是替换磁盘的基本步骤:

在某些系统(如 Sun Fire x4500)上,必须先取消磁盘配置,才能使其脱机。如果在该系统的同一插槽位置替换磁盘,则可以仅执行 zpool replace 命令,如本节的第一个示例所示。

有关在 Sun Fire X4500 系统上替换磁盘的示例,请参见示例 11–1

替换 ZFS 存储池中的设备时,请考虑以下几点:

有关更换设备的更多信息,请参见解决缺少设备的问题更换或修复损坏的设备

在存储池中指定热备件

借助热备件功能,可以在一个或多个存储池中确定能用来替换发生故障或失败的磁盘。指定一个设备作为热备件意味着该设备不是池中的活动设备,但如果池中的某一活动设备发生故障,热备件将自动替换该故障设备。

可通过以下方式将设备指定为热备件:

以下示例说明创建池时如何将设备指定为热备件:


# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0
# zpool status trinity
  pool: trinity
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        trinity     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
        spares
          c1t2d0    AVAIL   
          c2t2d0    AVAIL   

errors: No known data errors

以下示例说明创建池之后如何通过向池中添加设备来指定热备件:


# zpool add neo spare c5t3d0 c6t3d0
# zpool status neo
  pool: neo
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        neo         ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c3t3d0  ONLINE       0     0     0
            c4t3d0  ONLINE       0     0     0
        spares
          c5t3d0    AVAIL   
          c6t3d0    AVAIL   

errors: No known data errors

可使用 zpool remove 命令从存储池中删除热备件。例如:


# zpool remove zeepool c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
        spares
          c1t3d0    AVAIL   

errors: No known data errors

如果存储池当前正在使用热备件,则不能将其删除。

使用 ZFS 热备件时,请考虑以下几点:

在存储池中激活和取消激活热备件

可通过以下方式激活热备件:

通过 zpool replace 命令可以用热备件手动替换设备。请参见示例 4–8

如果热备件可用,将自动替换故障设备。例如:


# zpool status -x
  pool: zeepool
 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.sun.com/msg/ZFS-8000-2Q
 scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   DEGRADED     0     0     0
              c2t1d0  UNAVAIL      0     0     0  cannot open
              c2t3d0  ONLINE       0     0     0  88.5K resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

目前,取消激活热备件的方法有以下几种:


示例 4–8 用热备件手动替换磁盘

本例使用 zpool replace 命令将磁盘 c2t1d0 替换为热备件 c2t3d0


# zpool replace zeepool c2t1d0 c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   ONLINE       0     0     0
              c2t1d0  ONLINE       0     0     0
              c2t3d0  ONLINE       0     0     0  90K resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

然后分离磁盘 c2t1d0


# zpool detach zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  90K resilvered

errors: No known data errors


示例 4–9 替换故障磁盘后分离热备件

本例使用 zpool replace 命令物理替换磁盘 (c2t1d0) 并通知 ZFS。


# zpool replace zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   ONLINE       0     0     0
              c2t3d0  ONLINE       0     0     0  90K resilvered
              c2t1d0  ONLINE       0     0     0
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

然后,您可以使用 zpool detach 命令使热备件回到备件池。例如:


# zpool detach zeepool c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010
config:

        NAME               STATE     READ WRITE CKSUM
        zeepool            ONLINE       0     0     0
          mirror           ONLINE       0     0     0
            c1t2d0         ONLINE       0     0     0
            c2t1d0         ONLINE       0     0     0
        spares
          c2t3d0           AVAIL

errors: No known data errors


示例 4–10 分离故障磁盘并使用热备件

如果想临时或永久性换入用于替换的热备件,以此替换故障磁盘,则应分离原(故障)磁盘。故障磁盘完成替换后,可以将其再添加到存储池用作备件。例如:


# zpool status zeepool
  pool: zeepool
 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.sun.com/msg/ZFS-8000-2Q
 scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go
config:

        NAME          STATE     READ WRITE CKSUM
        zeepool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t2d0    ONLINE       0     0     0
            spare-1   DEGRADED     0     0     0
              c2t1d0  UNAVAIL      0     0     0  cannot open
              c2t3d0  ONLINE       0     0     0  70.5M resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors
# zpool detach zeepool c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  70.5M resilvered

errors: No known data errors
(Original failed disk c2t1d0 is physically replaced)
# zpool add zeepool spare c2t1d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0  70.5M resilvered
        spares
          c2t1d0    AVAIL   

errors: No known data errors