我目前正在尝试对数据中心中的新服务器进行健康检查,作为在任何应用程序端使用之前的第一次 QA。
“有什么实用的方法和工具可以检查服务器是否可以正常使用?”
关于工具,我正在研究 memtest86 来测试内存和 IOzone 文件系统基准。但我希望有更多其他测试可以做,并且有比这两个更好的工具。
答案1
我曾经在大型数据中心做过大量的硬件故障排除,我建议找一个可启动的 Linux 发行版,任何发行版都可以。如果你有 64 位 CPU,一定要找到一个带有 64 位映像的发行版。 压力Linux包含一整套工具来对您的服务器施加压力,并强制公开任何硬件故障。
我个人很喜欢“压力”工具 - 它可以打击硬盘、内存和处理器。
压力
关于 memtest86+ 的简要说明
这不是压力套件的一部分,但显然您知道它存在。一定要确保您使用的是 memtest86+(强调 +) - 它处理 64 位系统和大量内存分配的能力远优于原始的 memtest86。
记忆测试
这将产生n每个进程在 malloc() 上以 256MB 的速度旋转。
stress -m n &
因此,您需要将内存量除以 256MB(大致),以达到全部内存量。这将清除任何明显的错误,您可能会看到 EDAC 或 MCE(取决于您的处理器/主板),或内核崩溃/硬崩溃。理想情况下,您可以让它运行几个小时,让其在负载下升温。您可以检查系统日志以查找这些错误。
CPU测试
这将产生n在 sqrt() 上旋转的过程。
stress -c n &
你会想要n是系统中的核心数。只要让它运行一段时间,同样的概念也适用。
磁盘子系统测试
这需要以某种方式对硬盘进行格式化,如果您使用 RAID,并且已经在安装驱动器和对其施加压力之前进行了设置,那么您将获得更好的结果。
将目录更改为您要强调的磁盘分区/区域。可用空间越多越好。
cd /hard/disk/partition
这将产生n每个进程以 1GB 的速度在 write() 上旋转
stress -d 32 n &
使用以下方式监控磁盘 IO:
iostat -x 5
消除压力
为了终止所有压力进程,您可以同时运行内存、CPU 和硬盘检查,但这会使隔离组件变得更加困难:
pkill -9 -f stress
验证你的测试
显然,您运行了所有这些程序,并且需要看到某种结果或确认。
内存/CPU
您只需要检查系统日志中是否存在机器检查异常(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*
磁盘子系统
这可能是比其他任何组件都更容易检测的,智能控制通常安装在大多数 *NIX 操作系统上,它是智能工具包。以下命令需要 root 访问权限:
这/dev/sda如果您有多个磁盘或 RAID 控制器,则可能需要更改此方面。
sudo smartctl -a /dev/sda
下面是完整命令的一些示例输出,我将在页面下方指定您真正应该寻找的内容。
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
您需要了解的主要属性如下:
重新分配的扇区
一般来说,这个应该小于1000。
由于前一个扇区不健康,这些扇区必须重新分配到硬盘的另一部分。
温度_摄氏度
这个应该小于 55,在某些情况下命令本身会有最小值/最大值 - 但在 55 以下时我们看到了健康的磁盘操作。
当前待处理部门
必须为 0。
脱机_无法纠正
必须为 0。
UDMA_CRC_错误计数
应该是0,几个也可以(少于100)。
另请注意,这些可能表示 SATA/SAS 电缆有问题。
有很多方法可以对您的服务器进行压力测试和基准测试,这只是我所熟悉的并且取得了很好的效果的方法。
我希望这有帮助!