1. 物理硬盘状态检查

1.1 使用 lsblk 命令查看块设备

lsblk (list block devices) 是 Linux 下最基础的磁盘信息查看工具,可显示所有可用块设备的层次结构。

# 基础用法
lsblk

# 显示详细信息(包括文件系统类型、UUID等)
lsblk -f

# 显示 SCSI/SATA 设备信息
lsblk -S

# 显示设备所属的组和模式
lsblk -m

# 示例输出:
# NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
# sda           8:0    0 447.1G  0 disk 
# ├─sda1        8:1    0   512M  0 part /boot/efi
# └─sda2        8:2    0 446.6G  0 part /
# nvme0n1     259:0    0 465.8G  0 disk 
# ├─nvme0n1p1 259:1    0   512M  0 part 
# └─nvme0n1p2 259:2    0 465.3G  0 part

专业提示:

  • 使用 lsblk -o +MODEL,SERIAL 可以显示硬盘型号和序列号,便于硬件识别

  • RO 列显示为 1 表示只读设备,可能表示硬盘有问题

  • RM 列显示为 1 表示可移动设备

1.2 使用 smartmontools 进行健康诊断

SMART 技术是现代硬盘的标准自我监测功能,能提前预警潜在故障。

# 安装 smartmontools
sudo apt-get install smartmontools  # Debian/Ubuntu
sudo yum install smartmontools      # RHEL/CentOS

# 检查硬盘是否支持 SMART
sudo smartctl -i /dev/sda

# 查看硬盘健康状态
sudo smartctl -H /dev/sda

# 获取详细的 SMART 信息
sudo smartctl -a /dev/sda

# 开启 SMART 测试(短测试)
sudo smartctl -t short /dev/sda

# 开启 SMART 测试(长测试,可能需要数小时)
sudo smartctl -t long /dev/sda

# 查看测试结果
sudo smartctl -l selftest /dev/sda

关键指标解读:

  • Reallocated_Sector_Ct:重映射扇区计数,数值增加表明硬盘出现坏道

  • Current_Pending_Sector:当前待处理扇区数,非零值表明有扇区可能损坏

  • Temperature_Celsius:硬盘温度,超过50°C需关注散热

  • Power_On_Hours:硬盘通电时间,可估算硬盘寿命

  • UDMA_CRC_Error_Count:数据线传输错误,可能需更换数据线

经验分享:

  • 定期执行 SMART 测试可提前发现硬盘问题

  • 重映射扇区数快速增长是硬盘即将失效的明确信号

  • 企业级环境应设置监控告警,当关键SMART属性异常时及时通知

2. 服务器喇叭报警管理

2.1 使用 IPMI 工具控制喇叭

IPMI(智能平台管理接口)是服务器硬件管理的标准协议。

# 安装 ipmitool
sudo apt-get install ipmitool  # Debian/Ubuntu
sudo yum install ipmitool      # RHEL/CentOS

# 检查 IPMI 功能状态
sudo ipmitool mc info

# 关闭喇叭报警
sudo ipmitool chassis identify off
sudo ipmitool chassis beep off

# 开启喇叭报警
sudo ipmitool chassis identify on
sudo ipmitool chassis beep on

# 设置喇叭报警时长(30秒)
sudo ipmitool chassis beep 30

# 查看当前喇叭状态
sudo ipmitool chassis status

2.2 BIOS/UEFI 中永久设置

不同厂商服务器进入BIOS/UEFI的方法:

  • Dell:开机按F2

  • HP:开机按F9

  • IBM/Lenovo:开机按F1

  • Supermicro:开机按Del

在BIOS中通常可在以下位置找到报警设置:

  • Advanced → Hardware Monitoring → Alert Settings

  • Server Management → System Health → Beeper Control

  • Security → Alarm Settings

专业建议:

  • 生产环境中建议关闭喇叭报警避免干扰,但务必配置其他监控告警方式

  • 测试环境中可开启喇叭报警,便于快速定位硬件问题

  • 某些特定错误(如内存ECC错误)的喇叭报警模式不同,需查阅服务器手册

3. RAID 阵列管理

3.1 使用 mdadm 创建软 RAID

软件RAID依赖操作系统实现,配置灵活但性能略低于硬件RAID。

# 检查已安装的RAID组件
cat /proc/mdstat

# 创建RAID 1(镜像)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 创建RAID 5(需至少3块硬盘)
sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdd /dev/sde /dev/sdf --spare-devices=1 /dev/sdg

# 保存RAID配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

# 初始化文件系统
sudo mkfs.ext4 /dev/md0

# 配置自动挂载
echo "/dev/md0 /mnt/raid1 ext4 defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a

3.2 RAID 维护与故障处理

# 查看RAID详细信息
sudo mdadm --detail /dev/md0

# 监控RAID同步进度
watch cat /proc/mdstat

# 模拟磁盘故障
sudo mdadm --manage /dev/md0 --fail /dev/sdb

# 移除故障磁盘
sudo mdadm --manage /dev/md0 --remove /dev/sdb

# 添加新磁盘到RAID
sudo mdadm --manage /dev/md0 --add /dev/sdh

# 停止RAID阵列
sudo mdadm --stop /dev/md0

# 完全清除RAID信息
sudo mdadm --zero-superblock /dev/sdb /dev/sdc

RAID级别选择建议:

  • RAID 0:高性能但无冗余,适合临时数据

  • RAID 1:简单镜像,适合小容量重要数据

  • RAID 5:平衡性能与容量,适合读密集型应用

  • RAID 6:双冗余,适合大容量阵列

  • RAID 10:性能与冗余兼备,适合数据库等关键应用

4. 阵列卡与BBU温度监控

4.1 使用 MegaCli 工具

MegaCli 是LSI/Avago/Broadcom阵列卡的标准管理工具。

# 查看适配器信息
sudo MegaCli -AdpAllInfo -aAll

# 检查阵列卡温度
sudo MegaCli -AdpTempInfo -aAll

# 查看物理磁盘信息
sudo MegaCli -PDList -aAll

# 查看逻辑磁盘信息
sudo MegaCli -LDInfo -LALL -aAll

# 检查BBU状态
sudo MegaCli -AdpBbuCmd -GetBbuStatus -aAll

# 查看BBU温度详细信息
sudo MegaCli -AdpBbuCmd -GetBbuStatus -aAll | grep -i temperature

# 检查BBU容量信息
sudo MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aAll

4.2 使用 storcli 工具

storcli 是新一代阵列卡管理工具,语法更简洁。

# 查看控制器概要信息
sudo storcli show

# 查看指定控制器温度
sudo storcli /c0 show temperature

# 查看所有物理驱动器
sudo storcli /c0/eall/sall show

# 查看BBU信息
sudo storcli /c0/bbu show all

# 查看BBU温度历史记录
sudo storcli /c0/bbu show termlog

温度管理经验:

  • 阵列卡正常工作温度应在40-70°C之间

  • BBU最佳工作温度为25-40°C,高温会显著缩短电池寿命

  • 温度持续超过80°C需立即检查服务器散热系统

  • BBU在高温环境下可能进入保护模式停止充电

5. 磁盘分区与动态扩容

5.1 使用 parted 进行分区管理

parted 支持GPT和MBR分区表,适合大容量磁盘。

# 启动parted交互模式
sudo parted /dev/sda

# 在交互模式下查看分区表
print

# 创建新的GPT分区表
mklabel gpt

# 创建主分区(从1GB到500GB)
mkpart primary 1GB 500GB

# 调整分区大小(扩展分区到600GB)
resizepart 2 600GB

# 设置分区标志(例如设置启动标志)
set 1 boot on

# 退出parted
quit

5.2 在线扩容实战示例

# 查看当前磁盘空间
df -h

# 检查可用空间(假设虚拟机或SAN已扩展磁盘)
lsblk

# 使用growpart扩展分区(适用于云环境)
sudo growpart /dev/sda 2

# 使用parted扩展分区
sudo parted /dev/sda resizepart 2 100%

# 调整文件系统大小(ext4)
sudo resize2fs /dev/sda2

# 调整文件系统大小(xfs)
sudo xfs_growfs /mount-point

# 验证扩展结果
df -h

扩容注意事项:

  • 扩容前务必进行完整备份

  • 确认文件系统支持在线扩容(ext4、xfs通常支持)

  • 云平台磁盘扩容后需先通知操作系统磁盘大小已变更

  • LVM环境下扩容更灵活,建议生产环境使用LVM管理磁盘

6. 阵列检查与修复

6.1 软RAID监控与维护

# 监控RAID状态(实时监控)
watch -n 1 cat /proc/mdstat

# 检查RAID详细信息
sudo mdadm --detail /dev/md0

# 扫描系统中的RAID设备
sudo mdadm --assemble --scan

# 检查RAID一致性
sudo mdadm --action=check /dev/md0

# 修复检测到的错误
sudo mdadm --action=repair /dev/md0

# 邮件报警配置(在mdadm.conf中设置)
MAILADDR admin@example.com

6.2 硬件RAID诊断与修复

# 使用MegaCli检查阵列状态
sudo MegaCli -LDInfo -LALL -aALL

# 检查物理磁盘状态
sudo MegaCli -PDList -aALL | egrep "Firmware state|Slot Number"

# 定位故障磁盘
sudo MegaCli -PDList -aALL | grep -i "firmware state" | grep -v "Online"

# 替换故障磁盘
sudo MegaCli -PDOffline -PhysDrv[32:2] -a0  # 将32:2端口磁盘离线
sudo MegaCli -PDMarkMissing -PhysDrv[32:2] -a0  # 标记为缺失
sudo MegaCli -PdPrpRmv -PhysDrv[32:2] -a0  # 移除物理磁盘
# 物理更换磁盘后...
sudo MegaCli -PdReplaceMissing -Array0 -Row0 -PhysDrv[32:2] -a0  # 替换磁盘
sudo MegaCli -PDRebuild -Start -PhysDrv[32:2] -a0  # 开始重建

# 监控重建进度
sudo MegaCli -PDRebuild -ShowProg -PhysDrv[32:2] -a0

RAID维护最佳实践:

  1. 定期检查RAID状态,建议每周至少一次

  2. 配置监控告警,实时通知RAID状态变化

  3. 保持备用硬盘热备,缩短重建时间窗口

  4. RAID重建期间避免高I/O操作,降低双重故障风险

  5. 定期检查BBU健康状态,确保断电数据安全

7. 高级诊断技巧

7.1 性能监控与优化

# 实时磁盘I/O监控
sudo iotop
sudo iostat -x 1

# 检查磁盘调度算法
cat /sys/block/sda/queue/scheduler

# 更改调度算法(deadline适用于数据库负载)
echo deadline | sudo tee /sys/block/sda/queue/scheduler

# 检查磁盘读写错误计数
cat /sys/block/sda/stat

# 测试磁盘读写速度
sudo hdparm -Tt /dev/sda
sudo dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct

7.2 日志分析与故障预测

# 查看磁盘相关内核消息
dmesg | grep -i sda
dmesg | grep -i error

# 查看系统日志中的磁盘错误
sudo grep -i "disk error" /var/log/syslog
sudo grep -i "I/O error" /var/log/messages

# 使用smartd进行自动化监控
# 编辑/etc/smartd.conf配置文件
DEVICESCAN -a -o on -S on -n standby,10 -s (S/../.././02|L/../../6/03) -m admin@example.com
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐