根目录空间不足应急扩容需分三步:先用df -h和df -i定位是否真满及inode耗尽,再用lsblk判断lvm或传统分区以确定能否在线扩容,最后按类型执行lvextend+文件系统扩展、/home匀空间或新盘挂载等安全路径,并验证生效及修复initramfs。

根目录空间不足是 Linux 系统最典型的紧急故障之一,表现为 df -h 显示 / 使用率 95%+、no space left on device 报错、服务卡顿甚至无法登录。应急扩容不是盲目加命令,而是分三步走:快速定位“谁占的”,判断“能不能动”,再选择“怎么扩”。下面直接说清每一步该做什么、为什么这么做、以及最容易翻车的地方。
一、立刻定位空间占用大户(5分钟内完成)
别急着扩容,先确认是不是真满了、满在哪。很多情况其实是日志或缓存撑爆,清理就能缓解:
-
看整体分布:运行
df -h,重点看/行的Use%和Avail;同时执行df -i检查 inode 是否耗尽(小文件多时常见) -
查大目录:进根目录后运行
du -sh /* 2>/dev/null | sort -hr | head -10,快速列出顶层目录大小;特别关注/var(日志、Docker)、/tmp(临时文件)、/root或/home(用户数据) -
挖深层垃圾:若
/var/log异常大,用journalctl --disk-usage查 systemd 日志占用;find /var/log -name "*.log" -size +100M -ls找超大日志;Docker 用户运行docker system df看镜像/容器/卷占用
二、判断当前系统是否支持在线扩容
扩容方式完全取决于你的磁盘管理类型,必须先确认,否则命令会失败甚至损坏系统:
-
看是不是 LVM:运行
lsblk,如果看到/dev/mapper/xxx-root或centos-root这类设备挂载在/,且lvs、vgs命令能正常输出,说明是 LVM —— 这是最理想的情况,可在线操作 -
看有没有空闲空间:LVM 下执行
vgs,检查VFree列是否大于 0;若为 0,需先加物理盘或扩展原有分区(如 VMware 调整磁盘大小后执行pvresize /dev/sda2) -
非 LVM 的传统分区:
lsblk显示/dev/sda1直接挂载/,且无 mapper 设备 → 无法在线扩容,必须进 Live CD 或重启进救援模式,用gparted或parted调整分区表
三、按类型选择安全扩容路径
确认类型后,选对应方案。所有操作前请确保已备份关键数据或创建云主机快照:
-
LVM 在线扩容(推荐优先尝试):
① 扩展逻辑卷:lvextend -l +100%FREE /dev/mapper/centos-root(CentOS/RHEL)或lvextend -l +100%FREE /dev/ubuntu-vg/root(Ubuntu)
② 扩展文件系统:
• ext4:直接resize2fs /dev/mapper/centos-root
• xfs:必须写挂载点xfs_growfs /(写设备名会报错) -
从 /home 匀空间救急(LVM 且 /home 独立):
① 备份:tar cf /tmp/home.tar /home
② 卸载并删 LV:umount /home && lvremove /dev/mapper/centos-home
③ 扩根:lvextend -L +50G /dev/mapper/centos-root && xfs_growfs /
④ 重建 /home:lvcreate -L 20G -n home centos && mkfs.xfs /dev/mapper/centos-home && mount /home && tar xf /tmp/home.tar -C /home/ -
新增数据盘挂载到关键目录(通用、最安全):
比如/var/log占用大,可挂新盘到/var/log:
①fdisk /dev/vdb分区 →mkfs.xfs /dev/vdb1
②mount /dev/vdb1 /var/log(先停 rsyslog/journald)
③echo "/dev/vdb1 /var/log xfs defaults 0 0" >> /etc/fstab
四、扩容后必做的验证与防护
命令执行完不等于万事大吉,漏掉这步可能下次重启就起不来:
-
验证生效:再次
df -h确认/容量已变;lsblk看 LV 尺寸是否增长;xfs_info /或dumpe2fs -h /dev/mapper/centos-root | grep "Block count"核对底层块数 -
修复 initramfs(LVM 必做):执行
lsinitrd /boot/initramfs-$(uname -r).img | grep lvm,若无输出,立即运行dracut -f重建,否则重启可能卡在 “No root device found” -
设置自动清理机制:配置
logrotate限制日志大小;Docker 启用--log-opt max-size=10m --log-opt max-file=3;定期systemctl enable --now logrotate.timer











