1. 从零开始掌握CentOS硬盘监控
刚接手一台CentOS服务器时,我总会先做两件事:泡杯咖啡,然后检查硬盘状态。这不是仪式感,而是血泪教训换来的经验——曾经有台生产服务器因为磁盘写满导致数据库崩溃,而报警邮件恰好被归到了垃圾箱。今天就分享这些救过我无数次的操作命令,它们就像汽车仪表盘,能让你随时掌握存储系统的健康状况。
说到查看磁盘空间,df -h绝对是入门必备。第一次看到这个命令输出时,你可能觉得像在看天书:/dev/mapper/centos-root、tmpfs、udev这些都是什么?其实理解起来很简单,想象你的服务器是个大房子,每个挂载点就是不同功能的房间。-h参数让数字变得友好,比如把1048576KB显示为1GB。我习惯加个-T参数显示文件系统类型,这样能一眼看出是ext4还是xfs格式。
但df有个"盲区":它只统计已挂载的空间。有次我新增了块2TB硬盘,df死活不显示,急得差点重装系统。后来发现是忘了挂载!这时候就该lsblk出场了,这个命令像X光机,能透视服务器里所有块设备,不管是否挂载。我最爱它的树状显示方式,能清晰看到磁盘->分区->挂载点的层级关系。配合-f参数还能显示文件系统信息,比df更底层。
2. 磁盘分区管理的双刃剑
说到分区管理,fdisk和parted就像瑞士军刀里的主刀和剪刀。新手常问:两者有什么区别?简单说,fdisk适合传统MBR分区(最大支持2TB),parted则能处理GPT分区(支持2TB以上)。有次我拿4TB硬盘做存储,用fdisk死活只能认出2TB,就是掉进了这个坑。
实际操作中,sudo fdisk -l的输出可能让人发懵。以/dev/sda为例,看到"Disk label type: dos"说明是MBR分区,"gpt"则是GPT分区。重点看Start和End列,它们表示分区在磁盘上的物理位置。我有个小技巧:用lsblk -f对照看,能立即知道哪个分区对应哪个挂载点。
parted命令更强大但也更危险,它的修改是实时生效的!记得第一次用parted时,手抖删了个分区,冷汗瞬间湿透后背。现在我会先用print all查看所有磁盘,确认目标磁盘后再操作。对于LVM这种复杂情况,parted的unit GB命令可以切换显示单位,比fdisk直观得多。
3. 深入I/O性能分析实战
服务器卡顿但CPU内存都正常?八成是磁盘I/O瓶颈。这时候iostat就是救命稻草。刚开始我看iostat的输出就像看股票大盘,完全不懂门道。直到有次线上服务响应超时,用iostat -dx 1 3才发现磁盘util长期100%,这才找到真凶。
解释下关键参数:-d显示磁盘统计,-x展示扩展信息,数字1表示1秒刷新一次,3表示采集3次。重点关注的列有:
- %util:设备繁忙百分比,超过80%就要警惕
- await:I/O平均等待时间(毫秒),数据库服务器最好<10ms
- svctm:设备处理I/O的平均时间
最近排查一个MySQL慢查询问题时,发现iostat显示await异常高但util很低。经过分析是RAID卡电池没电导致写缓存失效,这个案例说明要结合多个指标判断。
4. 高级监控与健康检查
说到磁盘健康,smartctl就像体检中心的CT机。需要先安装smartmontools包:yum install smartmontools。我最常用的sudo smartctl -a /dev/sda会输出几十行信息,重点关注这几个部分:
- SMART整体健康状态:PASSED/FAILED
- 温度信息:Current Drive Temperature
- 重分配扇区计数:Reallocated_Sector_Ct
- 通电时间:Power_On_Hours
有次smartctl报错"UDMA_CRC_Error_Count"激增,检查发现是SATA线接触不良。这类预警能提前几周发现潜在故障,比硬盘突然宕机好太多。
对于目录级空间分析,du命令有个实用技巧:du -h --max-depth=1 / | sort -hr。这个组合拳能找出根目录下占用空间最大的前10个目录,特别适合排查"/var/log"爆满的情况。--max-depth控制遍历深度,sort -hr实现按人类可读数字逆序排列。
5. 自动化监控方案搭建
手动执行命令毕竟效率低,我推荐把这些检查集成到监控系统。比如用crontab定期执行df -h并邮件报警:
0 * * * * df -h | grep -E '9[0-9]%|100%' | mail -s "Disk Alert" admin@example.com更专业的做法是用Prometheus的node_exporter采集指标,配合Grafana做可视化看板。我曾经给一个电商客户搭建的监控系统,在磁盘util超过70%时自动扩容云盘,完美解决了大促期间的存储瓶颈。
最后分享个排查流程:当收到磁盘告警时,先用df确认具体挂载点,用du定位大文件目录,再用iostat分析I/O压力。如果是硬件问题,smartctl的健康报告就是和供应商交涉的铁证。记住,存储问题就像牙疼,小洞不补迟早要根管治疗。