Linux 上磁盘空间清理和磁盘扩容方法总结
经常遇到 linux 空间满了,但是垃圾清理软件又不如 windows 的丰富,本文记录.
系统情况
OS 环境为 VMware 上的 Ubuntu-server20 虚拟机,上面跑有 Kind 的 K8s 集群。最近服务突然异常,看 log 发现是磁盘满了,于是清理.
初始磁盘大小为 40G, 装好系统和必备环境之后大小为 23G/40G, 其中 4G 是 swap 分区.
apt 清理
首先是系统自带命令,放心使用.
1 | apt-get autoclean #清理旧版本的软件缓存 |
此步约释放了约 400MB 空间
应用清理
如果有 docker, docker system prune
即可自动清理
此步骤清理约 200MB 空间
其他应用的数据,比如我的是 K8s 集群的失效的 PV 和 PVC. 如果是其他应用请参照其他的.
即使服务已经删除,但是 PV© 不会自动删除,需要手动清理
1 | kubectl delete namespace deepflow --cascade=background |
此步骤清理约 3G 空间
手动清理
上面都是可以自动清理的,下面的很多应用产生的数据得手动清理
首先查看磁盘占用情况
1 | df -h |
此时可以看到,通常是 var 目录占大头.
如果有不需要的,可以一级一级查找手动删 (务必保证你知道在删什么).
终极方法
然而,最后也只省下大约 4G 空间,杯水车薪.
主观意向无法改变客观事实,那就只好启动终极方法–磁盘扩容
因为我是 VMware 虚拟机,扩容就相对方便。如果是实体机那就加硬盘咯.
分区未占满
有可能是分区够大,但是 lvm 逻辑卷没有占满。如下排查.
查看大小
1 | fdisk -l # 查看设备 |
如图,我的 lvm 逻辑分区没有占满磁盘分区.
如下命令扩充即可 (记得改自己的 df -h
显示的磁盘名字)
1 | lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv |
分区已满需要扩容
首先在虚拟机设置里增加磁盘大小,很简单不必多说.
1 | fdisk -l # 首先查看磁盘情况 |
如下配置,输入 m 获取帮助
然后输入 n
新建分区,一路回车即可 (默认会占满剩下的磁盘)
然后输入 w
写入退出即可.
然后输入 fdisk -l
会发现多了一个分区
如果要把这个新分区挂载到文件夹的话就输入如下.
1 | mount /dev/sda4 /<new-dir> |
如果是扩容就不需要挂载,直接进行下面
1 | partprobe # 更新分区表 |
记住这个卷信息名字,我的叫 ubuntu-vg
然后就回到上面分区未占满时扩展逻辑卷的步骤了。复述一遍
1 | lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv |
最后 df -h 正常,大功告成
参考文章
https://blog.csdn.net/qq_37437983/article/details/109259566
https://blog.csdn.net/qq_48922459/article/details/122229118
https://www.cnblogs.com/devilyouwei/p/14179231.html