AiEDU

服务器磁盘排查工具终极指南:非运维也能轻松搞定磁盘问题

2025-10-22T00:00:00Z | 17分钟阅读 | 更新于 2025-10-22T00:00:00Z

Sherry
服务器磁盘排查工具终极指南:非运维也能轻松搞定磁盘问题

服务器磁盘问题是日常运维工作中最常遇到的故障类型之一,无论是磁盘空间莫名被占满了、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

    1
    
    df -h
    

    输出示例(清晰看到各分区使用率,避免盲目清理):

    plaintext

    1
    2
    3
    
    Filesystem      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

    1
    
    df -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

    1
    
    du -h --max-depth=1 /var | sort -hr  # sort -hr:按大小倒序排列
    

    输出示例(直接找到占用最大的/var/log目录):

    plaintext

    1
    2
    3
    
    80G  /var/log
    20G  /var/lib
    5G   /var/cache
    
  • 案例 2:查找大于 1GB 的文件精准定位大文件,方便清理:

    bash

    1
    
    du -ah /home | grep -E '^[0-9.]+G'  # grep过滤出大于1GB的文件
    

使用场景

  • 磁盘空间告急时,快速定位大目录 / 大文件;
  • 日常清理磁盘,筛选无用的超大文件(如旧备份、日志);
  • 确认某个应用的目录占用是否超出预期。

3. dust - 现代版 du,速度与颜值并存

核心定位

du的 Rust 重构版,速度更快,支持彩色层级输出,直观展示目录占用关系,擅长快速扫瞄大目录的子项占用情况。

易用性 & 受欢迎度

★★★★☆(安装简单,输出直观,近年备受推崇)

安装命令

bash

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Debian/Ubuntu
sudo apt install dust

# Fedora
sudo dnf install dust

# macOS(Homebrew)
brew install dust

# 源码安装(需先安装Rust)
cargo install du-dust

核心用法(参数详解)

命令参数解释
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

    1
    
    dust -n 3 -d 1 /var
    

    输出示例(彩色层级,一目了然):

    plaintext

    1
    2
    3
    
    80G  ┌── /var/log
    20G  ├── /var/lib
    5G   ├── /var/cache
    
  • 案例 2:按从小到大排序,查看当前目录总和

    bash

    1
    
    dust -s -r
    

使用场景

  • 追求高效和美观的磁盘占用扫瞄;
  • 快速定位大目录的子项分布,比du更直观;
  • 适合习惯可视化输出的用户。

4. duf - 颜值担当的磁盘分区监控工具

核心定位

df的现代替代工具,以美观的表格形式展示磁盘分区信息,支持彩色区分使用率,擅长直观监控多个分区的整体状态。

易用性 & 受欢迎度

★★★★☆(安装简单,输出美观,适合日常巡检)

安装命令

bash

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Debian/Ubuntu
sudo apt install duf

# Fedora
sudo dnf install duf

# macOS(Homebrew)
brew install duf

# 二进制下载(官网:https://github.com/muesli/duf/releases)

核心用法(参数详解)

命令参数解释
duf默认显示所有分区信息,彩色表格,使用率越高颜色越红(绿色→黄色→红色)。
duf /dev/sda1只显示指定设备(/dev/sda1)的信息,精准定位单个分区。
duf -only ext4只显示 ext4 类型的分区,过滤无用信息。
duf -sort avail按可用空间排序,快速找到剩余空间最多的分区。
duf -json以 JSON 格式输出,方便脚本自动化处理(适合进阶用户)。

实操案例

  • 案例 1:日常巡检所有分区状态

    bash

    1
    
    duf
    

    输出示例(表格清晰,颜色预警,比df更易读):

    plaintext

    1
    2
    3
    4
    
    Filesystem      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

    1
    
    duf -only ext4 -sort avail
    

使用场景

  • 日常磁盘巡检,快速掌握所有分区的占用状态;
  • 对输出美观度有要求,需要颜色预警的场景;
  • 简单的分区信息筛选(如按文件系统类型、大小排序)。

二、磁盘 I/O 性能监控工具(定位 I/O 瓶颈)

1. iostat - I/O 性能分析 “瑞士军刀”

核心定位

监控磁盘 I/O 吞吐量、使用率、响应时间等关键指标,擅长定位 “I/O 卡顿” 的根源,判断磁盘是否处于饱和状态。

易用性 & 受欢迎度

★★★★☆(功能强大,运维必备,略需理解指标)

安装命令

bash

1
2
3
4
5
# Debian/Ubuntu
sudo apt install sysstat

# CentOS/Fedora
sudo yum install sysstat

核心用法(参数详解)

命令参数解释
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

    1
    
    iostat -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

1
2
3
4
5
# Debian/Ubuntu
sudo apt install iotop

# CentOS/Fedora
sudo yum install iotop

核心用法(参数详解)

命令参数解释
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

    1
    
    iotop -oP
    

    输出中 “WRITE” 列数值最大的进程即为高写入进程,可通过kill -9 <PID>临时终止,或优化该进程的 I/O 逻辑。

使用场景

  • 磁盘 I/O 饱和时,精准定位高读写进程;
  • 排查未知进程恶意占用磁盘 I/O 的问题;
  • 监控特定用户或应用的 I/O 行为。

3. dstat - 综合资源监控 “一站式工具”

核心定位

整合iostatvmstatnetstat的功能,同时监控磁盘 I/O、CPU、内存、网络等资源,擅长快速判断服务器瓶颈是磁盘、CPU 还是内存导致。

易用性 & 受欢迎度

★★★☆☆(功能全面,略复杂,适合进阶排查)

安装命令

bash

1
2
3
4
5
# Debian/Ubuntu
sudo apt install dstat

# CentOS/Fedora
sudo yum install dstat

核心用法(参数详解)

命令参数解释
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

    1
    
    dstat -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

    1
    
    find ~/ -type f -name ".*" -size +500M  # -name ".*" 匹配隐藏文件
    

使用场景

  • 磁盘清理:定位大文件、旧文件、无用日志;
  • 查找特定类型 / 名称的文件(如配置文件、备份文件);
  • 批量处理文件(如批量删除、批量移动)。

2. lsof - 打开文件 “侦探”

核心定位

查看进程打开的所有文件,擅长解决 “删除文件后磁盘空间未释放” 的经典问题(文件被进程占用时,删除后仍占用空间)。

易用性 & 受欢迎度

★★★★☆(功能关键,略需理解进程与文件的关系)

安装命令

bash

1
2
3
4
5
# Debian/Ubuntu
sudo apt install lsof

# CentOS/Fedora
sudo yum install lsof

核心用法(参数详解)

命令参数解释
`lsofgrep deleted`查找被删除但仍被进程占用的文件(关键命令)。
lsof /path/file查看指定文件被哪些进程占用,解决 “文件无法删除” 问题。
lsof -p 1234-p 1234:查看 PID 为 1234 的进程打开的所有文件。

实操案例

  • 案例 1:解决 “删除文件后空间不释放”

    1. 查找被占用的删除文件:

      bash

      1
      
      lsof | grep deleted
      

      输出示例(第二列为进程 PID,最后一列为被删除的文件路径):

      plaintext

      1
      
      java    1234  root  10w  REG  8,1  1073741824  /tmp/old.log (deleted)
      
    2. 重启进程释放空间(或 kill 进程):

      bash

      1
      
      kill -9 1234  # 谨慎!确保该进程可重启,生产环境优先重启服务而非强制kill
      
  • 案例 2:查找占用某端口的进程(延伸用法,非磁盘相关,但常用):

    bash

    1
    
    lsof -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:卸载分区时提示 “设备忙”,快速解决
    1. 查找占用/mnt/external挂载点的进程:

      bash

      1
      
      fuser -v /mnt/external
      
    2. 杀死进程后卸载:

      bash

      1
      2
      
      fuser -k /mnt/external
      umount /mnt/external  # 此时可正常卸载
      

使用场景

  • 卸载磁盘分区时提示 “设备忙”,快速定位并杀死占用进程;
  • 简单场景下替代lsof,快速查找文件 / 目录的占用进程;
  • 批量杀死占用某资源的进程(需谨慎,避免误杀关键进程)。

4. ncdu - 交互式磁盘清理 “神器”

核心定位

基于终端的交互式磁盘分析工具,支持导航目录、直接删除大文件,擅长 “边查边清”,是非运维用户的友好工具。

易用性 & 受欢迎度

★★★★★(交互式操作,直观易懂,清理效率高)

安装命令

bash

1
2
3
4
5
6
7
8
# Debian/Ubuntu
sudo apt install ncdu

# Fedora
sudo dnf install ncdu

# macOS(Homebrew)
brew install ncdu

核心用法(交互式操作)

  1. 启动扫描:ncdu /path(如ncdu /home,扫描指定目录);
  2. 等待扫描完成(底部显示进度);
  3. 交互式操作键:
    • ↑↓:上下移动光标;
    • Enter:进入选中的目录;
    • d:删除选中的文件 / 目录(需确认);
    • s:切换 “按大小排序”/“按名称排序”;
    • q:退出工具。

实操案例

  • 案例 1:交互式清理/home目录的大文件
    1. 启动扫描:

      bash

      1
      
      ncdu /home
      
    2. 扫描完成后,用↑↓找到占用最大的Downloads目录,按Enter进入;

    3. 找到无用的大文件(如old_backup.iso),按d,输入y确认删除;

    4. 清理完成后按q退出。

使用场景

  • 可视化交互式清理磁盘,适合非运维用户;
  • 边排查边删除,无需切换多个命令,效率高;
  • 快速定位并清理大目录 / 文件,适合日常磁盘维护。

5. dutree - 树形结构磁盘 “可视化工具”

核心定位

以树形结构展示目录大小,支持彩色区分文件类型,擅长直观展示目录层级关系,帮助理解文件系统的占用分布。

易用性 & 受欢迎度

★★★☆☆(树形展示清晰,适合理解目录结构,小众但实用)

安装命令

bash

1
2
3
4
5
# 源码安装(需先安装Rust)
cargo install dutree

# Arch Linux(AUR)
yay -S dutree

核心用法(参数详解)

命令参数解释
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

    1
    
    dutree -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

1
2
3
4
5
# Debian/Ubuntu
sudo apt install smartmontools

# CentOS/Fedora
sudo yum install smartmontools

核心用法(参数详解)

命令参数解释
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:定期检查磁盘健康状态(可加入定时任务)

    1. 检查磁盘是否支持 SMART:

      bash

      1
      
      smartctl -i /dev/sda
      
    2. 执行健康检测:

      bash

      1
      
      smartctl -H /dev/sda
      

      若输出 “SMART overall-health self-assessment test result: PASSED”,说明磁盘健康;若为 “FAILED”,需立即备份数据并更换磁盘。

  • 案例 2:查看磁盘详细健康数据

    bash

    1
    
    smartctl -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:只读扫描磁盘坏道
    1. 卸载分区:

      bash

      1
      
      umount /dev/sdb1
      
    2. 开始扫描:

      bash

      1
      
      badblocks -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 分区的文件系统错误
    1. 卸载分区:

      bash

      1
      
      umount /dev/sda1
      
    2. 先模拟修复,确认错误类型:

      bash

      1
      
      fsck.ext4 -nv /dev/sda1
      
    3. 确认无误后实际修复:

      bash

      1
      
      fsck.ext4 -y /dev/sda1
      
    4. 修复完成后重新挂载:

      bash

      1
      
      mount /dev/sda1 /mnt/data
      

使用场景

  • 分区无法挂载,提示文件系统错误;
  • 服务器意外断电后,修复不一致的文件系统;
  • 解决 ext 系列文件系统的读写错误(如文件损坏、目录丢失)。

2. xfs_repair - XFS 文件系统 “专属修复工具”

核心定位

XFS 文件系统的专用修复工具,擅长解决 XFS 分区的挂载失败、文件系统损坏问题(主流 Linux 系统如 CentOS 7 + 默认使用 XFS)。

易用性 & 受欢迎度

★★★☆☆(针对性强,适合 XFS 系统,运维常用)

安装命令

bash

1
2
3
4
5
# Debian/Ubuntu
sudo apt install xfsprogs

# CentOS/Fedora
sudo yum install xfsprogs

核心用法(参数详解)

命令参数解释
xfs_repair /dev/sda2修复 XFS 分区(需先卸载),自动检测并修复错误。
xfs_repair -n /dev/sda2-n:只检查错误,不实际修复,适合先评估问题。
xfs_repair -L /dev/sda2-L:强制清除日志(谨慎使用!仅当日志损坏导致无法修复时用)。

实操案例

  • 案例 1:修复无法挂载的 XFS 分区
    1. 卸载分区:

      bash

      1
      
      umount /dev/sda2
      
    2. 检查错误:

      bash

      1
      
      xfs_repair -n /dev/sda2
      
    3. 执行修复:

      bash

      1
      
      xfs_repair /dev/sda2
      
    4. 重新挂载:

      bash

      1
      
      mount /dev/sda2 /mnt/xfs_data
      

使用场景

  • XFS 分区无法挂载或提示文件系统错误;
  • 服务器断电后,修复 XFS 文件系统的不一致;
  • 补充fsck对 XFS 系统的支持不足。

六、工具选择速查表(按问题场景匹配)

常见问题场景推荐工具星级参考
磁盘空间满了,找大文件 / 目录ncdudustdufind★★★★★
磁盘未满但无法创建文件df -i(排查 inode 耗尽)★★★★★
服务器卡顿,怀疑 I/O 瓶颈iostat(找磁盘)+ iotop(找进程)★★★★☆
删除文件后空间不释放`lsofgrep deletedfuser`★★★★☆
分区无法挂载,文件系统错误fsck(ext)、xfs_repair(XFS)★★★★☆
怀疑磁盘硬件故障(坏道 / 老化)smartctlbadblocks★★★☆☆
日常巡检磁盘分区状态dufdf -h★★★★★
理解目录层级占用关系dutreedust★★★☆☆

总结

服务器磁盘问题的排查核心是 “精准定位 + 对症工具”:基础问题用df/du,可视化清理用ncdu,I/O 瓶颈用iostat+iotop,硬件故障用smartctl,文件系统错误用fsck/xfs_repair

本文的工具覆盖了从入门到进阶的所有场景,即使是非运维用户,只要照着命令和案例操作,也能轻松解决大部分磁盘问题。建议收藏本文,遇到问题时按需查找,让磁盘排查不再是难题!

© 2023 - 2025 - AiEDU | BLOG

知识改变命运,AI改变知识

关于我

Hi,这里是 AiEDU 的博客。AiEDU 是我在互联网上经常使用的名字。

我是一个热衷于开源的研发工程师,在这里我会记录一些关于技术等知识。欢迎你通过评论或者邮件与我交流。

知识共享(Creative Commons)

此网站的所有内容都遵循 CC BY-NC-SA 4.0

All contents of this website are licensed under CC BY-NC-SA 4.0.

社交链接