我刚刚更换了一个硬盘,它是两个不同冗余池的一部分,现在两个池都不可用......
细节:
- 有四个驱动器:2x4TB(
da0
和ada1
)以及 2x3TB(da1
和da2
)。 - 一个池是 RAIDZ1,由全部 3TB 驱动器和 4TB 驱动器的 3TB 部分组成。
- 另一个池是一个镜像,由两个较大驱动器的剩余空间组成。
- 我用另一个相同大小的硬盘替换了其中一个 4TB 硬盘(
da0
)......
我预计两个池都会进入“降级”模式,直到我将替换件拼接成两个部分并将每个部分添加到其池中。
相反,计算机突然重新启动,恢复后,两个池都处于“不可用”状态:
pool: aldan
state: UNAVAIL
status: One or more devices could not be opened. There are insufficient
replicas for the pool to continue functioning.
action: Attach the missing device and online it using 'zpool online'.
see: http://illumos.org/msg/ZFS-8000-3C
scan: none requested
config:
NAME STATE READ WRITE CKSUM
aldan UNAVAIL 0 0 0
raidz1-0 UNAVAIL 0 0 0
1257549909357337945 UNAVAIL 0 0 0 was /dev/ada1p1
1562878286621391494 UNAVAIL 0 0 0 was /dev/da1
8160797608248051182 UNAVAIL 0 0 0 was /dev/da0p1
15368186966842930240 UNAVAIL 0 0 0 was /dev/da2
logs
4588208516606916331 UNAVAIL 0 0 0 was /dev/ada0e
pool: lusterko
state: UNAVAIL
status: One or more devices could not be opened. There are insufficient
replicas for the pool to continue functioning.
action: Attach the missing device and online it using 'zpool online'.
see: http://illumos.org/msg/ZFS-8000-3C
scan: none requested
config:
NAME STATE READ WRITE CKSUM
lusterko UNAVAIL 0 0 0
mirror-0 UNAVAIL 0 0 0
623227817903401316 UNAVAIL 0 0 0 was /dev/ada1p2
7610228227381804026 UNAVAIL 0 0 0 was /dev/da0p2
我现在拆分了新驱动器,但尝试“zpool replace”时,系统会提示“池不可用”。我非常确定,如果我直接断开新驱动器,两个池都会恢复正常(如果降级)。为什么它们现在都“不可用”?根据 camcontrol,所有设备都在线:
<ATA TOSHIBA MG03ACA4 FL1A> at scbus0 target 0 lun 0 (pass0,da0)
<ATA Hitachi HUS72403 A5F0> at scbus0 target 1 lun 0 (pass1,da1)
<ATA TOSHIBA HDWD130 ACF0> at scbus0 target 2 lun 0 (pass2,da2)
<M4-CT128M4SSD2 0309> at scbus1 target 0 lun 0 (pass3,ada0)
<MB4000GCWDC HPGI> at scbus2 target 0 lun 0 (pass4,ada1)
操作系统是 FreeBSD-11.3-STABLE/amd64。有什么问题?
更新:不,我在拔出磁盘之前没有明确offline
指定设备——而且它已经在返回亚马逊的路上了。我很惊讶,这样的脱机是必要的——ZFS 难道不能处理突然任何硬盘坏了?它难道不应该同样准备好让技术人员用另一个硬盘替换坏掉的硬盘吗?它为什么会这样大发雷霆?
我有备份,可以从头重建池 - 但我想弄清楚如何避免这样做。或者,如果不可能,提交适当的错误报告...
我完全拔掉了新驱动器,但池的状态并没有改变...也许,我需要重新启动 - 无论这是否有帮助,这都是相当令人失望的。
更新 2:多次重启,无论是否连接新磁盘,都没有帮助。但是,zpool import
正如我所料,列出了两个池:已降级(但可用!)。例如:
pool: lusterko
id: 11551312344985814621
state: DEGRADED
status: One or more devices are missing from the system.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
see: http://illumos.org/msg/ZFS-8000-2Q
config:
lusterko DEGRADED
mirror-0 DEGRADED
ada1p2 ONLINE
12305582129131953320 UNAVAIL cannot open
但zpool status
仍坚持认为,全部设备不可用...还有希望吗?
答案1
也许您在移除旧驱动器之前没有将其离线。(ZFS 可能认为逻辑驱动器(您的池)已损坏,而控制器认为它们没有问题。如果磁盘柱面大小存在差异,就会发生这种情况 - 这种情况很少见,但可能会发生。)
摆脱这种情况的方法:
- 获取磁盘名称
zpool status
- 使用 diskinfo 来识别上面提到的不可用驱动器的物理位置
cfgadm -c unconfigure
重新配置它cfgadm -c configure
- 将新磁盘联机 -
zpool online zone
- 更新区域-
zpool replace zone
(zpool status zone
应显示在线) - 运行
zpool replace
命令来更换磁盘