什么是热备份( hot spare),它是如何工作的?

ZFS 热备件功能使我们能够识别可用于替换一个或者多个存储池中的故障或者故障设备的磁盘。
将设备指定为热备用意味着该设备不是池中的活动设备,但如果池中的活动设备出现故障,热备用会自动替换故障设备。

我们可以在创建池时使用 zpool create 命令将设备指定为热备件,如果已创建池,则可以使用 zpool add 命令。

在更换并重新同步发生故障的设备后,备用设备会自动分离并可供使用。
通过拆卸备件可以取消正在进行的备件更换。
如果原始故障设备已分离,则备用设备将在配置中占据其位置,并从备用设备的所有活动池列表中删除。

在存储池中指定热备件

1. 创建存储池时添加备件

要将热备件指定给我们正在创建的池,请使用 zpool create 后跟池名称、配置、关键字备件和备件名称。
在下面的示例中,正在创建一个名为 appool 的池。
在这个池中有一个包含两个磁盘的镜像:c2t1d0 c2t2d0。
已指定两个备件 c2t3d0 c2t4d0。

# zpool create appool mirror c2t1d0 c2t2d0 spare c2t3d0 c2t4d0

如果查看 appool 的状态,我们可以看到备件是池的一部分,并且它们的状态为可用。

# zpool status appool
  pool: appool
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        appool      ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
        spares
          c2t3d0    AVAIL   
          c2t4d0    AVAIL   
errors: No known data errors

在这种情况下,如果镜像磁盘中的一个或者两个发生故障,ZFS 会自动用一个或者两个可用备用磁盘替换它们。

2. 向现有存储池添加备件

要通过在创建池后将它们添加到池中来指定热备用,请使用 zpool add 命令,后跟池名称、关键字备用以及要指定为热备用的磁盘的名称。

# zpool add appool spare c2t3d0 c2t4d0

在上面的示例中,我们将磁盘 c2t3d0 和 c2t4d0 指定为备用磁盘,并将它们添加到名为 appool 的池中。
然后,我们对池运行 zpool status 命令以验证备件是否已成功添加并且它们已成功添加。
请注意,两个备件的状态均为可用 (AVAIL)。

# zpool status appool
  pool: appool
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        appool      ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
        spares
          c2t3d0    AVAIL   
          c2t4d0    AVAIL   
errors: No known data errors

同样,正如我们在前面的示例中看到的,如果镜像磁盘中的一个或者两个发生故障,ZFS 会自动将它们替换为一个或者两个可用的备用磁盘。

on it road .com

在工作的热备件

接下来,让我们看一个示例,其中 appool 中的一个活动设备出现故障,ZFS 自动用可用备用设备之一替换了故障设备。

# zpool status appool
  pool: appool
 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: resilvered completed 0h12m with 0 errors on Tue Dec 13 14:16:0 2017
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        appool      ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
            spare-1 UNAVAIL      0     0     0
            c2t2d0  UNAVAIL      0     0     0  cannot open
            c2t4d0  ONLINE       0     0     0  58.5K resilvered
        spares
          c2t4d0    INUSE      currently in use   
          c2t3d0    AVAIL

在此示例中,磁盘 c2t2d0 发生故障并自动由热备用 c2t4d0 替换,该热备用 c2t4d0 已重新同步,现在在镜像池中显示为活动设备。
另请注意,热备用 c2t4d0 的状态已从可用 (AVAIL) 更改为正在使用 (INUSE)。

删除存储池中的热备件

要从存储池中删除热备用,请使用 zpool remove 命令,后跟池名称和热备用名称。
在此示例中,我们将从名为 appool 的池中删除热备用 c2t3d0,在池中只留下一个热备用:c2t4d0。

# zpool remove appool c2t3d0
# zpool status appool
  pool: appool
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        appool      ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t2d0  ONLINE       0     0     0
        spares
          c2t4d0    AVAIL   
errors: No known data errors

正如我们在本例中看到的,在移除后,热备件不再出现在备件集中。

Solaris ZFS:如何在存储池中指定热备件
日期:2020-09-17 00:15:27 来源:oir作者:oir