
服务器磁盘问题是日常运维工作中最常遇到的故障类型之一,无论是磁盘空间莫名被占满了、I/O 读写卡顿,还是磁盘硬件老化了,选对工具都能让排查工作事半功倍。本文整合了当前主流的服务器磁盘排查工具,从基础操作到深度诊断全覆盖,每个工具都附带详细操作步骤和实战案例,即使是非运维专业的朋友,也能照着命令轻松上手。
🚀 如果你有这些痛点:不知道该用哪个、哪个更符合你当前的场景、哪个更好用、哪个能解决什么问题,那么这篇文章很适合你。
一、基础磁盘使用分析工具(必备入门款)
1. df - 磁盘分区容量 “晴雨表”
核心定位
快速查看磁盘分区的总容量、已用空间、可用空间及挂载点,是排查 “磁盘满了” 的第一站,尤其擅长解决inode 耗尽(磁盘未满但无法创建文件)的隐性问题。
易用性 & 受欢迎度
★★★★★(系统自带,无需额外安装,运维必备)
安装命令
无需安装,Linux/macOS 系统默认自带。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
df -h | -h:人性化显示单位(KB/MB/GB),默认显示所有分区,最常用命令。 |
df -i | -i:查看 inode 使用情况(inode 是文件索引,大量小文件会导致 inode 耗尽)。 |
df -T | -T:显示分区的文件系统类型(如 ext4、xfs、ntfs),方便后续针对性修复。 |
df /mnt/data | 只查看指定挂载点(/mnt/data)的分区信息,精准定位目标分区。 |
实操案例
案例 1:快速检查所有分区容量
bash
1df -h输出示例(清晰看到各分区使用率,避免盲目清理):
plaintext
1 2 3Filesystem Size Used Avail Use% Mounted on /dev/sda1 200G 80G 120G 40% / /dev/sdb1 500G 480G 20G 96% /mnt/data # 该分区即将满,需清理**案例 2:排查 “磁盘未满但无法创建文件”**当提示 “no space left on device” 但
df -h显示有空间时,大概率是 inode 耗尽:bash
1df -i # 查看inode使用率若某分区
IUse%为 100%,需删除大量小文件(如临时日志、缓存文件)释放 inode。
使用场景
- 日常巡检磁盘容量,提前预警空间不足;
- 解决 “磁盘未满但无法创建文件” 的 inode 耗尽问题;
- 确认分区的文件系统类型,为后续修复做准备。
2. du - 目录文件占用 “探测器”
核心定位
精准计算单个目录或文件的磁盘占用量,擅长定位 “哪些文件 / 目录吃了大量空间”,是清理磁盘的核心工具。
易用性 & 受欢迎度
★★★★★(系统自带,命令简洁,运维高频使用)
安装命令
系统默认自带,无需额外安装。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
du -sh /path | -s:只显示目录总大小;-h:人性化单位,快速查看目标目录总占用。 |
du -ah /path | -a:显示所有文件(包括子文件)的大小;-h:人性化单位。 |
du -c /path/* | -c:统计目录下所有子项大小,并在最后显示总和,方便对比。 |
du -h --max-depth=1 /path | --max-depth=1:只显示 1 级子目录大小,避免层级过深导致输出混乱。 |
实操案例
案例 1:快速定位大目录查找
/var目录下占用空间最大的 1 级子目录:bash
1du -h --max-depth=1 /var | sort -hr # sort -hr:按大小倒序排列输出示例(直接找到占用最大的
/var/log目录):plaintext
1 2 380G /var/log 20G /var/lib 5G /var/cache案例 2:查找大于 1GB 的文件精准定位大文件,方便清理:
bash
1du -ah /home | grep -E '^[0-9.]+G' # grep过滤出大于1GB的文件
使用场景
- 磁盘空间告急时,快速定位大目录 / 大文件;
- 日常清理磁盘,筛选无用的超大文件(如旧备份、日志);
- 确认某个应用的目录占用是否超出预期。
3. dust - 现代版 du,速度与颜值并存
核心定位
du的 Rust 重构版,速度更快,支持彩色层级输出,直观展示目录占用关系,擅长快速扫瞄大目录的子项占用情况。
易用性 & 受欢迎度
★★★★☆(安装简单,输出直观,近年备受推崇)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
dust | 默认显示当前目录子项大小,按占用降序排列,彩色区分层级。 |
dust -s /path | -s:只显示目录总大小,不展开子目录,适合快速看总和。 |
dust -n 5 /path | -n 5:只显示前 5 个最大的条目,避免输出过多。 |
dust -d 2 /path | -d 2:限制目录展开深度为 2 级,聚焦核心目录。 |
dust -r /path | -r:按占用大小升序排列,查看最小的子项(较少用)。 |
实操案例
案例 1:查看
/var目录前 3 个最大子项,深度限制 1 级bash
1dust -n 3 -d 1 /var输出示例(彩色层级,一目了然):
plaintext
1 2 380G ┌── /var/log 20G ├── /var/lib 5G ├── /var/cache案例 2:按从小到大排序,查看当前目录总和
bash
1dust -s -r
使用场景
- 追求高效和美观的磁盘占用扫瞄;
- 快速定位大目录的子项分布,比
du更直观; - 适合习惯可视化输出的用户。
4. duf - 颜值担当的磁盘分区监控工具
核心定位
df的现代替代工具,以美观的表格形式展示磁盘分区信息,支持彩色区分使用率,擅长直观监控多个分区的整体状态。
易用性 & 受欢迎度
★★★★☆(安装简单,输出美观,适合日常巡检)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
duf | 默认显示所有分区信息,彩色表格,使用率越高颜色越红(绿色→黄色→红色)。 |
duf /dev/sda1 | 只显示指定设备(/dev/sda1)的信息,精准定位单个分区。 |
duf -only ext4 | 只显示 ext4 类型的分区,过滤无用信息。 |
duf -sort avail | 按可用空间排序,快速找到剩余空间最多的分区。 |
duf -json | 以 JSON 格式输出,方便脚本自动化处理(适合进阶用户)。 |
实操案例
案例 1:日常巡检所有分区状态
bash
1duf输出示例(表格清晰,颜色预警,比
df更易读):plaintext
1 2 3 4Filesystem Size Used Avail Use% Mounted on /dev/sda1 200G 80G 120G 40% / # 绿色 /dev/sdb1 500G 480G 20G 96% /mnt/data # 红色(预警) tmpfs 3.9G 1.2G 2.7G 31% /run # 黄色案例 2:只查看 ext4 分区,按可用空间排序
bash
1duf -only ext4 -sort avail
使用场景
- 日常磁盘巡检,快速掌握所有分区的占用状态;
- 对输出美观度有要求,需要颜色预警的场景;
- 简单的分区信息筛选(如按文件系统类型、大小排序)。
二、磁盘 I/O 性能监控工具(定位 I/O 瓶颈)
1. iostat - I/O 性能分析 “瑞士军刀”
核心定位
监控磁盘 I/O 吞吐量、使用率、响应时间等关键指标,擅长定位 “I/O 卡顿” 的根源,判断磁盘是否处于饱和状态。
易用性 & 受欢迎度
★★★★☆(功能强大,运维必备,略需理解指标)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
iostat -x 5 | -x:显示扩展统计信息(关键指标);5:每 5 秒刷新一次,持续输出。 |
iostat -x 5 3 | 每 5 秒刷新一次,共输出 3 次后退出(避免持续占用终端)。 |
iostat -x -d sda | -d:只显示磁盘信息;sda:只监控 sda 磁盘,过滤其他设备。 |
关键指标解读
%util:磁盘使用率,接近 100% 说明磁盘 I/O 饱和(主要瓶颈);await:I/O 请求平均响应时间(毫秒),数值越大说明磁盘响应越慢;rMB/s/wMB/s:每秒读写速度(兆字节),反映磁盘吞吐量。
实操案例
案例 1:定位高 I/O 负载的磁盘
当服务器卡顿,怀疑是磁盘 I/O 问题时:
bash
1iostat -x 5若输出中
/dev/sdb的%util持续接近 100%,await超过 50ms,说明 sdb 磁盘是 I/O 瓶颈,需检查是否有高读写进程。
使用场景
- 服务器卡顿、响应缓慢时,判断是否由磁盘 I/O 导致;
- 评估磁盘的读写性能,是否满足业务需求;
- 排查数据库、大数据等 I/O 密集型应用的性能问题。
2. iotop - 可视化 “抓包” 高 I/O 进程
核心定位
实时显示进程的 I/O 使用情况,擅长精准找到 “吃 I/O” 的具体进程,是iostat的互补工具(iostat找磁盘,iotop找进程)。
易用性 & 受欢迎度
★★★★☆(交互式操作,直观易懂,运维高频工具)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
iotop | 进入交互式界面,默认按 I/O 使用率排序。 |
iotop -o | -o:只显示正在进行 I/O 操作的进程,过滤空闲进程,更高效。 |
iotop -oP | -P:按 PID 排序,非交互式输出,适合脚本或后台监控。 |
iotop -u root | -u root:只显示 root 用户的进程,精准定位特定用户的高 I/O 操作。 |
交互式操作键
↑↓:上下移动光标查看进程;o:切换 “只显示活跃 I/O 进程”;P:按 PID 排序;q:退出工具。
实操案例
案例 1:找到写入量最大的进程
服务器磁盘 I/O 饱和时,快速定位罪魁祸首:
bash
1iotop -oP输出中 “WRITE” 列数值最大的进程即为高写入进程,可通过
kill -9 <PID>临时终止,或优化该进程的 I/O 逻辑。
使用场景
- 磁盘 I/O 饱和时,精准定位高读写进程;
- 排查未知进程恶意占用磁盘 I/O 的问题;
- 监控特定用户或应用的 I/O 行为。
3. dstat - 综合资源监控 “一站式工具”
核心定位
整合iostat、vmstat、netstat的功能,同时监控磁盘 I/O、CPU、内存、网络等资源,擅长快速判断服务器瓶颈是磁盘、CPU 还是内存导致。
易用性 & 受欢迎度
★★★☆☆(功能全面,略复杂,适合进阶排查)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
dstat -d | -d:只显示磁盘 I/O 统计(读 / 写速度),简化输出。 |
dstat -d -D sda,sdb | -D sda,sdb:只监控 sda 和 sdb 磁盘,过滤其他设备。 |
dstat -d -c -m | 同时显示磁盘 I/O(-d)、CPU(-c)、内存(-m),全面排查瓶颈。 |
dstat 1 10 | 每秒刷新一次,共输出 10 次后退出。 |
实操案例
案例 1:同时监控磁盘 I/O 和 CPU,判断瓶颈
服务器响应慢时,快速定位瓶颈类型:
bash
1dstat -d -c -m 1若输出中磁盘
writ/read数值持续很高,而 CPUusr/sys较低,说明瓶颈在磁盘;反之则是 CPU 瓶颈。
使用场景
- 服务器综合性能排查,判断瓶颈是磁盘、CPU 还是内存;
- 实时监控多资源状态,适合复杂故障的初步定位;
- 替代多个工具的组合使用,提高排查效率。
三、文件查找与占用分析工具(解决 “空间不释放” 等问题)
1. find - 万能文件 “搜索雷达”
核心定位
按大小、时间、类型等任意条件查找文件,擅长精准定位大文件、旧文件,是清理磁盘的核心工具之一。
易用性 & 受欢迎度
★★★★★(系统自带,功能强大,运维必备)
安装命令
系统默认自带,无需额外安装。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
find /path -type f -size +1G | /path:搜索路径;-type f:只找文件(排除目录);-size +1G:大于 1GB。 |
find /path -type d -name "logs" | -type d:只找目录;-name "logs":按名称匹配 “logs” 目录。 |
find /path -mtime +30 | -mtime +30:查找 30 天前修改过的文件 / 目录。 |
find /path -exec ls -lh {} \; | -exec:对找到的结果执行后续命令(此处是显示详细信息)。 |
实操案例
案例 1:清理 30 天前的大日志文件查找
/var/log下 30 天前、大于 100MB 的日志文件并列出(确认后可删除):bash
1 2 3 4 5# 先列出确认 find /var/log -type f -mtime +30 -size +100M -exec ls -lh {} \; # 确认无误后删除(谨慎使用!) find /var/log -type f -mtime +30 -size +100M -exec rm -f {} \;案例 2:查找用户目录下的隐藏大文件
bash
1find ~/ -type f -name ".*" -size +500M # -name ".*" 匹配隐藏文件
使用场景
- 磁盘清理:定位大文件、旧文件、无用日志;
- 查找特定类型 / 名称的文件(如配置文件、备份文件);
- 批量处理文件(如批量删除、批量移动)。
2. lsof - 打开文件 “侦探”
核心定位
查看进程打开的所有文件,擅长解决 “删除文件后磁盘空间未释放” 的经典问题(文件被进程占用时,删除后仍占用空间)。
易用性 & 受欢迎度
★★★★☆(功能关键,略需理解进程与文件的关系)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 | |
|---|---|---|
| `lsof | grep deleted` | 查找被删除但仍被进程占用的文件(关键命令)。 |
lsof /path/file | 查看指定文件被哪些进程占用,解决 “文件无法删除” 问题。 | |
lsof -p 1234 | -p 1234:查看 PID 为 1234 的进程打开的所有文件。 |
实操案例
案例 1:解决 “删除文件后空间不释放”
查找被占用的删除文件:
bash
1lsof | grep deleted输出示例(第二列为进程 PID,最后一列为被删除的文件路径):
plaintext
1java 1234 root 10w REG 8,1 1073741824 /tmp/old.log (deleted)重启进程释放空间(或 kill 进程):
bash
1kill -9 1234 # 谨慎!确保该进程可重启,生产环境优先重启服务而非强制kill
案例 2:查找占用某端口的进程(延伸用法,非磁盘相关,但常用):
bash
1lsof -i :8080 # 查找占用8080端口的进程
使用场景
- 磁盘空间删除后不释放,排查占用文件的进程;
- 无法删除文件 / 目录时,查找占用的进程;
- 查看进程打开的配置文件、日志文件等,辅助故障排查。
3. fuser - 进程占用 “快速定位器”
核心定位
与lsof功能类似,但更简洁,擅长通过文件 / 目录快速反查占用的进程,适合快速 kill 占用进程(如卸载分区时提示 “设备忙”)。
易用性 & 受欢迎度
★★★☆☆(轻量快速,适合简单场景,补充lsof)
安装命令
系统默认自带,无需额外安装。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
fuser -v /path | -v:详细模式,显示占用/path的进程 PID、用户、进程名。 |
fuser -k /path | -k:强制杀死占用/path的所有进程(谨慎使用!)。 |
fuser -m /mnt | -m:查找占用/mnt挂载点的所有进程,适合卸载时用。 |
实操案例
- 案例 1:卸载分区时提示 “设备忙”,快速解决
查找占用
/mnt/external挂载点的进程:bash
1fuser -v /mnt/external杀死进程后卸载:
bash
1 2fuser -k /mnt/external umount /mnt/external # 此时可正常卸载
使用场景
- 卸载磁盘分区时提示 “设备忙”,快速定位并杀死占用进程;
- 简单场景下替代
lsof,快速查找文件 / 目录的占用进程; - 批量杀死占用某资源的进程(需谨慎,避免误杀关键进程)。
4. ncdu - 交互式磁盘清理 “神器”
核心定位
基于终端的交互式磁盘分析工具,支持导航目录、直接删除大文件,擅长 “边查边清”,是非运维用户的友好工具。
易用性 & 受欢迎度
★★★★★(交互式操作,直观易懂,清理效率高)
安装命令
bash
| |
核心用法(交互式操作)
- 启动扫描:
ncdu /path(如ncdu /home,扫描指定目录); - 等待扫描完成(底部显示进度);
- 交互式操作键:
↑↓:上下移动光标;Enter:进入选中的目录;d:删除选中的文件 / 目录(需确认);s:切换 “按大小排序”/“按名称排序”;q:退出工具。
实操案例
- 案例 1:交互式清理
/home目录的大文件启动扫描:
bash
1ncdu /home扫描完成后,用
↑↓找到占用最大的Downloads目录,按Enter进入;找到无用的大文件(如
old_backup.iso),按d,输入y确认删除;清理完成后按
q退出。
使用场景
- 可视化交互式清理磁盘,适合非运维用户;
- 边排查边删除,无需切换多个命令,效率高;
- 快速定位并清理大目录 / 文件,适合日常磁盘维护。
5. dutree - 树形结构磁盘 “可视化工具”
核心定位
以树形结构展示目录大小,支持彩色区分文件类型,擅长直观展示目录层级关系,帮助理解文件系统的占用分布。
易用性 & 受欢迎度
★★★☆☆(树形展示清晰,适合理解目录结构,小众但实用)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
dutree /path | 默认以树形展示/path的目录结构,彩色区分文件类型(目录蓝色、文件白色)。 |
dutree -d 3 /path | -d 3:限制树形深度为 3 级,避免层级过深。 |
dutree -s /path | -s:按大小排序(默认),最大的子项在最前面。 |
dutree -n /path | -n:按文件数量排序,适合查找小文件密集的目录。 |
dutree -a /path | -a:显示所有文件(包括隐藏文件)。 |
实操案例
案例 1:查看当前目录的树形占用,深度 2 级
bash
1dutree -d 2 -s输出示例(层级清晰,直观看到子目录占用):
plaintext
1 2 3 4 5 6 7. [10G] ├── node_modules [5.2G] │ ├── react [800M] │ └── lodash [200M] ├── dist [1.8G] │ ├── js [1.2G] │ └── css [600M]
使用场景
- 理解目录的层级占用关系,适合新手熟悉文件系统;
- 查找小文件密集的目录(按数量排序);
- 喜欢树形可视化输出的用户,比
du更易读。
四、磁盘健康与故障检测工具(预测硬件问题)
1. smartctl - 磁盘健康 “预警器”
核心定位
读取磁盘的 SMART(自监测、分析与报告技术)信息,擅长预测磁盘硬件故障(如坏道、寿命衰减),提前规避数据丢失风险。
易用性 & 受欢迎度
★★★☆☆(功能关键,略需专业知识,运维必备)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
smartctl -i /dev/sda | -i:查看磁盘基本信息,确认是否支持 SMART(需显示 “SMART support is: Enabled”)。 |
smartctl -H /dev/sda | -H:执行磁盘健康检测,输出 “PASSED” 为正常,“FAILED” 需立即更换磁盘。 |
smartctl -a /dev/sda | -a:显示完整的 SMART 数据,包括坏道计数、使用寿命等详细指标。 |
关键指标解读
Reallocated_Sector_Ct:重新分配扇区数(坏道替换计数),数值越大说明磁盘坏道越多;Power_On_Hours:磁盘通电时间,可评估磁盘老化程度;Temperature_Celsius:磁盘温度,过高会影响寿命。
实操案例
案例 1:定期检查磁盘健康状态(可加入定时任务)
检查磁盘是否支持 SMART:
bash
1smartctl -i /dev/sda执行健康检测:
bash
1smartctl -H /dev/sda若输出 “SMART overall-health self-assessment test result: PASSED”,说明磁盘健康;若为 “FAILED”,需立即备份数据并更换磁盘。
案例 2:查看磁盘详细健康数据
bash
1smartctl -a /dev/sda | grep -E 'Reallocated_Sector_Ct|Temperature_Celsius'
使用场景
- 日常磁盘健康巡检,提前预测硬件故障;
- 磁盘出现读写错误时,判断是否为硬件问题;
- 评估旧磁盘的使用寿命,决定是否更换。
2. badblocks - 坏道 “扫描仪”
核心定位
扫描磁盘的物理坏道或逻辑错误,擅长定位 “文件读写失败” 的硬件根源,是smartctl的补充工具。
易用性 & 受欢迎度
★★★☆☆(功能专一,需谨慎操作,适合深度检测)
安装命令
系统默认自带,无需额外安装。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
badblocks -v /dev/sdb | -v:详细模式,扫描/dev/sdb的坏道(只读扫描,不破坏数据)。 |
badblocks -wsv /dev/sdb | -w:破坏性读写扫描(会清空数据!);-s:显示进度;-v:详细模式。 |
注意事项
- 扫描前必须卸载分区(如
umount /dev/sdb1),否则会损坏数据; - 破坏性扫描(
-w)仅用于空白磁盘或确认废弃的磁盘,切勿用于生产数据盘。
实操案例
- 案例 1:只读扫描磁盘坏道
卸载分区:
bash
1umount /dev/sdb1开始扫描:
bash
1badblocks -v /dev/sdb输出示例(无坏道则显示 “0 bad blocks found.”,有坏道会列出位置)。
使用场景
- 磁盘出现读写错误,怀疑有坏道时;
- 检测新磁盘的质量,确认是否有出厂坏道;
- 深度排查磁盘硬件故障,辅助判断是否需要更换磁盘。
五、文件系统修复工具(解决挂载 / 读写错误)
1. fsck - 文件系统 “修复大师”
核心定位
检查并修复文件系统错误(如断电导致的文件系统不一致),支持 ext、xfs 等多种文件系统,擅长解决 “分区无法挂载”“文件读写失败” 的逻辑错误。
易用性 & 受欢迎度
★★★★☆(功能关键,需谨慎操作,运维必备)
安装命令
系统默认自带,无需额外安装。
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
fsck.ext4 -nv /dev/sda1 | 针对 ext4 分区:-n:模拟修复(不实际修改);-v:详细输出;适合先测试。 |
fsck.ext4 -y /dev/sda1 | -y:自动确认所有修复操作,无需手动输入(适合非交互式场景)。 |
fsck.xfs /dev/sda2 | 针对 xfs 分区(xfs 文件系统需用专用参数,不可用-y直接修复)。 |
注意事项
- 必须卸载分区后再运行,否则会严重损坏数据;
- xfs 文件系统的修复需用
xfs_repair工具,fsck.xfs仅做检查。
实操案例
- 案例 1:修复 ext4 分区的文件系统错误
卸载分区:
bash
1umount /dev/sda1先模拟修复,确认错误类型:
bash
1fsck.ext4 -nv /dev/sda1确认无误后实际修复:
bash
1fsck.ext4 -y /dev/sda1修复完成后重新挂载:
bash
1mount /dev/sda1 /mnt/data
使用场景
- 分区无法挂载,提示文件系统错误;
- 服务器意外断电后,修复不一致的文件系统;
- 解决 ext 系列文件系统的读写错误(如文件损坏、目录丢失)。
2. xfs_repair - XFS 文件系统 “专属修复工具”
核心定位
XFS 文件系统的专用修复工具,擅长解决 XFS 分区的挂载失败、文件系统损坏问题(主流 Linux 系统如 CentOS 7 + 默认使用 XFS)。
易用性 & 受欢迎度
★★★☆☆(针对性强,适合 XFS 系统,运维常用)
安装命令
bash
| |
核心用法(参数详解)
| 命令 | 参数解释 |
|---|---|
xfs_repair /dev/sda2 | 修复 XFS 分区(需先卸载),自动检测并修复错误。 |
xfs_repair -n /dev/sda2 | -n:只检查错误,不实际修复,适合先评估问题。 |
xfs_repair -L /dev/sda2 | -L:强制清除日志(谨慎使用!仅当日志损坏导致无法修复时用)。 |
实操案例
- 案例 1:修复无法挂载的 XFS 分区
卸载分区:
bash
1umount /dev/sda2检查错误:
bash
1xfs_repair -n /dev/sda2执行修复:
bash
1xfs_repair /dev/sda2重新挂载:
bash
1mount /dev/sda2 /mnt/xfs_data
使用场景
- XFS 分区无法挂载或提示文件系统错误;
- 服务器断电后,修复 XFS 文件系统的不一致;
- 补充
fsck对 XFS 系统的支持不足。
六、工具选择速查表(按问题场景匹配)
| 常见问题场景 | 推荐工具 | 星级参考 | |
|---|---|---|---|
| 磁盘空间满了,找大文件 / 目录 | ncdu、dust、du、find | ★★★★★ | |
| 磁盘未满但无法创建文件 | df -i(排查 inode 耗尽) | ★★★★★ | |
| 服务器卡顿,怀疑 I/O 瓶颈 | iostat(找磁盘)+ iotop(找进程) | ★★★★☆ | |
| 删除文件后空间不释放 | `lsof | grep deleted、fuser` | ★★★★☆ |
| 分区无法挂载,文件系统错误 | fsck(ext)、xfs_repair(XFS) | ★★★★☆ | |
| 怀疑磁盘硬件故障(坏道 / 老化) | smartctl、badblocks | ★★★☆☆ | |
| 日常巡检磁盘分区状态 | duf、df -h | ★★★★★ | |
| 理解目录层级占用关系 | dutree、dust | ★★★☆☆ |
总结
服务器磁盘问题的排查核心是 “精准定位 + 对症工具”:基础问题用df/du,可视化清理用ncdu,I/O 瓶颈用iostat+iotop,硬件故障用smartctl,文件系统错误用fsck/xfs_repair。
本文的工具覆盖了从入门到进阶的所有场景,即使是非运维用户,只要照着命令和案例操作,也能轻松解决大部分磁盘问题。建议收藏本文,遇到问题时按需查找,让磁盘排查不再是难题!
