机房服务器硬件检测工具,内存硬盘健康检测
机房服务器长期运行,内存和硬盘是最容易出问题的部件。
本文面向零基础运维,介绍如何使用 memtester 检测内存、smartctl 检测硬盘健康,并给出具体命令和结果判断。
读完你能独立完成一次硬件巡检,提前发现隐患。
工具准备与安装
大多数 Linux 发行版默认没有 memtester 和 smartmontools,需要手动安装。
- Debian/Ubuntu:
sudo apt update && sudo apt install memtester smartmontools -y - CentOS/RHEL:
sudo yum install memtester smartmontools -y
安装完成后,用 memtester --version 和 smartctl --version 验证是否成功。
内存健康检测:memtester 实战
memtester 通过分配指定大小的内存并反复写入、读取、比对来发现硬件错误。
建议在业务低峰期执行,避免影响性能。
步骤:
- 查看内存总量:
free -h,假设显示 32G。 - 分配略小于总量的内存进行测试,例如 30G,避免触发 OOM。
- 执行命令:
sudo memtester 30G 1。其中1表示循环次数,测试一次即可。 - 观察输出,如果最后显示
Done且没有FAILURE,说明内存基本正常。
注意: 测试大内存耗时较长,30G 可能需要几十分钟,建议使用 screen 或 nohup 防止 SSH 断开。
如果出现 FAILURE: 0x... 则说明内存有坏块,需要更换内存条。
硬盘健康检测:smartctl 关键指标
smartctl 能读取硬盘的 S.M.A.R.T. 信息,提前预警故障。
基本用法:
- 查看硬盘列表:
lsblk或fdisk -l,找到设备名如/dev/sda。 - 开启 SMART:
sudo smartctl -s on /dev/sda。 - 查看健康摘要:
sudo smartctl -H /dev/sda,正常会显示PASSED。 - 查看详细属性:
sudo smartctl -A /dev/sda。
重点关注的属性:
Reallocated_Sector_Ct:重映射扇区数,大于 0 需警惕。Current_Pending_Sector:待映射扇区数,大于 0 表示有不稳定扇区。Offline_Uncorrectable:离线不可纠正错误,大于 0 说明有坏道。Raw_Read_Error_Rate:读取错误率,持续增长可能故障。
如果以上数值非零且持续增加,建议尽快备份数据并更换硬盘。
常见报错与避坑指南
1. memtester 报 “Cannot allocate memory”
原因:分配内存超过可用量。解决:减小测试大小,或先停止占用内存的服务。
2. smartctl 报 “Smartctl open device: /dev/sda failed: Permission denied”
原因:未使用 root 权限。解决:命令前加 sudo。
3. smartctl 无法识别 USB 硬盘
原因:USB 桥接芯片可能不支持透传。解决:尝试加 -d sat 参数,如 sudo smartctl -d sat -H /dev/sdb。
4. 测试期间服务器负载过高
memtester 会占满 CPU 和内存,务必在业务空闲时进行,并设置好监控告警。
验证与定期巡检建议
执行完检测后,建议记录结果并与上次对比。
- 内存:memtester 通过则正常,若失败需更换内存。
- 硬盘:smartctl 的
PASSED且关键属性无增长,可继续使用;否则安排更换。
定期巡检命令示例:
sudo smartctl -H /dev/sda | grep "SMART overall-health"
sudo smartctl -A /dev/sda | egrep "Reallocated_Sector_Ct|Current_Pending_Sector|Offline_Uncorrectable"
建议每月执行一次,并保存输出。
对于关键业务服务器,可结合监控系统(如 Zabbix)自动采集 SMART 指标。
常见疑问
内存检测需要停机吗?
不需要,但会占用大量内存和 CPU,建议在业务低峰期进行,并确保有足够剩余内存。
硬盘检测会影响读写吗?
smartctl 只读取信息,不影响正常读写。但不要在执行 smartctl -t long 自检时进行高负载操作,以免延长自检时间。
SSD 和机械硬盘的检测有区别吗?
基本命令相同,但 SSD 需额外关注 Wear_Leveling_Count、Media_Wearout_Indicator 等寿命指标。
检测到坏道怎么办?
立即备份重要数据,然后使用 badblocks 进一步确认,并计划更换硬盘。不要继续写入,以免扩散。
按照以上步骤,你可以用 memtester 和 smartctl 完成机房服务器硬件检测,及时发现内存和硬盘的健康问题。
建议将检测命令写成脚本,定期执行并记录结果。