我的这个问题是
docker
引起的(其他会将数据或日志写入更目录的也会引发这个问题)docker 有大量的日志输出,直接把 50G 空间(默认的root更目录)给占满了
导致系统需要根目录参与很多功能都用不了
例如:
cd 后Tab补全会提示如下内容 -bash: cannot create temp file for here-document: No space left on device 无法为立即文档创建临时文件: 设备上没有空间
#查看磁盘占用情况
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 360M 3.5G 10% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/cl00-root 50G 50G 20K 100% /
/dev/sda2 976M 188M 722M 21% /boot
/dev/mapper/cl00-home 541G 19G 522G 4% /home
/dev/sda1 599M 6.8M 593M 2% /boot/efi
tmpfs 781M 1.2M 780M 1% /run/user/42
overlay 50G 50G 20K 100% /var/lib/docker/overlay2/50c36ea855f6be6fb4b694cb8aa8a155ac5f41c792f542261de54e5d63a6a147/merged
shm 64M 4.0K 64M 1% /var/lib/docker/containers/ccf3badd71b21e99798b37e9fa5f040d48ee43b79d46d6bdd1580b519b15c36b/mounts/shm
tmpfs 781M 0 781M 0% /run/user/1000
可以看到我的/dev/mapper/cl00-root
已经占用100%
了
命令find / -xdev -size +100M -exec ls -l {} \;
查询问题大小大于100m
的文件
[root@localhost containers]# find / -xdev -size +100M -exec ls -l {} \;
-rw-r-----. 1 root root 45823135744 6月 20 10:51
/var/lib/docker/containers/ccf3badd71b21e99798b37e9fa5f040d48ee43b79d46d6bdd1580b519b15c36b/ccf3badd71b21e99798b37e9fa5f040d48ee43b79d46d6bdd1580b519b15c36b-json.log
-rw-r--r--. 1 root root 106599076 10月 12 2021 /var/cache/PackageKit/8/metadata/AppStream-8-x86_64/packages/firefox-78.14.0-1.el8_4.x86_64.rpm
-rw-r--r--. 1 root root 128706140 10月 12 2021 /var/cache/PackageKit/8/metadata/BaseOS-8-x86_64/packages/linux-firmware-20201218-102.git05789708.el8.noarch.rpm
-rwxr-xr-x. 1 root root 116368288 6月 2 2021 /usr/bin/dockerd
-rwxr-xr-x. 1 root root 234799856 4月 10 2020 /usr/lib64/firefox/libxul.so
然后根据查询结果依次排查, 我这里主要是第一项docker
引起的, 所以我进到docker目录查看详情
进入到问题目录
#查看目录下的占用情况
du -sh *
72K buildkit
43G containers
6.7M image
52K network
3.6G overlay2
0 plugins
0 runtimes
0 swarm
0 tmp
0 trust
24K volumes
可以看到我的containers
文件占用了43G(根目录一共才50G)
最简单的方式是直接删掉占用大的文件(确定无用后), 一些不要的日志缓存什么的直接删掉就好
如果其他数据盘还有足够的空间, 保险起见我们可以将文件移动到别的盘下存储, 将更目录的空间空出来
使用mv
命令移动文件
#移动文件
mv `参数` `占用大的文件` `目标目录`
#软连接
ln -s `移动后的目标目录` `占用大的文件`
例如:
mv docker /home/docker
ln -s /home/docker docker
-f
: 强制删除-i
: 交互模式,在删除前询问用户是否操作-r
: 递归删除,常用在目录的删除