A-l*_*bby 1 hardware healthcheck benchmark
我目前正在尝试在任何应用程序端使用之前对数据中心的新服务器进行健康检查,作为第一个 QA。
“检查服务器是否可以使用的实用方法和工具是什么?”
关于工具,我正在查看 memtest86 来测试内存和 IOzone 文件系统基准。但我希望应该有更多的其他测试和比这两个更好的工具。
小智 6
我曾经在大型数据中心进行过大量的硬件故障排除,我建议找到一个可启动的 Linux 发行版,任何都可以。如果您有 64 位 CPU,请务必找到带有 64 位图像的图像。 Stresslinux包含一整套工具来对您的服务器施加压力,并将任何硬件故障强制公开。
我个人的“压力”工具 - 它可以锤击硬盘(S),内存和处理器(S)。
这不是压力套件的一部分,但显然您知道它存在。一定要确保您使用的是 memtest86+(强调 +) - 它比原始 memtest86 更好地处理 64 位系统和大量内存分配。
这将产生n 个在 malloc() 上旋转的进程,每个进程 256MB。
stress -m n &
Run Code Online (Sandbox Code Playgroud)
因此,您可能希望将您拥有的内存量除以 256MB(大致),以将其全部占用。这将清除任何明显的错误,您可能会看到 EDAC 或 MCE(取决于您的处理器/主板),或内核崩溃/硬崩溃。理想情况下,您可以让它运行几个小时,以便在负载下加热。您可以检查系统日志以了解这些错误。
这将产生n 个在 sqrt() 上旋转的进程。
stress -c n &
Run Code Online (Sandbox Code Playgroud)
您希望n是系统中的核心数。就让它运行一段时间而言,这里的相同概念也适用。
这需要以某种方式格式化硬盘,如果您使用的是 RAID,如果您在安装驱动器并对其施加压力之前已经进行了设置,您将获得更好的结果。
cd /hard/disk/partition
Run Code Online (Sandbox Code Playgroud)
stress -d 32 n &
Run Code Online (Sandbox Code Playgroud)
iostat -x 5
Run Code Online (Sandbox Code Playgroud)
要终止所有压力进程,是的,您可以同时运行内存、CPU 和硬盘检查,但这会使隔离组件变得更加困难:
pkill -9 -f stress
Run Code Online (Sandbox Code Playgroud)
显然,你运行了所有这些东西,你需要看到某种结果或确认。
您只需要检查系统日志中的机器检查异常 (MCE)、错误检测和纠正 (EDAC)、内存不足 (OOM) 等。
zgrep -i -P ".*(error|warn|fail|panic|edac|mce|exception|oom-killer|oops).*" /var/log/kern.log* /var/log/dmesg /var/log/daemon.log*
Run Code Online (Sandbox Code Playgroud)
这可能是最容易检测到的比任何其他组件都多的组件,smartctl通常安装在大多数 *NIX 操作系统上,它是smartmontools包的一部分。以下命令需要 root 访问权限:
如果您有多个磁盘或 RAID 控制器,则/dev/sda方面可能需要更改。
sudo smartctl -a /dev/sda
Run Code Online (Sandbox Code Playgroud)
下面是完整命令的一些示例输出,我将指定您真正应该在页面下方查找的内容。
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 099 099 016 Pre-fail Always - 65537
2 Throughput_Performance 0x0005 136 136 054 Pre-fail Offline - 95
3 Spin_Up_Time 0x0007 121 121 024 Pre-fail Always - 320 (Average 304)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 18
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 144 144 020 Pre-fail Offline - 28
9 Power_On_Hours 0x0012 098 098 000 Old_age Always - 15407
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 18
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 37
193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 37
194 Temperature_Celsius 0x0002 253 253 000 Old_age Always - 22 (Min/Max 15/31)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
Run Code Online (Sandbox Code Playgroud)
您需要了解的主要属性如下:
这通常应该小于 1000。
这些扇区必须重新分配到硬盘的另一部分,因为前一个扇区不健康。
这应该小于 55,在某些情况下命令本身会有一个最小值/最大值 - 但低于 55 是我们看到健康磁盘操作的地方。
必须为 0。
必须为 0。
应该是0,有几个没问题(小于100)。
另请注意,这些可能表示 SATA/SAS 电缆损坏。
有很多方法可以对您的服务器进行压力和基准测试,这只是我感到满意并取得了很好的结果的一种方式。
我希望这有帮助!