小编Tom*_*Tom的帖子

如何为Docker清除Thinpool设备

正如在生产系统上所建议的那样,我在具有devicemapper和Thinpool设备的Redhat系统上运行docker。现在,当我想重新安装docker时,我需要两个步骤:

1)删除docker目录(在我的情况下为/ area51 / docker)
2)清除Thinpool设备

搬运工文档指出,使用与dm.metadev和dm.datadev选项devicemapper时,清洁devicemapper的最简单的方法是:

如果设置新的元数据池,则必须有效。这可以通过将前4k设为零以指示空的元数据来实现,如下所示:

$ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
Run Code Online (Sandbox Code Playgroud)

不幸的是,根据文档,dm.metadatadev不推荐使用,而是改为使用dm.thinpooldev

我的thinpool是按照此docker 指令创建的, 因此,我的设置现在看起来像这样:

cat /etc/docker/daemon.json  
{
        "storage-driver": "devicemapper", 
        "storage-opts": [ 
        "dm.thinpooldev=/dev/mapper/thinpool_VG_38401-thinpool",
        "dm.basesize=18G"
        ]  
}
Run Code Online (Sandbox Code Playgroud)

在devicemapper目录下,我看到以下Thinpool设备

ls -l /dev/mapper/thinpool_VG_38401-thinpool*
lrwxrwxrwx 1 root root 7 Dec  6 08:31 /dev/mapper/thinpool_VG_38401-thinpool -> ../dm-8
lrwxrwxrwx 1 root root 7 Dec  6 08:31 /dev/mapper/thinpool_VG_38401-thinpool_tdata -> ../dm-7
lrwxrwxrwx 1 root root 7 Dec  6 08:31 /dev/mapper/thinpool_VG_38401-thinpool_tmeta -> ../dm-6
Run Code Online (Sandbox Code Playgroud)

因此,在成功运行docker之后,我尝试如上所述重新安装并通过在tmeta设备中写入4K零来清除Thinpool并重新启动docker:

dd if=/dev/zero of=/dev/mapper/thinpool_VG_38401-thinpool_tmeta bs=4096 count=1  
systemctl …
Run Code Online (Sandbox Code Playgroud)

redhat device-mapper docker

5
推荐指数
0
解决办法
727
查看次数

标签 统计

device-mapper ×1

docker ×1

redhat ×1