在 CentOS 系统管理中,监控和管理磁盘空间是一项至关重要的日常任务,无论是为了防止系统因磁盘空间耗尽而崩溃,还是为了进行容量规划、排查性能瓶颈,熟练掌握查看磁盘信息的命令都是每一位系统管理员必备的技能,CentOS 作为基于 Linux 内核的企业级操作系统,提供了一系列强大而灵活的命令行工具,可以让我们从不同维度、不同深度地了解磁盘状态,本文将系统性地介绍几个最核心、最常用的磁盘查看命令,并通过实例解析其用法与输出含义,帮助您构建完整的磁盘管理知识体系。
df
命令:文件系统空间概览
df
(Disk Filesystem)命令是最基础也是最常用的磁盘空间查看工具,它用于显示文件系统的磁盘空间使用情况,通过 df
,我们可以快速了解各个分区已用、可用的空间以及使用百分比。
最常用的参数组合是 -h
(human-readable),它将以 KB、MB、GB 等更易读的格式显示容量,而不是默认的 1K 块。
df -h
输出结果通常如下所示:
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.6M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 50G 15G 33G 32% /
tmpfs 784M 0 784M 0% /run/user/0
输出解读:
- 文件系统: 分区的设备名称,如
/dev/vda1
。 - 容量: 分区总大小。
- 已用: 已使用的空间。
- 可用: 剩余可用空间。
- 已用%: 空间使用百分比,这是判断磁盘是否即将满载的关键指标。
- 挂载点: 该分区挂载到的系统目录。
除了 -h
,-T
参数也很有用,它会额外显示文件系统的类型(如 ext4, xfs)。
df -hT
-i
参数用于查看 inode 的使用情况,有时即使磁盘空间还有剩余,但由于 inode 耗尽,也无法创建新文件。
df -i
lsblk
命令:块设备树状结构
lsblk
(List Block Devices)命令以树状结构列出所有可用的块设备(磁盘、分区、LVM等),其输出直观地展示了设备间的层级关系,它不显示空间使用情况,而是专注于设备的物理和逻辑结构。
直接运行 lsblk
即可:
lsblk
输出示例如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 50G 0 disk
└─vda1 252:1 0 50G 0 part /
输出解读:
- NAME: 设备名称。
- MAJ:MIN: 主设备号和次设备号。
- RM: 是否为可移动设备(1表示是,0表示否)。
- SIZE: 设备容量。
- RO: 是否为只读(1表示是,0表示否)。
- TYPE: 设备类型(disk表示磁盘,part表示分区)。
- MOUNTPOINT: 挂载点。
从上面的例子可以清晰地看到,vda
是一块 50G 的磁盘,它包含一个名为 vda1
的分区,该分区挂载在根目录 下。
fdisk
与 gdisk
命令:磁盘分区详情
fdisk
和 gdisk
是强大的磁盘分区工具,但它们也常被用来查看磁盘的分区表信息。fdisk
主要用于 MBR 分区表,而 gdisk
用于 GPT 分区表。
使用 -l
参数可以列出系统中所有磁盘的分区布局。
sudo fdisk -l
输出会包含非常详细的分区信息,包括磁盘的扇区总数、每个分区的起始和结束扇区、分区 ID(如 83 表示 Linux,82 表示 Linux swap)等,这对于底层磁盘管理和故障排查非常有价值。
对于 GPT 格式的磁盘,应使用 gdisk -l
。
du
命令:目录与文件空间占用
与 df
查看文件系统级别的空间使用不同,du
(Disk Usage)命令用于查看指定目录或文件所占用的磁盘空间,这是定位“大文件”或“大目录”从而清理空间的利器。
最常用的组合是 du -sh *
。
-s
(summarize): 只显示总计,不列出每个子目录的详情。-h
(human-readable): 以易读格式显示。- 表示当前目录下的所有文件和目录。
# 查看当前目录下各个子目录的大小 du -sh * # 查看某个特定目录(如 /var)的总大小 du -sh /var # 查看当前目录下所有文件和目录的大小,并按大小排序 du -ah | sort -rh | head -n 10
最后一个命令组合非常强大,它可以快速找出占用空间最多的前 10 个文件或目录。
命令对比与实战应用
为了更清晰地理解这些命令的区别,下表对它们进行了小编总结:
命令 | 主要用途 | 信息层级 | 常用选项 | 输出特点 |
---|---|---|---|---|
df | 查看文件系统总空间使用情况 | 文件系统级别 | -h , -T , -i | 汇总性,显示整体使用率 |
lsblk | 查看块设备及其层级关系 | 物理设备级别 | -f , -m | 树状结构,直观展示设备关系 |
fdisk -l | 查看磁盘分区表详情 | 分区表级别 | -l | 极其详细,包含扇区等底层信息 |
du | 查看目录/文件的具体占用空间 | 文件/目录级别 | -h , -s , --max-depth | 递归统计,精确定位空间占用源 |
实战场景:根目录空间告警,如何快速定位问题?
- 第一步:宏观查看,使用
df -h
确认是哪个分区(通常是 )空间不足。 - 第二步:定位大目录,进入根目录
cd /
,然后使用du -sh *
查看哪个一级目录占用空间最大,比如发现/var
目录特别大。 - 第三步:深入排查,进入
/var
目录,再次使用du -sh *
,或者使用du -ah | sort -rh | head -n 10
找出最大的文件或子目录。 - 第四步:清理或处理,根据排查结果,对大文件(如日志文件、临时文件)进行清理、归档或移动。
相关问答 FAQs
Q1: 为什么 df
命令显示的磁盘空间使用率很高,但用 du
命令统计所有目录的大小之和却远没有那么大?
A1: 这是一个在 Linux 系统中很常见的问题,主要原因通常是某个已经被删除的文件,但仍有正在运行的进程在引用它。df
统计的是文件系统分配给文件的空间,只要文件还被进程占用,空间就不会被释放;而 du
统计的是目录树中实际可见的文件,被删除的文件已经不在目录树中,du
不会统计它,要找到这类文件,可以使用 lsof | grep '(deleted)'
命令,它会列出所有被删除但仍被进程打开的文件,重启或终止相应的服务进程后,磁盘空间通常就会被释放。
Q2: 除了查看空间使用,如何监控磁盘的读写性能(I/O)?
A2: CentOS 提供了专门的工具来监控磁盘 I/O 性能,最常用的两个是 iostat
和 iotop
。
iostat
: 属于sysstat
软件包,使用iostat -x 1
命令可以每秒动态刷新一次,显示详细的磁盘 I/O 统计信息,包括设备名、每秒读取/写入的扇区数、每秒读取/写入的请求数、队列长度、等待时间等。%util
列是关键指标,它表示磁盘 I/O 的繁忙程度,如果持续接近 100%,说明磁盘已成为性能瓶颈。iotop
: 类似于top
命令,但用于监控 I/O,它会实时显示哪些进程正在进行大量的读写操作,并按 I/O 使用率排序,使用sudo iotop
运行,可以快速定位到是哪个进程在“拖慢”磁盘。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复