故障现象
- CentOS系统启动时出现
Failed to mount /sysroot
错误,导致系统无法正常启动。 - 正常进入系统后,docker无法正常使用,出现
Failed to connect to containerd: failed to dial "/var/run/docker/containerd/docker-containerd.sock": context deadline exceeded
错误。
故障修复
首先我们处理下Failed to mount /sysroot
错误,这个错误一般是主机文件系统损坏引起的,可使用xfs-repair命令进行修复。
xfs_repair -v /dev/dm-0
## 重启服务器
reboot
如xfs_repair -v /dev/dm-0命令无效,可添加参数L:
## -L参数(-L:强制清空日志,包括元数据更改)此参数可能会丢失文件系统元数据,慎用,使用之前建议先备份元数据。
xfs_repair -v -L /dev/dm-0
到这里,应该可以正常进入系统了。由于我这边的服务是通过docker部署的,发现docker无法正常启动。 谷歌半天没有很好的解决方法,只能重装docker,由于这台服务器无法访问公网,本次采用离线部署docker方式。
## 先卸载可能存在的旧版本docker相关的包或者依赖
yum remove -y docker-ce rpm -e container-selinux
## 备份原来数据
mv /var/lib/docker /var/lib/docker.bak
## 本地电脑下载安装包,然后scp到服务器
https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz
## 服务器上解压缩
tar -zxf docker-19.03.9.tgz
## 解压的docker文件夹全部移动至/usr/bin目录
cp -p docker/* /usr/bin
将docker注册为系统服务:
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
-H tcp://0.0.0.0:4243 \
-H unix:///var/run/docker.sock \
--selinux-enabled=false \
--log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
重启守护进程:
systemctl daemon-reload
启动docker服务:
systemct start docker
systemctl status docker
systemctl enable docker
查看docker信息:
# 版本
docker version
# 详细信息
docker info
标签:repair,dm,##,虚拟机,系统故障,服务器,xfs,docker
From: https://blog.51cto.com/wutengfei/5948089