当前位置:首页 > Linux > 正文

linux如何扫描磁盘

在 Linux 中,可用 fsck 命令扫描磁盘,若磁盘已挂载,需先 umount;未挂载则直接执行 fsck /dev/XXX(XXX 为设备名),加 -y

在Linux系统中,扫描磁盘是日常运维、故障排查及性能优化的重要环节,通过不同工具可实现对磁盘空间、文件分布、健康状态、错误检测等多维度的分析,以下从核心目标出发,系统化梳理各类磁盘扫描方法,并提供实操示例与注意事项。


基础磁盘信息与挂载状态扫描

df命令:快速查看磁盘分区使用率

功能:显示已挂载文件系统的磁盘空间占用情况(容量/已用/可用/占比/挂载点)。
常用参数

  • -h:以人类可读格式(GB/MB)输出,替代默认的KB单位。
  • -T:额外显示文件系统类型(如ext4、xfs)。
  • -l:仅显示本地文件系统(排除网络文件系统)。

示例

df -hT

输出示例:
| 文件系统 | 类型 | 总大小 | 已用 | 可用 | 已用% | 挂载点 |
|—————-|———|——–|——-|——-|——-|————–|
| /dev/sda1 | ext4 | 466G | 123G | 307G | 28% | / |
| /dev/sdb1 | xfs | 1.8T | 1.2T | 580G | 67% | /data |
| tmpfs | tmpfs | 7.8G | 4.0K | 7.8G | 0% | /run |

解读:关注根分区()和使用率高的分区(如/data),若某分区接近满载需及时清理或扩容。

lsblk命令:物理磁盘与分区拓扑结构

功能:列出所有块设备(硬盘、SSD、U盘等)及其分区关系,直观展示设备树。
常用参数

  • -f:同步显示文件系统信息(如UUID、标签)。
  • -o NAME,SIZE,TYPE,MOUNTPOINT:自定义输出列。

示例

lsblk -f

输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 466G 0 disk
├─sda1 8:1 0 466G 0 part /
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /data
nvme0n1 259:0 0 512G 0 disk
└─nvme0n1p1 259:1 0 512G 0 part [SWAP]

linux如何扫描磁盘  第1张

价值:快速定位未挂载的分区(无MOUNTPOINTS列),或识别新插入的设备(如移动硬盘)。


深度扫描:文件级占用分析

du命令:统计目录/文件磁盘占用

功能:递归计算指定目录或文件的磁盘使用量,用于定位大文件或冗余数据。
常用参数组合

  • -sh:汇总当前目录总大小(单行输出)。
  • -a:显示所有文件和子目录的细节(含隐藏文件)。
  • --max-depth=N:限制递归深度(如N=1仅统计一级子目录)。
  • sort配合管道:按大小排序结果。

示例1:统计/var/log目录总大小

du -sh /var/log
# 输出:4.2G    /var/log

示例2:找出/home下占用最大的前10个子目录

du -a /home | sort -rh | head -n 10
# 输出类似:1.2G    /home/user1/Downloads
#          800M    /home/user2/Videos

技巧:结合find命令过滤特定类型文件(如日志):

find /var/log -type f -name ".log" -exec du -h {} + | sort -hr

ncdu工具:交互式磁盘分析(需安装)

特点:提供彩色界面,支持动态导航至大文件/目录,比du更直观。
安装sudo apt install ncdu(Debian/Ubuntu)或yum install ncdu(CentOS)。
使用ncdu /path/to/scan,键盘方向键浏览,按q退出。
优势:可视化呈现目录层级,可直接跳转至占用最高的子目录。


磁盘健康与错误检测

fsck命令:检查并修复文件系统错误

适用场景:怀疑文件系统损坏(如异常断电导致的元数据错误)、开机提示“UNEXPECTED INCONSISTENCY”。
关键规则必须在未挂载的文件系统上执行(否则会报错“device is busy”)。

操作步骤

  1. 卸载目标分区(例:umount /dev/sdb1);
  2. 执行检查(自动修复非致命错误):fsck /dev/sdb1
  3. 若需强制修复(谨慎!可能导致数据丢失):fsck -y /dev/sdb1

常见错误码

  • Inodes that were part of a corrupted orphan linked list:孤立节点错误,通常由未正常卸载导致。
  • Superblock last mount time... is in the future:超级块时间戳异常,可能因硬件故障引起。

注意:生产环境建议先备份重要数据,再执行fsck;若分区正在使用,可通过Live CD启动后扫描。

smartctl命令:监控硬盘健康状态(S.M.A.R.T.)

功能:读取硬盘内置的自我监测分析报告(SMART),预测潜在硬件故障。
安装sudo apt install smartmontools(主流发行版均支持)。
常用命令

  • smartctl -a /dev/sda:全面检测硬盘健康指标(温度、重映射扇区数、读写错误率等)。
  • smartctl --test=short /dev/sda:执行快速健康测试(耗时约2分钟)。
  • smartctl --test=long /dev/sda:执行完整测试(耗时数小时,适合离线场景)。

关键指标解读
| 指标 | 含义 | 预警阈值 |
|———————–|———————————————————————-|—————-|
| Reallocated Sectors | 已替换的坏扇区数量(原坏扇区数据已被迁移至备用区域) | >10 |
| Seek Error Rate | 寻道错误率(磁头定位失败次数/尝试次数) | >5% |
| Spin Up Time | 硬盘启动时间(正常应<1秒,过长可能电机老化) | >3s |
| Power On Hours | 累计通电时长(新硬盘应远小于旧硬盘) | 根据型号判断 |

示例输出片段

=== Start Of Information Section ===
Model Family:     Western Digital Blue
Serial Number:    WD-WCC5Y.......
User Capacity:    4,667,968,000 bytes [4.67TB]
...
=== End Of Information Section ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status         Percent_Completed  Lifetime hours    Lifetime days
#1  Short offline       Completed without error       100%         234         10
#2  Short offline       Completed without error       100%         234         10
...

高级场景:特殊需求扫描

扫描未挂载的磁盘/分区

若新增硬盘未自动挂载,需手动识别并挂载后再扫描:

# 步骤1:识别新磁盘(假设为/dev/sdc)
lsblk | grep sdc
# 步骤2:创建分区(使用fdisk或parted)
sudo fdisk /dev/sdc
# 步骤3:格式化分区(例:ext4)
sudo mkfs.ext4 /dev/sdc1
# 步骤4:挂载到指定目录(如/mnt/newdisk)
sudo mount /dev/sdc1 /mnt/newdisk
# 步骤5:扫描新分区
df -h /mnt/newdisk

跨服务器扫描远程磁盘(NFS/CIFS)

若需扫描挂载的网络磁盘(如NFS):

# 查看远程挂载点的使用情况
df -h /mnt/nfs_share
# 统计远程目录下的文件占用(需权限允许)
du -sh /mnt/nfs_share/important_data

常见问题与解决方案对照表

问题现象 可能原因 解决思路
df显示某分区“已用100%”但找不到大文件 被删除文件仍占空间(未释放inode) 执行lsof +L1查找被进程占用的已删除文件;或重启相关服务释放句柄
fsck提示“Device or resource busy” 分区处于挂载状态 umount该分区后再执行;或通过Live CD启动进入单用户模式扫描
smartctl报告“RAW_READ_ERROR_RATE”过高 硬盘存在物理坏道 立即备份数据;更换硬盘;联系厂商保修
du统计的总大小远大于df显示的可用空间 存在大量小文件或隐式存储(如缩略图缓存) 使用ncdu定位大目录;清理临时文件(rm -rf /tmp/);调整存储策略

相关问答FAQs

Q1:如何选择最适合的磁盘扫描工具?

:根据需求优先级选择:①快速概览→df -h;②定位大文件→du+排序或ncdu;③检查文件系统错误→fsck(需卸载);④监控硬盘健康→smartctl,若需综合分析,建议组合使用df+du+smartctl

Q2:执行fsck时提示“Device is busy”,如何解决?

:原因是目标分区当前正被系统挂载使用,解决方法有两种:①正常关机后,通过引导介质(如Ubuntu Live CD)启动,此时原分区未挂载,可直接扫描;②若无法关机,尝试临时卸载分区(umount /dev/xxx),但需确保无重要进程正在访问该分区(否则可能导致

0