Ubuntu系统根目录使用率突然超过90%,但是在/目录下没有发现大体积的文件或日志。
df -h
du -ahx / | sort -rh | head -50
参数说明:
如果有文件被删除,但是某个进程仍然占用它,磁盘空间不会释放。
lsof | grep deleted
重点关注 "/var/log/","/tmp" 相关的进程。
确认相关进程后,可以重启服务,强制释放资源。
systemctl restart <服务名>
返回结果说明:
apache2 1234 www-data 4r REG 8,1 10485760 1234567 /var/log/apache2/access.log (deleted)
mysqld 5678 mysql 6u REG 8,1 524288000 9876543 /tmp/mysql.XX123456 (deleted)
字段 | 含义 |
---|---|
COMMAND | 进程名称(apache2、mysqld) |
PID | 进程 ID(1234、5678) |
USER | 进程所属用户(www-data、mysql) |
FD | 文件描述符(4r、6u) |
TYPE | 文件类型(REG 表示常规文件) |
DEVICE | 设备号(8,1) |
SIZE/OFF | 文件大小(10485760 = 10MB,524288000 = 500MB) |
NODE | 文件的 inode 号 |
NAME | 文件路径(后面带 (deleted) 说明已被删除) |
分析:
journalctl --vacuum-size=100M
或者限制保留 5 天的日志:
journalctl --vacuum-time=5d
du -sh /var/log/*
rm -rf /var/log/*.gz /var/log/*.1
sudo snap list --all
sudo snap remove <旧版本>
sudo snap set system refresh.retain=2 # 仅保留 2 个版本
apt clean
apt autoclean
清理软件包:
apt autoremove
LVM快照(snapshot)会占用大量磁盘空间,如果快照没有及时删除,磁盘可能会被占满。
lvs
返回样例:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- 100.00G
snap-lv ubuntu-vg swi-a-s--- 10.00G ubuntu-lv 90.00
如果有类似 snap-lv 这样的 snapshot 逻辑卷,并且 Data% 接近 100%,说明快照占用了大量空间。
lvremove /dev/ubuntu-vg/snap-lv
然后确认LVM逻辑卷的空间是否释放
vgs
lvs
df -h
如果某个目录(如 /mnt、/home、/data)被单独挂载了一个分区,但你在未挂载状态下删除了大量数据或者生成了大量数据,空间仍可能被持续占用。
mount | column -t
如果 /mnt 或 /home 等目录挂载了其他分区,则需要临时取消挂载,然后检查原本的 /mnt 或 /home 目录下是否有残留的大文件:
umount /mnt
du -sh /mnt/*
如果发现有大文件,可以进行备份,然后手动删除:
rm -rf /mnt/*
然后重新挂载相应分区或Filesystem:
mount -a
如果inode(文件索引)被用完,系统仍然可能报告磁盘使用率高。
df -i
如果 Use%接近100%,说明inode已满。
find / -xdev -type d -exec bash -c 'echo -n "{}: "; find "{}" -type f | wc -l' \; | sort -nr | head -10
如果发现如果 /var/spool/、/tmp/ 或 /var/lib/docker/ 里有大量小文件,可以进行清理。清理后重新检查inode是否释放。
rm -rf /var/spool/*
rm -rf /var/lib/docker/containers/*
如果当前系统的swap交换分区是基于LVM创建的,则可能会占用/dev/mapper/ubuntu--vg-ubuntu--lv的空间。
swapon --show
样例返回:
NAME TYPE SIZE USED PRIO
/dev/mapper/ubuntu--vg-swap_1 partition 8G 4G -2
如果swap过大,并且不需要那么多交换空间,我们可以进行适当的减小或者移除swap,然后重新确认磁盘空间。
swapoff -a
lvreduce -L 2G /dev/mapper/ubuntu--vg-swap_1
mkswap /dev/mapper/ubuntu--vg-swap_1
swapon -a
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。