docker 启动panic invalid page type 13:10

1. 项目场景

HOST OS:Kylin Server 10 SP1
DOCKER: docker-ce-18.09.7


2. 问题描述及原因分析

机器异常断电,磁盘分区损坏,经过磁盘修复后,docker服务本身启动不了。
systemctl restart docker及 systemctl status docker日志如下:
在这里插入图片描述在这里插入图片描述从上获取不到任何信息,手动dockerd启动服务输出如下:
在这里插入图片描述
从以上图片获取到kernel does not support cgroup blkio weight/weight_device的警告,通过查阅资源,发现该警告对此次问题无影响,主要问题为panic: invalid page: 13:10这一行,这一问题是关键,初步判断是docker overlay2的文件系统损坏。

通过df -hl及mount查看,如下:
在这里插入图片描述/var/lib/docker是由单独的一块分区来存储,卸载,对磁盘进行e2fsck修复操作,然后再次dockerd执行,依然报panic: invalid page: 13:10。
尝试将/var/lib/docker/里面的文件移走到其他目录,docker服务可以正常启动。将其移回来,还是启动问题,确认docker本身没有问题,但docker overlay2文件系统遭到了损坏,需要做处理。

  • 停止Docker and containerd:
systemctl stop docker containerd
  • 清除containerd数据目录(如果需要,Docker会在启动时重新生成):
rm -rf /var/lib/containerd/
  • 找到Docker的数据库文件,通常是local-kv.db:
    find /var/lib/docker -type f -size -5M -name '*.db' | grep -v overlay2
  • 将这些文件重命名为.bak:
mv /var/lib/docker/network/files/local-kv.db{,.bak}
  • 启动docker服务
systemctl start docker

如下:
在这里插入图片描述


3. 解决方案

  • 停止Docker and containerd:
systemctl stop docker containerd
  • 清除containerd数据目录(如果需要,Docker会在启动时重新生成):
rm -rf /var/lib/containerd/
  • 找到Docker的数据库文件,通常是local-kv.db:
    find /var/lib/docker -type f -size -5M -name '*.db' | grep -v overlay2
  • 将这些文件重命名为.bak:
mv /var/lib/docker/network/files/local-kv.db{,.bak}
  • 启动docker服务
systemctl start docker

如下:
在这里插入图片描述


4. 参考方案

https://zhangguanzhang.github.io/2020/01/08/docker-panic-invalid-page-type/#
https://github.com/containerd/containerd/issues/3347
https://github.com/moby/moby/issues/37238
https://copyfuture.com/blogs-details/20210419151120930u

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值