banner
约 1,200 字
4 分钟

Linux 磁盘管理教程:df、du 与挂载新硬盘

摘要

磁盘满了怎么排查?新硬盘怎么用?本教程依据 GNU coreutils 与 util-linux 官方手册整理,介绍 df/du 的排查组合拳、lsblk 查看块设备、fdisk 分区与 mkfs 格式化、mount 与 /etc/fstab 开机自动挂载,以及 journalctl 日志清理等释放空间的手段。

Linux 磁盘管理教程:df、du 与分区入门

磁盘空间突然满了、不知道是谁把盘吃掉了、新挂了一块硬盘不会用——磁盘管理是服务器运维绕不开的基本功。本教程依据 GNU coreutils 与 util-linux 官方手册整理。

一、看整体:df

df(disk free)查看文件系统层面的空间使用:

bash
df -h        # 人类可读单位(GB/MB),最常用
df -hT       # 多显示一列文件系统类型(ext4/xfs/btrfs...)
df -i        # 查看 inode 使用情况(小文件过多会耗尽 inode)

重点看 Use% 一列,超过 90% 就该警惕了。注意:df 统计的是挂载点,Docker 的 overlay、NFS 挂载等都会各占一行。

二、查细节:du

du(disk usage)统计目录/文件实际占用:

bash
du -h 文件名            # 单个文件大小
du -sh 目录/           # 只看目录总大小(s=汇总,最常用)
du -h --max-depth=1 /var | sort -rh   # 看 /var 下每个子目录占了多少
du -sh * | sort -rh    # 当前目录下所有条目按大小排序

排查"盘满了"的标准流程:先 df -h 确认哪个分区满了,再 cd 过去用 du -sh * | sort -rh 层层下钻,很快就能找到元凶(常见嫌疑:日志、Docker 镜像缓存、旧备份)。

df 和 du 数字对不上?通常是文件已被删除但进程仍持有句柄,lsof | grep deleted 可以找到。

三、lsblk 看块设备

bash
lsblk

以树状列出所有磁盘和分区(sda/sdb、分区 sda1、挂载点),是接上新硬盘后第一步要执行的命令。

四、分区、格式化与挂载

新硬盘的完整上机流程(以 /dev/sdb 为例,操作前务必确认设备名,选错会毁数据):

bash
sudo fdisk /dev/sdb        # 交互式分区:n 新建、p 打印、w 写入
sudo mkfs.ext4 /dev/sdb1   # 格式化为 ext4
sudo mkdir /data
sudo mount /dev/sdb1 /data # 挂载
df -h /data                # 确认挂载成功

开机自动挂载,编辑 /etc/fstab 追加一行:

纯文本
/dev/sdb1  /data  ext4  defaults  0  2

改 fstab 前建议先执行 sudo mount -a 验证无报错——fstab 写错会导致开机失败。

更推荐用 UUID 挂载(设备名可能变化,UUID 不会),用 blkid 查 UUID:

纯文本
UUID=xxxx-xxxx  /data  ext4  defaults  0  2

五、清理空间的常见手段

bash
sudo journalctl --vacuum-size=200M        # 限制 systemd 日志占用
sudo apt clean                            # 清理 apt 缓存(Debian/Ubuntu)
docker system prune                       # 清理 Docker 无用镜像/容器

六、总结

需求

命令

看分区使用率

df -h

找大文件/目录

du -sh * | sort -rh 层层下钻

看磁盘与分区

lsblk

格式化

mkfs.ext4 /dev/sdX1

挂载

mount + 写 /etc/fstab

日志清理

journalctl --vacuum-size=200M

记住"df 定位分区、du 定位目录、lsblk 看设备"这三板斧,磁盘问题就不再可怕。

END