作为系统工程师,日常巡检和故障排查中检查磁盘空间是最常见的操作之一。
本文将以一套真实的物理服务器环境为例——双RAID阵列(RAID 10 + RAID 0,其中RAID 10配置热备盘)、LVM逻辑卷、UEFI引导——完整演示如何精准查看磁盘使用情况,并准确解读每一条输出信息。
存储配置如下:
- RAID阵列1(/dev/sda):由5块物理硬盘(Drive0-4)组成的RAID 10阵列,其中1块为热备盘,实际参与读写的数据盘为4块,总可用容量约4.36T。划分了独立的
/boot、/boot/efi、/、SWAP 和 LVM 卷。 - RAID阵列2(/dev/sdb):由单块物理硬盘(Drive5)组成的RAID 0阵列(JBOD直通模式),总可用容量约2.18T,整块阵列挂载于
/backup。 - LVM逻辑卷
rl-myvmdata:4.3T,挂载于 /myvmdata,底层使用 /dev/sda5 物理卷(来自RAID 10阵列的剩余空间)。
注:在操作系统层面,每个RAID阵列被识别为一块虚拟磁盘(/dev/sda、/dev/sdb)。这种命名方式是标准行为,Volume0对应sda,Volume1对应sdb。RAID阵列中的热备盘对操作系统完全透明,OS只能看到阵列总容量,无法感知热备盘的存在。
方法一:使用 df 命令检查磁盘空间
df(disk-free)是 Linux 下最经典、最通用的磁盘空间查看命令。在日常运维中,最推荐的用法是 df -Th,它将人类易读格式与文件系统类型合二为一:
[root@mywps ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 126G 0 126G 0% /dev/shm
tmpfs tmpfs 51G 27M 51G 1% /run
efivarfs efivarfs 512K 80K 428K 16% /sys/firmware/efi/efivars
/dev/sda3 xfs 100G 6.8G 94G 7% /
/dev/sda2 xfs 960M 469M 492M 49% /boot
/dev/sda1 vfat 599M 7.1M 592M 2% /boot/efi
/dev/sdb1 xfs 2.2T 47G 2.2T 3% /backup
/dev/mapper/rl-myvmdata xfs 4.3T 635G 3.7T 15% /myvmdata
tmpfs tmpfs 26G 36K 26G 1% /run/user/0
# 何快速识别“真正的存储设备?
物理服务器的 df 输出往往很长,包含大量虚拟文件系统。只需关注以下格式的条目,它们才是RAID阵列分区或逻辑卷:
| 设备名称 | 容量 | 挂载点 | 类型 | 说明 |
|---|
/dev/sda3 | | / | | |
/dev/sda2 | | /boot | | |
/dev/sda1 | | /boot/efi | | |
/dev/sdb1 | | /backup | | |
/dev/mapper/rl-myvmdata | | /myvmdata | | |
而 devtmpfs、tmpfs、efivarfs 均为内存文件系统或内核接口,无需计入实际磁盘占用,可忽略。
# 从本例可以直接读取到以下关键信息:
(1)RAID 10阵列(sda,含1块热备盘):
- 根分区
/ 100G,已用 6.8G(7%)—— 系统盘使用率健康 - 独立
/boot 分区 960M,已用 469M(49%)—— 接近一半,正常范围 - 独立
/boot/efi 分区 599M,已用 7.1M(2%)—— UEFI引导分区 - LVM卷
/myvmdata 4.3T,已用 635G(15%)—— 主数据存储区,空间充裕 - 热备盘不占用可用容量,仅在阵列中磁盘故障时自动顶替
(2)RAID 0阵列(sdb):
- 数据盘
/backup 2.2T,已用 47G(3%)—— 第二组RAID阵列(单盘JBOD),几乎为空。
这就是 df -Th 的魅力:一行命令,容量单位、文件系统类型、使用率一目了然。
# 查看所有RAID阵列和分区的终极命令:lsblk
当怀疑“磁盘空间神秘消失”或“新加RAID阵列未识别”时,lsblk是最可靠的伙伴。它以树状结构完整呈现RAID阵列、分区、LVM的完整拓扑:
[root@mywps ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 4.4T 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 100G 0 part /
├─sda4 8:4 0 8G 0 part [SWAP]
└─sda5 8:5 0 4.3T 0 part
└─rl-myvmdata 253:0 0 4.3T 0 lvm /myvmdata
sdb 8:16 0 2.2T 0 disk
└─sdb1 8:17 0 2.2T 0 part /backup
# 关于热备盘的重要说明:
热备盘对操作系统是完全透明的。 在lsblk输出中看不到任何与热备盘相关的信息——没有独立设备,没有容量显示,没有任何标记。这是因为热备盘不参与读写、不贡献容量、不暴露为块设备,它仅在阵列卡眼中“待命”。
方法二:使用 du 命令分析目录级磁盘占用
df 看的是分区级容量,du 则用于分析目录级空间占用。两者配合,可快速定位空间消耗源头。
# 常用 du 命令组合:
# 查看根目录下各一级目录的占用情况(限制深度,避免卡顿)
du -h --max-depth=1 / 2>/dev/null | sort -hr
# 查看 /myvmdata 下哪个子目录占用最大(定位大文件目录)
du -sh /myvmdata/* 2>/dev/null | sort -hr | head -10
# 查看当前目录的总用量
du -sh
# 查找超过1GB的大文件(直接从根目录开始)
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
场景举例: 发现 /myvmdata 已用 635G,想快速定位“罪魁祸首”:
[root@mywps /]# cd /myvmdata
[root@mywps myvmdata]# du -sh * | sort -hr | head -10
604G vmimages
[root@mywps myvmdata]#
更直接的方法:用 find直接定位大文件:
# 查找超过1GB的大文件
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
# 查找超过100MB的大文件并按大小排序
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | awk '{print $5, $9}' | sort -hr
# 这套组合拳的意义在于:
(1)df给方向——定位哪个分区满了
(2) du给路径——找出哪个目录最大
(3) find给目标——揪出具体是哪个文件占用了空间
这三步层层递进,从宏观到微观精准定位空间消耗源头。
方法三:图形界面方法(适用于带显示器的物理服务器)
如果物理服务器安装了桌面环境(如 RHEL/CentOS 工作站、Ubuntu Desktop),推荐以下工具:
- GNOME 磁盘工具(
gnome-disks):直观显示物理硬盘、分区表、LVM,支持挂载/卸载、格式化、分区调整 - 磁盘使用分析器(
baobab):以环形图、树形图可视化展示目录占用,适合快速扫描
绝大多数生产环境物理服务器无图形界面,因此建议运维人员必须熟练掌握 df -Th、lsblk、du 三驾马车,这才是物理服务器运维的立身之本。
总结:物理服务器磁盘空间检查标准流程
作为一名 Linux 系统工程师,接手一台物理服务器时,标准操作流程是:
| 步骤 | 命令 | 目的 |
|---|
| df -Th | 快速总览 |
| lsblk | 存储拓扑:查看RAID阵列数量、分区布局、LVM结构,发现未挂载空间 |
| du -sh /* 2>/dev/null | sort -hr | head -10 | 根目录分析 |
| find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | 大文件定位 |
磁盘空间告警? 检查只是第一步,作为物理服务器运维,还需要掌握:
- RAID 卡与远程管理卡(iDRAC/iLO)磁盘状态查看