AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1032419
Accepted
Thorsten Schöning
Thorsten Schöning
Asked: 2020-09-03 05:33:34 +0800 CST2020-09-03 05:33:34 +0800 CST 2020-09-03 05:33:34 +0800 CST

ZFS“自动替换”何时生效?

  • 772

背景

autoreplace记录如下:

自动替换=打开 | off 控制自动设备更换。如果设置为“off”,则必须由管理员使用“zpool replace”命令启动设备更换。如果设置为“on”,则在与以前属于池的设备相同的物理位置找到的任何新设备都会自动格式化和替换。默认行为是“关闭”。此属性也可以通过其缩短的列名“replace”来引用。

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

root@[...]:/# zpool get autoreplace zfs-pool
NAME      PROPERTY     VALUE    SOURCE
zfs-pool  autoreplace  on       local

所以它似乎已启用。

观察

由于与 SMART 相关的错误,一个磁盘已被移除,并且 ZFS 正确地识别出该设备不再可用。使用过磁盘的镜像改为DEGRADEDetc。因为我有多个备用磁盘,所以我曾经zpool replace zfs-pool FAULTY_DISK SPARE_DISK临时放置一个备用磁盘。这是必要的,因为对于我正在使用的 UB 16.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 将新磁盘放入正确的镜像中,因为路径相同,并且在重新同步后,备用磁盘也已自动删除。

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发出的命令完全需要该属性?没有记录依赖该设置:

如果池不是冗余的,则需要zpool replace [-f] pool old_device [new_device] [...] new_device。如果未指定 new_device,则默认为 old_device。这种替换形式在现有磁盘发生故障并被物理替换后很有用。在这种情况下,新磁盘可能与旧设备具有相同的 /dev/dsk 路径,即使它实际上是不同的磁盘。ZFS 认识到这一点。

hard-drive zfs ubuntu-16.04
  • 1 1 个回答
  • 2441 Views

1 个回答

  • Voted
  1. Best Answer
    shodanshok
    2020-09-03T09:34:20+08:002020-09-03T09:34:20+08:00

    ZFS 依靠ZED来处理自动更换故障/断开连接的磁盘,因此您必须确保 ZED 正在运行。但是,最新的 0.8.x ZED 版本存在一个错误,该错误会阻止 ZFS 正确地对替换的磁盘进行自动分区。请注意,此错误在 0.7.x ZFS/ZED 版本中不存在。

    编辑:根据您在下面的评论的一些答案:

    • ZED 是否会以某种方式“内部”自动替换,或者是否需要使用热备件和其他操作的脚本?ZED 在其 FMA(故障管理代理)内部处理自动替换。换句话说,代理目录中不需要脚本。这些脚本通常在 FMA之后运行,并且应该启动相应的操作,例如启动清理、记录到 syslog 等

    • 在自动替换的情况下,我在哪里可以找到有关应用自动分区的详细信息?我将单个分区而不是整个磁盘转发到 ZFS。自动分区仅在将整个磁盘传递给 ZFS 时起作用(请注意,它是 ZFS 本身,而不是 ZED,对受影响的磁盘进行分区)。将现有分区传递给 ZFS(即:sda1用作 vdev)时,根本不会触及分区表。

    • 5

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • Linux:“发现重复的 PV XXXXYYYYY:用户 /dev/sdb1 而不是 /dev/sda1”

  • Windows C:驱动器大小

  • 了解磁盘队列长度

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve