在 Ubuntu 16.04 上,如果 Docker 配置为使用设备映射器作为存储驱动程序直接lvm作为存储池。发生以下错误
#$ sudo systemctl status docker ● docker.service - Docker 应用容器引擎 已加载:已加载(/lib/systemd/system/docker.service;已启用;供应商预设:已启用) 活动:失败(结果:退出代码)自 2016-07-12 16:22:33 CEST;1 分钟 30 秒前开始 文档:https://docs.docker.com 进程:1880 ExecStart=/usr/bin/docker daemon -H fd://$DOCKER_OPTS(code=exited,status=1/FAILURE) 主 PID:1880(代码=已退出,状态=1/失败) 7 月 12 日 16:22:33 docker-lvm systemd[1]:正在启动 Docker 应用容器引擎…… 7月12日 16:22:33 docker-lvm docker[1880]: time="2016-07-12T16:22:33.304838820+02:00" level=fatal msg="启动守护进程时出错:初始化 graphdriver 时出错:devicemapper:不存在设备 ubuntu--vg-thinpool" 7 月 12 日 16:22:33 docker-lvm systemd[1]: docker.service: 主进程已退出,代码=已退出,状态=1/失败 7 月 12 日 16:22:33 docker-lvm systemd[1]: 无法启动 Docker 应用容器引擎。 7 月 12 日 16:22:33 docker-lvm systemd[1]: docker.service: 单元进入失败状态。 7 月 12 日 16:22:33 docker-lvm systemd[1]: docker.service: 失败,结果为“退出代码”。 7 月 12 日 16:22:33 docker-lvm systemd[1]: docker.service: 启动请求重复太快。 7 月 12 日 16:22:33 docker-lvm systemd[1]: 无法启动 Docker 应用容器引擎。
答案1
状态消息表明我的精简池不可用。lvdisplay
说了同样的话:
#$ sudo lvdisplay ubuntu-vg/thinpool --- 逻辑卷 --- LV 名称 thinpool VG 名称 ubuntu-vg LV UUID Or2cLx-ENFq-sZqh-kxUw-0FEQ-rEzi-vXCi3C LV 写访问 读/写 LV 创建主机,时间 docker-lvm,2016-07-12 15:57:06 +0200 LV 池元数据 thinpool_tmeta LV 池数据 thinpool_tdata LV 状态不可用 LV 大小 14,07 GiB 现行 LE 3601 段 1 分配继承 自动预读扇区
笔记:
LV Status NOT available
尝试激活它说:
#$ sudo lvchange -ay ubuntu-vg/thinpool /usr/sbin/thin_check:execvp 失败:没有此文件或目录 检查池 ubuntu-vg/thinpool 失败(状态:2)。需要手动修复!
配置了精简池的工具/etc/lvm/lvm.conf
,在那里我发现了以下段落:
# Configuration option global/thin_check_executable.
# The full path to the thin_check command.
# LVM uses this command to check that a thin metadata device is in a
# usable state. When a thin pool is activated and after it is
# deactivated, this command is run. Activation will only proceed if
# the command has an exit status of 0. Set to "" to skip this check.
# (Not recommended.) Also see thin_check_options.
# (See package device-mapper-persistent-data or thin-provisioning-tools)
# This configuration option has an automatic default value.
# thin_check_executable = "/usr/sbin/thin_check"
我查看了那里提到的包,发现这个包精简配置工具可用但未安装。
#$ sudo apt-cache 策略精简配置工具 精简配置工具: 已安装:(无) 候选版本:0.5.6-1ubuntu1 版本表: 0.5.6-1ubuntu1 500 500 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 软件包
安装软件包后,thinpools 实用程序可用。docker-thinpool 的手动激活成功,系统启动时卷也被激活,docker 成功启动。