Appearance
28. 硬盘监控
本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 配置硬盘监控,配合 SecureFX 传输监控日志。内容涵盖磁盘健康检查(smartmontools)、性能监控(sysstat)、第三方工具(HDSentinel)以及 Prometheus 集成,以监控磁盘状态和性能为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。
28.1 前提条件
- RHEL 8.10 已安装(参考第 1 章),主机名设置为
ZSLinux. - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
- 使用 SecureFX 传输文件(SFTP 协议).
- 具有 root 或 sudo 权限.
- 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
- 防火墙和 SELinux 启用(参考第 13 章).
- 网络连接正常,时间同步配置完成(参考第 3 章).
- 磁盘设备(如
/dev/sda)支持 SMART(验证:smartctl -i /dev/sda).
28.2 磁盘监控
28.2.1 磁盘健康检查 (smartmontools)
- 安装 smartmontools:bash
dnf install -y smartmontools # 安装 smartmontools 工具 systemctl enable --now smartd # 启用并启动 SMART 守护进程 - 检查磁盘健康:bash
smartctl -i /dev/sda # 验证磁盘是否支持 SMART smartctl -H /dev/sda # 检查磁盘健康状态(PASS/FAIL) smartctl -a /dev/sda # 显示详细 SMART 数据(健康、温度等) - 查看关键属性:bash
smartctl -A /dev/sda | grep Power_On_Hours # 查看磁盘通电时间(小时) smartctl -A /dev/sda | grep Reallocated_Sector_Ct # 查看重新分配扇区数 smartctl -A /dev/sda | grep Temperature_Celsius # 查看磁盘温度 - 配置自动健康检查:bash
vim /etc/smartd.conf # 编辑 smartd 配置文件 # 添加: /dev/sda -a -m admin@example.com systemctl restart smartd # 重启 smartd 服务 dnf install -y mailx # 安装邮件工具以支持告警
28.2.2 性能监控 (sysstat)
- 安装 sysstat:bash
dnf install -y sysstat # 安装 sysstat 性能监控工具 systemctl enable --now sysstat # 启用并启动 sysstat 服务 - 检查磁盘 I/O:bash
iostat -dx 5 # 每 5 秒显示磁盘 I/O 统计(%util 反映繁忙度) - 配置自动性能记录:bash
vim /etc/sysconfig/sysstat # 编辑 sysstat 配置 # 修改: HISTORY=30 # 保留 30 天性能数据 systemctl restart sysstat # 重启 sysstat 服务
28.2.3 第三方工具 (HDSentinel)
- 安装 HDSentinel(需从官方下载,假设已上传至
/tmp):bashtar -xzf /tmp/hdsentinel-019c-x64.tar.gz -C /opt # 解压 HDSentinel chmod +x /opt/hdsentinel/hdsentinel-019c-x64 # 添加执行权限 - 检查磁盘健康:bash
/opt/hdsentinel/hdsentinel-019c-x64 /dev/sda # 检查磁盘状态 - 配置 SELinux 上下文:bash
chcon -t bin_t /opt/hdsentinel/hdsentinel-019c-x64 # 设置 SELinux 上下文
28.3 集成监控
28.3.1 Prometheus 监控
- 安装 node_exporter:bash
dnf install -y prometheus-node-exporter # 安装 Prometheus node_exporter systemctl enable --now node-exporter # 启用并启动 node-exporter 服务 - 配置防火墙:bash
firewall-cmd --permanent --add-port=9100/tcp # 允许 node-exporter 端口 firewall-cmd --reload # 应用防火墙规则 - 配置 Prometheus 告警规则(假设 Prometheus 已安装):bash
vim /etc/prometheus/alert.rules.yml # 创建告警规则 # 添加: groups: - name: disk_alerts rules: - alert: HighDiskUtilization expr: 100 - (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) > 80 for: 5m labels: severity: warning annotations: summary: "High disk utilization on {{ $labels.instance }}"
28.4 验证与故障排查
- 验证 smartmontools:bash
smartctl -t short /dev/sda # 运行短测试验证 SMART journalctl -u smartd # 检查 smartd 日志 - 验证 sysstat:bash
sar -d 1 1 # 查看实时磁盘性能数据 - 验证 HDSentinel:bash
/opt/hdsentinel/hdsentinel-019c-x64 /dev/sda | grep Health # 检查健康状态 - 验证 Prometheus:bash
curl http://localhost:9100/metrics # 检查 node-exporter 指标 - 测试 SSH 连接:bash
ssh -p 2222 testuser@ZSLinux # 测试 SSH 连接(参考第 6 章) - 故障排查:
- SMART 失败:验证 SMART 支持(
smartctl -i /dev/sda)或检查 SELinux(ls -Z /dev/sda)。 - 高 I/O:使用
iotop(dnf install -y iotop) 或sar -d定位高负载进程。 - HDSentinel 失败:检查权限(
ls -l /opt/hdsentinel) 或 SELinux(journalctl -t setroubleshoot)。 - Prometheus 无数据:确认 node-exporter 服务(
systemctl status node-exporter)或防火墙(firewall-cmd --list-ports)。 - 生成 SOS 报告:
sosreport --only-plugins=block,scsi用于诊断。
- SMART 失败:验证 SMART 支持(
28.5 实践任务
- 使用 SecureCRT 登录
ZSLinux,安装smartmontools并检查/dev/sda健康状态。 - 配置
sysstat记录 30 天磁盘性能数据。 - 安装 HDSentinel 并验证磁盘状态。
- 配置 Prometheus node-exporter 并检查指标。
28.6 自测问题
- 问题:如何查看磁盘通电时间?
- 答案:
smartctl -A /dev/sda | grep Power_On_Hours
- 答案:
- 问题:如何检查磁盘 I/O 性能?
- 答案:
iostat -dx 5
- 答案:
- 问题:如何配置 Prometheus 磁盘告警?
- 答案:编辑
/etc/prometheus/alert.rules.yml,添加HighDiskUtilization规则。
- 答案:编辑
