我束手无策。什么可能导致我的服务器随机硬重置?(似乎与 ZFS 有关)

我束手无策。什么可能导致我的服务器随机硬重置?(似乎与 ZFS 有关)

我有一台几年前搭建的服务器,运行良好。但在过去的几个月里,它开始变得非常不稳定,没有明显的规律。我一直在调试它,更换零件,但毫无效果。我已经更换了系统中几乎所有我能想到的可能导致问题的东西,除了用于存储的驱动器。

请注意,系统正在运行CentOS 7.5。

症状是机器会自发执行硬重置,就像电源正在循环或突然断电一样。这种情况可能每隔几天发生一次,有时一天发生两次。系统可能处于空闲状态或负载状态。没有规律。

我删除了所有内容,只留下了最基本的部分。请注意,我已替换:

主板、CPU、RAM 和 PSU。

如果任何内存条有缺陷,我期望看到已更正/无法更正的 ECC 错误日志,但我没有看到。如果是 CPU 的问题,我期望看到一些更随机的日志,其中有一些可能是内核崩溃导致的日志。我怀疑可能是电源故障,于是更换了电源。问题仍然存在,所以我尝试更换主板。没有变化。

该系统配置了两个处理器和 16 条相同的内存,因此我尝试移除一个 CPU 和一半的内存,看看它是否崩溃,然后换入另一组。症状没有变化。

我开始移除多余的组件并且已经达到了最低限度而症状没有任何变化。

  • 日志中从来没有任何内容表明硬件故障;它们只是在重置点结束。
  • IPMI 日志中没有任何内容。
  • UPS 日志中没有任何内容(移除 UPS 也无济于事)。
  • 处理器没有过热。我记录了 lmsensors,没有发现任何异常。
  • 使用 ipmitool 日志监控系统温度、CPU 和内存 Vcor​​e、风扇 RPM 和 PSU 电压。
  • 所有 SMART 测试均报告通过。
  • 我通过使用 mdadm 镜像并安装 grub,将用于操作系统的主磁盘 (/ root、boot、swap) 交换到另一个 SSD。
  • 两个 RAID 阵列(见下面的规格)都是 ZFS,没有报告任何故障。扫描位衰减或损坏时没有问题。

我现在完全不知所措了。除了系统中剩余的几个驱动器外,除了机箱本身,我已经没有其他东西可以尝试更换了。

是什么原因导致我的服务器自动重置?我还能测试什么?故障真的出自某个驱动器吗?

目前系统规格如下:

基本组件:

贮存:

Western Digital RED 驱动器连接到机箱背板,并连接到板载 SAS 控制器。如果 SSD 处于ToughArmor MB998SP-B背板安装在机箱前部的 5.25 英寸托架中,并连接到主板 SATA 控制器。

冷却:

  • NH-U12DO A3(中央处理器)
  • 芯片组散热器上加了风扇(它们会变得非常热)
  • 英特尔千兆芯片增加了小型散热器
  • 所有散热器上的导热膏都已替换为Noctua NT-H1除了 CPU 周围的小散热器有导热垫

案件:

电源供应:

UPS

更新:

我已经能够将稳定性问题追溯到一个不太可能的来源:软件。这似乎不太可能,之前在鉴别诊断过程中也没有考虑到这一点,因为软件问题(即使是内核模块)在最坏的情况下也会导致内核崩溃。

已将源头确定为 ZFS 阵列(Linux 上的 ZFS)。我可以通过移除除操作系统和 ZFS 阵列之外的所有磁盘,然后在系统上的任何 ZFS 阵列(相同或其他)上同时进行读取时对该阵列执行清理,来复制崩溃。

基本测试设置:

  • 1 个 CPU
  • 16GB x 8 内存
  • 适用于 CentOS 7.5 的 128GB SSD(启动/交换/根目录)
  • SuperMicro H8DG6-F 主板
  • PWS-865-PQ 865W 电源
  • 板载 Matrox G200 视频

所有磁盘均连接至主板。未占用任何 PCIe 插槽。

消除其他来源:

  • CPU(与第二个 CPU 交换)
  • 内存(与第二组内存交换)
  • 主板(已与另一块相同的主板交换;BIOS 已更新)
  • 操作系统硬盘(在 Crucial 和 Samsung 128GB SSD 之间交换)
  • PSU 已通过认证,可用于此主板(针对其中两个进行了测试)

ZFS 活动:

  • 在单个阵列上擦洗
  • 在同一个数组或另一个数组上访问读/写(独占)

测试 1: !! 碰撞 !!

  • 基本设置(如上所述)
  • 2x 三星 SSD 850 PRO 512GB ZFS RAID-1(/数据)
  • 8x Western Digital RED 4TB WD40EFRX-68WT0N0 ZFS RAID-Z3(/备份)

/backup 上的 ZFS 清理。/data 上运行着多个 Minecraft 服务器。

此后不久,服务器突然重启。

这与系统的正常配置类似,但精简为一组最少的组件以便进行测试和分析。

测试2: !! 稳定的 !!

  • 基本设置(如上所述)
  • 8x Western Digital RED 4TB WD40EFRX-68WT0N0 ZFS RAID-Z3(/备份)

/backup 上的 ZFS 清理。没有活动的 Minecraft 服务器,也无法访问任何 ZFS 磁盘。

服务器已稳定超过 24 小时并且清理完成。

此时我怀疑/data 数组有故障。

测试 3: !! 碰撞 !!

  • 基本设置(如上所述)
  • 8x Western Digital RED 4TB WD40EFRX-68WT0N0 ZFS RAID-Z3(/备份)

/backup 上的 ZFS 清理。多个 Minecraft 服务器在 /backup 上运行。

此后不久,服务器突然重启。

此时我怀疑 /backup 阵列可能是真正的故障,因为 /data 阵列不再存在,并且系统崩溃的方式与往常一样。

测试 4: !! 碰撞 !!

  • 基本设置(如上所述)
  • 2x 三星 SSD 850 PRO 512GB ZFS RAID-1(/数据)

/data 上的 ZFS 清理。/data 上运行着多个 Minecraft 服务器。

此后不久,服务器突然重启。

稳定性好像和 ZFS 有关?

测试 5: !! 稳定的 !!

  • 基本设置(如上所述)
  • 1x 三星 SSD 850 PRO 512GB XFS(/数据测试)

/data-testing 上有几个 Minecraft 服务器运行。

服务器已经稳定了数周。

我现在确信稳定性的来源与 ZFS 阵列有关。这非常奇怪,因为我在这个系统上运行 ZFS 已经好几年了,直到现在都没有问题。一个故障会导致整个系统重新启动而没有内核崩溃或日志,这也非常奇怪。

我欢迎任何人提供任何额外的见解。

答案1

由于我也曾陷入过类似的困境,所以我想发布一些最终帮助我的东西。它可能与您的情况并不完全相关,但也许其他可怜的人可以偶然发现并找到安慰。

我有一台 ZFS 备份服务器,它在我公司的服务器群中运行 rsnapshot(带轮换的 rsync)。每 2-3 周,服务器就会自行重置。

正如 @tjikkun 指出的那样,您应该尝试获取一些恐慌信息。就我而言,这是一个“恐慌字符串:双重错误”错误,我会在转储中找到它,以及与递归 ZFS 例程中的堆栈溢出相关的内容。

有一些与此相关的信息,但似乎只适用于 32 位处理器。然而,我在 64 位上运行,因此我找不到任何相关信息。

32 位错误仍然暗示kern.kstack_pages在某些情况下需要增加内核设置。就我而言,这就是诀窍。我将其添加kern.kstack_pages=16/boot/loader.conf,重新启动服务器,此后(6 个月内)再也没有发生过崩溃。这个设置有帮助是有道理的,因为我遇到的崩溃是由于 ZFS 遇到堆栈限制而发生的。

再次强调,这不一定与您的具体情况相关,但我很难找到这些信息,我希望其他人会发现它有用。

答案2

您可以采取以下步骤来缩小范围:

崩溃时重启

如果已打开崩溃时自动重启,您可能需要将其关闭以进行测试。如果运行,sysctl kernel.panic您应该会获得当前值。如果是0,则表示已关闭,任何其他值都是在重新启动前等待的秒数。sysctl -w kernel.panic=0如果尚未关闭,则将其关闭。如果将其设置为0并且您的服务器仍然自行重启,我真的会认为这是一个硬件问题。如果这停止了自动重启,那么我们就知道重启是由看门狗定时器引起的。

读取内核恐慌

当这停止重启并且你很幸运时,屏幕会显示一些恐慌信息。如果是这种情况并且你想要崩溃的完整信息,你需要设置串行日志记录或网络控制台。

屏幕上没有任何内容

如果你不那么幸运,你可能需要配置 kdump看看这是否可以给你提供任何信息。

其他可以尝试的事情

您可能希望返回到非常早期的 0.7.x 版 ZFS,看看是否可以重现该问题。另一个选择是尝试 0.8.0-rc2,但如果您非常重视数据,请谨慎使用预发布版本。我不希望数据丢失,但您最好谨慎行事。

相关内容