首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZFS“自动替换”什么时候生效?

ZFS“自动替换”什么时候生效?
EN

Server Fault用户
提问于 2020-09-02 13:33:34
回答 1查看 3.3K关注 0票数 5

背景

autoreplace记录在案,如下所示:

autoreplace=on _ off控件自动更换设备。如果设置为"off",则设备替换必须由管理员通过使用"zpool替换“命令来启动。如果设置为"on",任何新设备(与以前属于该池的设备位于同一物理位置)都会自动格式化和替换。默认行为为"off“。此属性也可以通过其缩短的列名“替换”来引用。

下面是我感兴趣的池中该设置的当前状态:

代码语言:javascript
复制
root@[...]:/# zpool get autoreplace zfs-pool
NAME      PROPERTY     VALUE    SOURCE
zfs-pool  autoreplace  on       local

所以它似乎被启用了。

观测

由于S.M.A.R.T.相关错误,一个磁盘已被移除,ZFS正确地承认该设备不再可用。将磁盘更改为DEGRADED等的镜像。因为我有多个备用磁盘,所以我使用zpool replace zfs-pool FAULTY_DISK SPARE_DISK临时放置了一个备用磁盘。这是必要的,因为我使用的是UB16.04,自动使用备件不能正常工作,甚至根本不起作用

在镜像再次同步并且新磁盘已经物理连接之后,我重新启动了系统,因为否则使用的控制器会阻止对新磁盘的访问。在启动过程中,控制器识别新磁盘,询问是否应该启用这些磁盘,在前一种情况下,新磁盘随后可供操作系统使用。磁盘已经初始化,分区创建等,并完全可用,就像故障之前在同一物理插槽。重要的是,操作系统对磁盘使用了与以前相同的名称:/dev/sdf/dev/disk/by-path/pci-0000:15:00.0-scsi-0:1:0:1-part*

尽管如此,ZFS并没有自动使用新磁盘来替换以前的磁盘。尽管池的状态输出提到旧磁盘的序列号丢失,以及它在过去有哪些路径,但这与新磁盘同时获得的路径是一样的。我需要使用zpool replace zfs-pool pci-0000:15:00.0-scsi-0:1:0:1-part3手动替换新磁盘。这使得ZFS将新磁盘放入正确的镜像中,因为路径相同,并且在重新擦银之后,备用磁盘也被自动移除。

代码语言:javascript
复制
NAME                                         STATE     READ WRITE CKSUM
zfs-pool                                     DEGRADED     0     0     0
  mirror-0                                   ONLINE       0     0     0
    pci-0000:05:00.0-scsi-0:1:0:0-part3      ONLINE       0     0     0
    pci-0000:15:00.0-scsi-0:1:0:0-part3      ONLINE       0     0     0
  mirror-1                                   DEGRADED     0     0     0
    pci-0000:05:00.0-scsi-0:1:0:1-part3      ONLINE       0     0     0
    spare-1                                  DEGRADED     0     0     0
      replacing-0                            DEGRADED     0     0     0
        11972718311040401135                 UNAVAIL      0     0     0  was /dev/disk/by-path/pci-0000:15:00.0-scsi-0:1:0:1-part3/old
        pci-0000:15:00.0-scsi-0:1:0:1-part3  ONLINE       0     0     0  (resilvering)
      pci-0000:15:00.0-scsi-0:1:0:3-part3    ONLINE       0     0     0
  mirror-2                                   ONLINE       0     0     0
    pci-0000:05:00.0-scsi-0:1:0:2-part3      ONLINE       0     0     0
    pci-0000:15:00.0-scsi-0:1:0:2-part3      ONLINE       0     0     0
spares
  pci-0000:05:00.0-scsi-0:1:0:3-part3        AVAIL
  pci-0000:15:00.0-scsi-0:1:0:3-part3        INUSE     currently in use

问题

虽然使用的命令是这样工作的文档,但我想知道为什么启用autoreplace是必要的呢?难道不应该在新磁盘被成功分区后立即完成这一步吗?或者,发出的命令是否需要属性autoreplace才能工作?没有文档证明它依赖于该设置:

如果池不是冗余的,则需要替换-f池old_device 新的_设备 ... new_device。如果未指定new_device,则默认为old_device。这种形式的替换是有用的,在一个现有的磁盘已经失败,并已被物理替换。在这种情况下,新磁盘可能具有与旧设备相同的/dev/dsk路径,尽管它实际上是一个不同的磁盘。ZFS认识到这一点。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-09-02 17:34:20

ZFS依赖于泽德来处理自动替换失败/断开连接的磁盘,因此您必须确保ZED正在运行。但是,最新的0.8.xZed发布了有臭虫,这使得ZFS无法正确地自动分区被替换的磁盘.请注意,在0.7.xZFS/ZED版本中不存在此bug。

编辑:以下是基于您的评论的一些答案:

  • ZED是在某种程度上自动替换“内部”,还是像使用热备件和其他操作一样需要脚本?ZED在其FMA (故障管理代理)内部处理自动替换。换句话说,代理目录中不需要脚本。这些脚本通常在FMA之后运行,并且应该启动相应的操作,如启动一个清除程序、登录到syslog等。
  • 在自动替换的情况下,我可以在哪里找到应用自动分区的详细信息?我将各个分区转发到ZFS,而不是整个磁盘。自动分区只在将整个磁盘传递给ZFS时才能工作(请注意,是ZFS本身而不是ZED对受影响的磁盘进行分区)。当将现有分区传递给ZFS (即:使用sda1作为vdev)时,分区表根本不会被触及。
票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1032419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档