经常遇到linux空间满了, 但是垃圾清理软件又不如windows的丰富, 本文记录.

系统情况

OS环境为VMware上的Ubuntu-server20虚拟机, 上面跑有 Kind 的K8s集群. 最近服务突然异常, 看log发现是磁盘满了, 于是清理.

初始磁盘大小为40G, 装好系统和必备环境之后大小为 23G/40G, 其中4G是swap分区.

apt清理

首先是系统自带命令, 放心使用.

1
2
3
apt-get autoclean              #清理旧版本的软件缓存
apt-get clean #清理所有软件缓存
apt-get autoremove #删除系统不再使用的孤立软件

此步约释放了约400MB空间

应用清理

如果有docker, docker system prune 即可自动清理
此步骤清理约 200MB 空间

其他应用的数据, 比如我的是K8s集群的失效的PV和PVC. 如果是其他应用请参照其他的.
即使服务已经删除, 但是PV©不会自动删除, 需要手动清理

1
2
3
4
5
6
7
kubectl delete namespace deepflow --cascade=background
# 如果整个ns的资源都不需要, 上面这个命令可以直接删除
# 如果只需要删除无用pv和pvc, 用下面的
kubectl get pvc
kubectl delete pvc -n <your-ns> # 先删pvc
kubectl get pv
kubectl delete pv -n <your-ns> # 再删pv

此步骤清理约3G空间

手动清理

上面都是可以自动清理的, 下面的很多应用产生的数据得手动清理

首先查看磁盘占用情况

1
2
df -h
du -sh /* --exclude proc
img

此时可以看到, 通常是var目录占大头.
如果有不需要的, 可以一级一级查找手动删(务必保证你知道在删什么).

终极方法

然而, 最后也只省下大约4G空间, 杯水车薪.
主观意向无法改变客观事实, 那就只好启动终极方法–磁盘扩容
因为我是VMware虚拟机, 扩容就相对方便. 如果是实体机那就加硬盘咯.

分区未占满

有可能是分区够大, 但是lvm逻辑卷没有占满. 如下排查.
查看大小

1
2
3
fdisk -l # 查看设备
lsblk # 查看文件系统分区
vgdisplay # 查看lvm情况
img
img

如图, 我的lvm逻辑分区没有占满磁盘分区.

如下命令扩充即可 (记得改自己的df -h显示的磁盘名字)

1
2
3
4
5
6
7
8
9
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

cat /etc/fstab # 查看文件系统类型

# 如果是ext类型就如下
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

# 如果是xfs则如下
xfs_growfs /dev/mapper/ubuntu--vg-ubuntu--lv

分区已满需要扩容

首先在虚拟机设置里增加磁盘大小, 很简单不必多说.

1
2
fdisk -l # 首先查看磁盘情况
fdisk /dev/sda # 开始配置

如下配置, 输入m获取帮助

img

然后输入n新建分区, 一路回车即可(默认会占满剩下的磁盘)

img

然后输入w写入退出即可.
然后输入fdisk -l会发现多了一个分区

img

如果要把这个新分区挂载到文件夹的话就输入如下.

1
2
3
4
mount /dev/sda4 /<new-dir>
#sda4是新的分区, 可能不一样.后面的 new-dir 是你要挂载的文件夹
vim /etc/fstab
#设置开机自动挂载, 添加以下内容/dev/sda4 /<new-dir> ext4 defaults 0 2

如果是扩容就不需要挂载, 直接进行下面

1
2
3
partprobe  # 更新分区表
pvcreate /dev/sda4 # 创建新逻辑卷
vgdisplay # 查看卷信息, 下一步用

记住这个卷信息名字, 我的叫ubuntu-vg

img

然后就回到上面分区未占满时扩展逻辑卷的步骤了. 复述一遍

1
2
3
4
5
6
7
8
9
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

cat /etc/fstab # 查看文件系统类型

# 如果是ext类型就如下
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

# 如果是xfs则如下
xfs_growfs /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