1. Linux磁盘信息查询:从基础到高阶的完整指南
在Linux系统管理和运维工作中,磁盘信息查询是最基础也是最重要的技能之一。无论是排查存储空间不足的问题,还是规划磁盘扩容方案,亦或是优化I/O性能,都离不开对磁盘状态的准确掌握。不同于图形化操作系统,Linux提供了丰富的命令行工具来获取各种维度的磁盘信息,这些工具各有所长,适用于不同场景。
我见过太多新手管理员在磁盘空间告急时手忙脚乱,也遇到过不少资深运维因为忽略某些关键指标而导致的性能问题。本文将系统梳理Linux下常用的磁盘信息查询命令,从基础的容量查看,到进阶的I/O性能分析,再到专业级的SMART健康检测,带你建立完整的磁盘监控知识体系。无论你是刚接触Linux的新手,还是需要优化生产环境的老手,这些命令都将成为你工具箱中的利器。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础磁盘容量查询
2.1 df命令:文件系统空间概览
df(disk filesystem)是查看磁盘空间使用情况的首选命令。不加任何参数时,它会以1K块为单位显示所有已挂载文件系统的使用情况:
bash复制$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 104806400 52428800 51875840 51% /
tmpfs 8169348 0 8169348 0% /dev/shm
几个实用参数:
-h:人类可读格式显示(自动转换为GB/MB)-T:显示文件系统类型-i:查看inode使用情况而非块使用情况
经验之谈:当
df显示磁盘已满但实际文件大小相加却不够时,通常是因为有进程仍在占用已删除的文件。用lsof | grep deleted查找这些"幽灵文件",重启相关进程即可释放空间。
2.2 du命令:目录级空间分析
当需要定位具体哪个目录占用了大量空间时,du(disk usage)命令就派上用场了。基本用法:
bash复制$ du -sh /var/log/*
12M /var/log/auth.log
1.2G /var/log/syslog
常用组合:
du -sh * | sort -h:当前目录下各子目录/文件大小排序du --max-depth=1 -h:只显示一级子目录大小du -x --exclude="*.tmp":排除特定类型文件
排查技巧:遇到
du和df结果不一致的情况,可能是挂载点覆盖(mount --bind)或磁盘配额(quota)导致的。先用mount | grep检查挂载情况,再用quota -v查看配额使用。
3. 磁盘设备与分区信息
3.1 lsblk:块设备拓扑关系
lsblk以树状结构清晰地展示块设备之间的依赖关系,特别适合理清多磁盘多分区场景:
bash复制$ lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
NAME SIZE FSTYPE MOUNTPOINT
sda 200G
├─sda1 100G ext4 /
├─sda2 50G swap
└─sda3 50G xfs /data
实用参数组合:
lsblk -f:显示完整文件系统信息lsblk -m:显示设备所有者及权限lsblk -S:仅显示SCSI设备(适用于SAN存储)
3.2 fdisk与parted:分区表查看
对于MBR分区表,使用fdisk -l查看详细信息:
bash复制$ sudo fdisk -l /dev/sda
Disk /dev/sda: 200 GiB, 214748364800 bytes
Disklabel type: dos
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 209715166 209713119 100G 83 Linux
对于GPT分区表或大于2TB的磁盘,parted更合适:
bash复制$ sudo parted /dev/sdb print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 4.3TB
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 4.3TB 4.3TB ext4 data
4. 高级磁盘信息查询
4.1 smartctl:磁盘健康监测
通过SMART(Self-Monitoring, Analysis and Reporting Technology)技术可以预判磁盘故障:
bash复制$ sudo smartctl -a /dev/sda
SMART overall-health self-assessment test result: PASSED
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
关键指标解读:
- Reallocated_Sector_Ct > 0:已有坏道被替换
- Current_Pending_Sector > 0:待处理坏道
- Temperature_Celsius > 60:温度过高
4.2 iostat:实时I/O性能监控
iostat是分析磁盘I/O瓶颈的利器,建议配合-x参数使用:
bash复制$ iostat -x 2
Device r/s w/s rkB/s wkB/s await svctm %util
sda 25.4 18.2 312.4 256.8 2.12 1.85 8.07
关键指标:
- %util:设备利用率(接近100%表示饱和)
- await:平均I/O等待时间(ms)
- svctm:平均服务时间(应小于await)
5. 企业级监控方案
5.1 使用Prometheus+Grafana监控磁盘
在生产环境中,建议配置自动化监控系统。以Prometheus为例,配置node_exporter采集磁盘指标后,可在Grafana中创建包含以下关键指标的仪表盘:
- node_filesystem_avail_bytes:可用空间
- node_disk_io_time_seconds_total:I/O耗时
- node_disk_read_errors_total:读取错误
5.2 日志分析与告警配置
通过logrotate管理日志文件,并设置合理的告警规则:
bash复制# /etc/logrotate.d/syslog
/var/log/syslog {
daily
rotate 7
compress
delaycompress
missingok
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
告警阈值建议:
- 根分区使用率 > 90%
- 磁盘响应时间 > 50ms
- SMART错误计数 > 0
6. 疑难问题排查指南
6.1 常见问题速查表
| 问题现象 | 可能原因 | 排查命令 |
|---|---|---|
| df显示空间不足但文件不大 | 文件被删除但仍被进程占用 | lsof +L1 |
| 磁盘I/O性能骤降 | 可能硬件故障或RAID重建 | smartctl -a, mdadm --detail |
| 无法写入磁盘 | inode耗尽或文件系统只读 | df -i, mount | grep ro |
6.2 性能优化技巧
- 使用ionice调整I/O优先级:
bash复制
ionice -c2 -n7 backup.sh - 针对SSD优化挂载参数:
bash复制
noatime,nodiratime,discard - 大文件处理建议:
bash复制
fallocate -l 10G /data/bigfile
掌握这些磁盘信息查询技术后,你将能从容应对各种存储相关问题。记住,好的系统管理员不是等到报警才行动,而是通过定期检查这些指标提前预防问题。建议将关键命令加入日常检查清单,形成系统化的监控习惯。
