rancher崩溃,docker磁盘空间爆满处理办法

2019-03-15  本文已影响0人  螃蟹和骆驼先生Yvan

ps出现问题:rancher报错说磁盘空间有问题:
2018-07-15 13:09:06,195 ERROR [d0f1bcf9-d467-4e5f-9cca-5306e6f49da7:4284] [volume:345->volumeStoragePoolMap:345] [volume.activate->(VolumeActivate)->volumestoragepoolmap.activate] [] [ecutorService-5] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [storage.volume.activate.reply;agent=32]: Error response from daemon: create logs: error looking up volume plugin rabbitmq: plugin "rabbitmq" not found
2018-07-15 13:09:06,196 ERROR [d0f1bcf9-d467-4e5f-9cca-5306e6f49da7:4284] [volume:345] [volume.activate] [] [ecutorService-5] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [storage.volume.activate.reply;agent=32]: Error response from daemon: create logs: error looking up volume plugin rabbitmq: plugin "rabbitmq" not found
遇到报错信息不要慌首先看到日志进行分析,其实我看到VolumeActivate这个我就已经知道大概磁盘出问题了,于是查看磁盘果然我发现磁盘被占满了


df -hl查看磁盘空间

我首先需要确认是不是docker占用了:
于是在docker目录下执行命令如图:

$cd /var/lib
$du   -sh    *
之前的占有

想我开始修复执行命令:

echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
    do
        echo "clean logs : $log"
        cat /dev/null > $log
    done
echo "==================== end clean docker containers logs   ========

在/etc/docker/daemon.json文件修改加上以下:20m是单个文件大小,3是数量,就是一个容器只生成60m的日志

"log-driver":"json-file",
"log-opts":{"max-size":"20m","max-file":"3"}

记得重启docker:

$systemctl daemon-reload
$systemctl restart docker
之后的占有

之后rancher就运行正常了,其实出现这个问题是我的锅,当初我没想到docker占用磁盘这么厉害。
其实还有一种修复方法就是迁移docker默认目录,不过比较繁琐我,我也说一下怎么操作
1、停止docker服务。
systemctl stop docker; //每个liunx版本的命令不一样
2、创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/home目录下面,我的/home目录大小有900G。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:mkdir -p /home/docker/lib
3、迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面
cp -R /var/lib/docker/* /home/docker/lib/
4、修改docker配置(/etc/systemd/system/docker.service.d/devicemapper.conf),在文件末添加 :
ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/home/docker/lib
注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”--insecure-registry=私服地址”。
5、重载配置,重启docker
systemctl daemon-reload;
systemctl restart docker;
systemctl enable docker;
6、启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。

第二种方式比较简单创建一个软连接:
首先停掉Docker服务:
systemctl restart docker或者service docker stop
然后移动整个/var/lib/docker目录到目的路径:
mv /var/lib/docker /prod/docker
ln -s /prod/docker /var/lib/docker
如图:


这个软连接挂载过去了-

这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,你可以在数据盘上看到容量变化。

上一篇下一篇

猜你喜欢

热点阅读