当虚拟机服务器运行Docker久了后,发现Docker的文件越来越大,某天发现此台机上的数据库访问不了了,再重启数据库等日志,提示空间不足,查看磁盘空间:
root分区满载啊,前段时间还有不少空间的,查下什么大文件内容占了空间。
find / -xdev -size +100M -exec ls -l {} \;
最近用的docker越来越大 才导致磁盘满了。
那下面要么清理docker,要么扩展磁盘。
两步都做吧,先简单清理docker,或许可以清理一些空间出来。
先 docker images -a 看一下是不是有过多的 <none> 的镜像了,其中有一部分是这类镜像。
# 删除所有未打标签的镜像.
docker rmi $(docker images -aq -f "dangling=true")
容器的内容也是在存储层的。可以 docker ps -a 看一下是不是有很多之前的容器没有删掉的,可以 docker rm $(docker ps -aq -f "dangling=true") 来删除。
垃圾回收docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro spotify/docker-gc
有些容器明明stop了,但是它还是占着某些资源
docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
使用docker自带命令先清理一次。
docker system prune -a
注意:
这可能会清除掉images,慎用。
再进行了上面对docker处理后,下面对磁盘扩容。
扩展根分区 VMware分配空间选中虚拟机->虚拟机设置->添加=》硬盘->添加15G,可以看看第一张图的硬盘1是SCSI(0:0)新加的硬盘2是SCSI(0:1)
先看一下现有磁盘情况:
# fdisk -l
对新磁盘进行分区:
# fdisk /dev/sdb在fdisk的交互模式中,依次输入:
n --创建新分区 p --创建主分区 <回车> --默认分区编号 <回车> --默认起始扇区位置。 <回车> --默认结束扇区位置。 w --写入分区表这样就把整个磁盘分成了一个区。
再看一下现有磁盘情况:
# fdisk -l
已经多出了一个新分区:
将新分区用于扩展/root
先看一下卷分组:
# vgdisplay -v
可以看到当前卷分组名为"centos_h32"。
为之前新增的分区创建物理卷:
# pvcreate /dev/sdb1
查看结果:
# pvdisplay
扩展卷分组,"centos_h32"是vgdisplay命令查到的卷分组名:
# vgextend centos_h32 /dev/sdb1
提示成功扩展。
下面查看一下逻辑卷:
# lvdisplay
可以看到/dev/centos_h32/root目前的LV Size是17.47GiB。
下面扩展逻辑卷/dev/centos_h32/root:
# lvextend -L +15G /dev/centos_h32/root
注:+15G是我们新增加的分区大小。
扩展后,还要执行一步 将文件系统扩大:
# xfs_growfs /dev/centos_h32/root扩展完成。
因为安装CentOS用的xfs分区,所以使用命令xfs_growfs扩展文件系统大小。否则的话使用resize2fs命令。
查看结果:
# df -Th
/root已经扩充到33GiB: