Tho*_*ing 5 zfs hard-drive ubuntu-16.04
autoreplace
记录如下:
自动替换=开| off 控制自动设备更换。如果设置为“关闭”,则管理员必须使用“zpool Replace”命令启动设备更换。如果设置为“on”,则在与先前属于池的设备位于同一物理位置的任何新设备都会自动格式化和替换。默认行为是“关闭”。该属性也可以通过其缩短的列名称“replace”来引用。
以下是我感兴趣的池中该设置的当前状态:
root@[...]:/# zpool get autoreplace zfs-pool
NAME PROPERTY VALUE SOURCE
zfs-pool autoreplace on local
Run Code Online (Sandbox Code Playgroud)
所以看来是可以启用的。
由于 SMART 相关错误,一个磁盘已被移除,并且 ZFS 正确识别该设备不再可用。已使用磁盘的镜像改为DEGRADED
etc。因为我有多个备用磁盘,所以我曾经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
Run Code Online (Sandbox Code Playgroud)
虽然所使用的命令是以这种方式工作的文档,但我想知道为什么需要autoreplace
启用它?那不是应该在新磁盘分区成功后立即执行这一步骤吗?或者该属性是autoreplace
发出的命令发挥作用所必需的吗?没有记录依赖该设置:
zpool Replace [-f] pool old_device [new_device] [...] 如果池不是冗余的,则需要 new_device。如果未指定new_device,则默认为old_device。这种替换形式在现有磁盘发生故障并已被物理替换后非常有用。在这种情况下,新磁盘可能与旧设备具有相同的 /dev/dsk 路径,即使它实际上是不同的磁盘。ZFS 认识到这一点。
ZFS 依靠ZED来处理自动替换故障/断开连接的磁盘,因此您必须确保 ZED 正在运行。但是,最新的 0.8.x ZED 版本存在一个错误,该错误会阻止 ZFS 正确地对替换的磁盘进行自动分区。请注意,0.7.x ZFS/ZED 版本中不存在此错误。
编辑:根据您的评论得出一些答案:
ZED 是否以某种方式“内部”自动替换,或者是否需要脚本(例如使用热备件和其他操作)?ZED 在其 FMA(故障管理代理)内部处理自动替换。换句话说,代理目录中不需要任何脚本。这些脚本通常在 FMA之后运行,并且应该启动附带操作,如启动清理、记录到系统日志等
在哪里可以找到有关自动替换时应用的自动分区的详细信息?我将单个分区转发到 ZFS,而不是整个磁盘。自动分区仅在将整个磁盘传递到 ZFS 时起作用(请注意,是 ZFS 本身而不是 ZED 对受影响的磁盘进行分区)。当将现有分区传递到 ZFS(即:用作sda1
vdev)时,根本不会触及分区表。
归档时间: |
|
查看次数: |
4124 次 |
最近记录: |