昨天在 FreeBSD 10.3-RELEASE-p20 系统上尝试替换 zpool 中的磁盘时,zfs 文件系统在发出zpool detach srv gpt/d0
命令后变得无响应。服务器充当 NFS 服务器、WebDAV 服务器和 iSCSI 目标,并且在执行zpool detach
所有 iSCSI 客户端后开始出现超时。
这显然导致整个 ZFS 子系统锁定。zpool status
或任何其他命令只会挂起并且不会产生任何输出。中没有显示任何内容dmesg
,top
也没有显示任何消耗大量 CPU 的进程。最后,我们无法找到任何解决方案并被迫重新启动系统(包括使用硬重新启动,因为在停止所有服务后软重新启动未能重新启动系统)以使 iSCSI 目标重新联机。
是什么导致了这种情况,我们如何避免这种情况?zpool detach
在 FreeBSD 下更换 ZFS 池中的设备时,我们如何防止挂起?
我不确定为什么会发生这种情况,但我们发现此问题与在池上启用 ZFS 自动扩展有关。设置
autoexpand=off
使用:允许我们在不
zpool detach
以相同方式挂起的情况下拆卸和更换更多设备。我仍然有兴趣了解有关此故障模式的更多信息,但我正在回答我自己的问题,希望分享禁用自动扩展可以解决此问题的知识。
看起来这已在 11.0-RELEASE 中修复:https ://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216881
我猜他们认为不值得将其向后移植到 10.3-RELEASE-p22。:(