![raidz2 的 Zpool 永久错误](https://linux22.com/image/774916/raidz2%20%E7%9A%84%20Zpool%20%E6%B0%B8%E4%B9%85%E9%94%99%E8%AF%AF.png)
问题:Zpool 显示“错误:在以下文件中检测到永久错误:tank/vms/fileserver:<0x0>
服务器在 raidz2 中有六个 12Tb 驱动器。这些是旋转驱动器。Zpool 显示所有驱动器都处于联机状态。没有读取、写入或校验和错误。操作系统:Ubuntu 20.04.3 和 zfsutils-linux 0.8.3-1ubuntu12.13
我以前从未见过永久性错误,我不知道该如何修复它。我的理解是,使用 raidz2,机器最多可以有两个驱动器发生故障而不会停机。如果第三个驱动器发生故障,那么 zpool 就消失了。那是对的吗?在这种情况下,没有驱动器显示故障,并且唯一显示的错误是永久性错误。 在没有故障驱动器的情况下,zfs 是否应该能够从 raidz2 上的其他良好副本中恢复或重建文件?从而消除永久性错误。或者我们需要去 raidz3?
在这种情况下,这是我们的备份服务器。如果当此永久性错误发生时文件服务器虚拟机已经在此机器上运行,那么虚拟机是否会被破坏?
据我所知,我的错误消息与对象数据损坏有关。我之所以注意到此消息,是因为从我们的主服务器到此备份服务器的 zfs 复制在尝试同步文件服务器时挂起了。为了解决这个问题,我读到我需要删除有问题的文件。zfs 会将这些块标记为坏块并从磁盘上另一个区域的良好副本重建文件吗?
以下是我迄今为止读过的几个地方:
问候,pender
答案1
我的理解是,使用 raidz2,机器最多可以有两个驱动器发生故障而不会停机。如果第三个驱动器发生故障,那么 zpool 就消失了。对吗?
不会。阵列最多可以有两个驱动器而不会发生故障。这与机器启动或关闭无关。
在这种情况下,没有驱动器显示故障,并且唯一显示的错误是永久性错误。
它显示文件中的永久错误。据我所知,在已删除的文件中(但原始问题仍然缺少zpool status
输出,我们只有您可能错误的解释)。Zfs 自我修复功能并不神奇,fs 能够从错误中恢复到某个阈值,但随后往往会发生糟糕的事情。就像您的永久错误一样。最常见的情况是当您在多个驱动器上遇到多个校验和错误时,这些错误与某个文件相交。没有zpool status
它很难猜测。
在没有故障驱动器的情况下,zfs 是否应该能够从 raidz2 上的其他良好副本中恢复或重建文件?
可以,但对于已删除的文件则不行。
从而消除永久性错误。
所以您希望 zfs 默默地吞下错误。但 IT 行业并不是这样运作的。zfs 内核部分正在抱怨发生的错误,这是好事。
如果当此永久性错误发生时文件服务器虚拟机已经在此机器上运行,那么虚拟机是否会被破坏?
视情况而定。如果这个损坏的文件是 VM 用作磁盘的 zfs 卷 - 则肯定是。
zfs 会将这些块标记为坏块并从磁盘上另一个区域的良好副本重建文件吗?
可能已经出现了。只需清理池,错误会在一段时间后消失(但不是立即消失)。
不要在 Linux 的生产环境中使用 zfs。是的,这部分会遭到数十次反对,但这是残酷的事实。没有人关心 Linux 的生产环境中的 zfs。Linux 的无畏领导者公开否认对它的需要并对其深恶痛绝,因为它源自他最讨厌的 Sun Microsystems 并在 CDDL 许可下发布。使用 FreeBSD 或 Solaris(是的,Joyent SmartOS 也是一个可能的选择,尽管它有点奇特),至少这两个在 zfs 方面更可靠。Solaris 仍然具有 zfs 的规范实现(Linux 和 FreeBSD 都不能将其用作交换(他们曾经表示可以,但经过一番挣扎,这恰好是不真实的),也不能将崩溃转储到它上面,而在 Solaris 上,这两个东西是原生的)。是的,Linux 拥有如此广泛的用户群,以至于 FreeBSD 与之相比似乎存在统计误差,但事实是,当谈到使用 zfs 的人时,FreeBSD zfs 用户群比 Linux 的用户群大得多。