Direct-LVM在重新启动后停止工作

为了在生产环境中运行Docker,我按照https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production

一切似乎工作正常。 但是如果我因为某种原因重新启动,一切都会混乱起来。 即使我从/var/lib/docker lvremove, vgremove and pvremove删除所有内容,并且运行lvremove, vgremove and pvremove它仍然会显示Error starting daemon: error initializing graphdriver: devmapper: Unable to take ownership of thin-pool (docker-thinpool) that already has used data blocks和抗拒开始。

我知道必须有一些文档说明如何使direct-lvm设置持久保持重新启动。 有些东西会在重启后自动恢复设置。 我找不到任何东西。

那么如何实现我的direct-lvm设置的持久性呢?

在一个错误报告埃里克巴黎说:

如果您正在使用设备映射程序(而不是回送)/ var / lib / docker包含元数据通知docker有关设备映射程序存储区的内容。 如果你删除了/ var / lib / docker那元数据丢失了。 然后,Docker能够检测到精简池有数据,但docker工具无法使用该信息。 唯一的解决scheme是删除精简池并重新创build精简池,以便精简池和/ var / lib / docker中的元数据将为空。

我遇到了同样的问题,因为你提到的文档的措辞。 有rm -rf /var/lib/docker.bk这一步,直到那时我才删除原来的文件,导致失败。

使用pvremove -ff /dev/sda2 (我的lvm驱动器)并重新创build,擦除lvm分区中的签名,它对我pvremove -ff /dev/sda2

我认为你的设置应该已经是持久的了。

对我来说,另一个错误发生后,重新启动lsblk没有显示我的lvm卷,既不ls /dev/mapper 。 我正在使用Ubuntu,并提交一条消息说,其默认设置不(完全?)支持精简configuration。 在sudo apt-get install thin-provisioning-tools命令sudo vgchange -ay docker以及重新启动为我工作。

幸运的是,Docker社区中的某个人了解了这个问题,并与他分享了解决scheme。 解决scheme是: https : //github.com/projectatomic/docker-storage-setup 。

 apt install -y thin-provisioning-tools mkdir /usr/lib/docker-storage-setup mkdir /etc/sysconfig git clone https://github.com/projectatomic/docker-storage-setup.git /opt/docker-storage-setup cp /opt/docker-storage-setup/docker-storage-setup.sh /usr/bin/docker-storage-setup cp /opt/docker-storage-setup/docker-storage-setup.service /lib/systemd/system/docker-storage-setup.service cp /opt/docker-storage-setup/libdss.sh /usr/lib/docker-storage-setup VG=docker DATA_SIZE=95%FREE STORAGE_DRIVER=devicemapper /opt/docker-storage-setup/docker-storage-setup.sh systemctl enable docker-storage-setup lvrename docker/thinpool docker/docker-pool 

并且/lib/systemd/system/docker.service中的Systemd服务文件中的相关部分需要更新为--storage-opt=dm.thinpooldev=/dev/mapper/docker-docker--pool