Linux 检查硬盘的重要性
在 Linux 系统中,硬盘是数据存储的核心设备,其健康状况直接影响系统的稳定性和数据安全性,定期检查硬盘可以帮助用户及时发现潜在的硬件故障、坏道、性能下降等问题,避免数据丢失或系统崩溃,Linux 提供了多种命令行工具和系统日志,用于监控硬盘状态、检测错误和评估硬盘寿命,掌握这些工具的使用方法,对于系统管理员和普通用户而言都至关重要。

使用 df 命令检查磁盘空间使用情况
df(disk free)命令是 Linux 中最常用的磁盘空间检查工具之一,主要用于显示文件系统的磁盘空间使用情况,通过该命令,用户可以快速了解各分区的总容量、已用空间、可用空间及使用百分比,从而判断磁盘是否接近满载状态。
基本用法
df -h
-h 参数以人类可读的格式(如 GB、MB)显示数据,默认情况下,df 会显示所有挂载文件系统的信息,包括设备名、挂载点、总容量、已用空间、可用空间及使用率。
查看特定文件系统的空间
如果只想检查某个特定分区或目录的空间使用情况,可以指定文件系统或挂载点:
df -h /dev/sda1 df -h /home
输出解读
以 df -h 的输出为例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 42% /
/dev/sdb1 100G 60G 35G 63% /data
Size:文件系统总容量。Used:已使用的空间。Avail:可用空间。Use%:使用百分比,超过 80% 时需要警惕。Mounted on:挂载点。
使用 du 命令分析目录空间占用
du(disk usage)命令用于统计文件或目录所占用的磁盘空间,适用于排查大文件或目录,释放不必要的存储空间。
基本用法
du -h /home
该命令会递归显示 /home 目录下每个子目录的空间占用情况。
查看总空间
如果只想查看某个目录的总空间占用,可以结合 sort 和 head 命令:
du -h --max-depth=1 /home | sort -hr | head -n 5
--max-depth=1:只统计一级子目录。sort -hr:按人类可读格式反向排序(从大到小)。head -n 5:显示前 5 个最大的目录。
清理无用文件
通过 du 定位大文件后,可以结合 find 命令查找并删除临时文件或日志:

find /var/log -type f -name "*.log" -exec rm -f {} \;
使用 fdisk 和 lsblk 管理磁盘分区
fdisk 和 lsblk 是 Linux 中用于查看和管理磁盘分区的工具,适合需要了解磁盘布局或调整分区结构的场景。
lsblk:列出块设备信息
lsblk 以树状结构显示磁盘及其分区信息,包括设备名、大小、挂载点等:
lsblk -f
输出示例:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 a1b2c3d4-e5f6-7890-abcd-ef1234567890 /
├─sda2 swap b2c3d4e5-f6a7-8901-bcde-f1234567890 [SWAP]
sdb
└─sdb1 ext4 c3d4e5f6-a7b8-9012-cdef-1234567890ab /data
FSTYPE:文件系统类型(如 ext4、swap)。UUID:文件系统唯一标识符。MOUNTPOINT:挂载点。
fdisk:交互式分区管理
fdisk 是一个功能强大的分区工具,可用于查看、创建、删除或调整分区:
sudo fdisk -l
该命令会列出所有磁盘及其分区表信息,进入交互模式后,可以通过输入 m 查看帮助,p 查看分区,q 退出。
使用 smartctl 检测硬盘健康状态
smartctl 是 SMART(Self-Monitoring, Analysis and Reporting Technology)工具的一部分,用于检测硬盘的硬件健康状况,包括坏道、温度、读写错误等。
安装 smartmontools
如果系统未安装 smartctl,需先安装:
sudo apt install smartmontools # Debian/Ubuntu sudo yum install smartmontools # CentOS/RHEL
检查硬盘健康状态
sudo smartctl -a /dev/sda
-a:显示所有 SMART 信息。- 输出中的
SMART Health Status为OK表示硬盘健康,PASSED表示检测通过,FAILED则需立即更换硬盘。
查看硬盘温度
sudo smartctl -A /dev/sda | grep -i temperature
使用 badblocks 检测硬盘坏道
badblocks 是一个用于检测硬盘坏道的工具,可对磁盘进行读写测试,标记损坏的扇区。

只读模式检测
sudo badblocks -sv /dev/sda
-s:显示进度。-v:详细输出。
写入模式检测(谨慎使用)
写入模式会修改磁盘数据,仅建议在空磁盘上使用:
sudo badblocks -wsv /dev/sdb
使用 iostat 监控磁盘 I/O 性能
iostat 是 sysstat 包的一部分,用于监控磁盘的 I/O 性能,包括读写速率、等待时间等。
安装 sysstat
sudo apt install sysstat # Debian/Ubuntu sudo yum install sysstat # CentOS/RHEL
查看磁盘 I/O 统计
iostat -dx 2
-d:显示磁盘统计信息。-x:显示扩展统计(如 await、util)。2:每 2 秒刷新一次数据。
关键指标解读
await:平均每次 I/O 请求的等待时间(毫秒)。util:磁盘利用率,超过 70% 可能表示 I/O 瓶颈。rrqm/s和wrqm/s:每秒读写请求数。
使用 dmesg 查看内核日志中的磁盘错误
Linux 内核会记录磁盘相关的错误信息,可通过 dmesg 命令查看:
dmesg | grep -i error
如果输出包含 I/O error、sector 等关键词,可能表明硬盘存在硬件故障。
Linux 提供了丰富的工具用于检查硬盘状态,从空间使用率(df、du)到硬件健康检测(smartctl、badblocks),再到性能监控(iostat),用户可以根据需求选择合适的工具,定期检查硬盘并分析日志,能够有效预防数据丢失和系统故障,确保 Linux 系统的稳定运行,对于服务器或关键业务环境,建议结合自动化监控工具(如 Nagios、Zabbix)实现实时告警,进一步提升硬盘管理的效率和可靠性。
















