一个实用的方法来做一个新的服务器健康检查?

我目前正在尝试对数据中心中的新服务器进行健康检查,作为第一个QA,然后由任何应用程序端使用。

“检查服务器可以正常使用的实用方法和工具是什么?

关于这个工具,我正在看memtest86来testing内存和IOzone Filesystem Benchmark。 但我希望应该有更多的其他testing我应该做,比这两个更好的工具。

我曾经在大型数据中心做过大量的硬件故障排除,我build议找一个可引导的Linux发行版,任何一个都行。 如果你有一个64位的CPU,一定要find一个64位的镜像。 Stresslinux包含一整套工具来强调您的服务器,并强制任何硬件故障进入公开状态。

我个人对“压力”工具 – 它可以锤击硬盘,内存和处理器。

强调

关于memtest86 +的简要说明

这不是压力套件的一部分,但显然你知道它存在。 绝对确保你使用memtest86 +(强调+) – 它处理64位系统和大量的内存分配比原始的memtest86更好。

内存testing

这将产生n个进程在每个256MB的malloc()上旋转。

stress -mn & 

所以你想要把你拥有的内存数量除以256MB(大致),就可以完成所有的工作。 这将清除任何明显的错误,您可能会看到EDAC或MCE(取决于您的处理器/主板),或内核恐慌/硬件崩溃。 理想情况下,你可以让它运行几个小时,让负荷加热。 您可以检查系统日志的这些错误。

CPUtesting

这将产生在sqrt()上旋转的n个进程。

 stress -cn & 

你会希望n是你系统中的核心数量。 这里同样的概念适用于让它运行一段时间。

磁盘子系统testing

这需要硬盘格式化,如果你使用的是RAID,如果你在安装硬盘之前就已经设置好了,那么结果会更好。

将目录更改为您想要强调的磁盘的分区/区域。 越自由的空间越好。

 cd /hard/disk/partition 

这将产生在每个1GB的write()上旋转的n个进程

 stress -d 32 n & 

用以下方式监视磁盘IO

 iostat -x 5 

杀死压力

为了杀死所有的压力过程,是的,你可以同时运行内存,CPU和硬盘检查,但是它使组件隔离更加困难:

 pkill -9 -f stress 

validation你的testing

显然你运行所有这些东西,你需要看到某种结果或确认。

内存/ CPU

您只需要检查系统日志,如机器检查exception(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* 

磁盘子系统

这可能是最容易检测到的其他组件之一, smartctl通常安装在大多数* NIX操作系统上,它是smartmontools软件包的一部分。 以下命令需要root访问权限:

如果您有多个磁盘或RAID控制器,则可能需要更改/ dev / sda方面。

 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 

你想要知道的主要属性如下:

Reallocated_Sector_Ct

一般应该less于1000。

这些部门必须重新分配到硬盘的另一部分,因为以前的部门不健康。

Temperature_Celsius

这应该是小于55,在某些情况下,命令本身会有一个最小/最大值 – 但小于55是我们看到磁盘运行正常的地方。

Current_Pending_Sector

必须为0。

Offline_Uncorrectable

必须为0。

UDMA_CRC_Error_Count

应该是0,一些没关系(less于100)。

另外请注意,这些可能表示SATA / SAS电缆不良。

有很多方法来压缩和testing你的服务器,这只是我所熟悉的一种方式,并且已经有了很好的结果。

我希望这有帮助!