docker (8)存储驱动2 Device Mapper 配置Docker 设置 direct-lvm(自动、手动)

Device Mapper 配置

默认情况下,Device Mapper 采用 loopback mounted sparse file 作为底层实现来为 Docker 提供存储支持

为了达到 Device Mapper 在生产环境中的最佳性能,读者需要将底层实现修改为 direct-lvm 模式。

这种模式下通过使用基于裸块设备(Raw Block Device)的 LVM 精简池(LVM thin pool)来获取更好的性能。

在 Docker 17.06 以及更高的版本中可以配置 direct-lvm 作为存储驱动。

下面的步骤会将 Docker 配置存储驱动为 Device Mapper,并使用 direct-lvm 模式。

Docker 自动设置 direct-lvm

1) 将下面的存储驱动配置添加到 /etc/docker/daemon.json 当中。

{
"storage-driver": "devicemapper",
"storage-opts": [
        "dm.directlvm_device=/dev/sdb",
        "dm.thinp_percent=95",
        "dm.thinp_metapercent=1",
        "dm.thinp_autoextend_threshold=80",
        "dm.thinp_autoextend_percent=20",
        "dm.directlvm_device_force=false"
    ]
}

Device Mapper 和 LVM 是很复杂的知识点,下面简单介绍一下各配置项的含义。

  • dm.directlvm_device:设置了块设备的位置。为了存储的最佳性能以及可用性,块设备应当位于高性能存储设备(如本地 SSD)或者外部 RAID 存储阵列之上。
  • dm.thinp_percent=95:设置了镜像和容器允许使用的最大存储空间占比,默认是 95%。
  • dm.thinp_metapercent:设置了元数据存储(MetaData Storage)允许使用的存储空间大小。默认是 1%。
  • dm.thinp_autoextend_threshold:设置了 LVM 自动扩展精简池的阈值,默认是 80%。
  • dm.thinp_autoextend_percent:表示当触发精简池(thin pool)自动扩容机制的时候,扩容的大小应当占现有空间的比例。
  • dm.directlvm_device_force:允许用户决定是否将块设备格式化为新的文件系统。


2) 重启 Docker。

3) 确认 Docker 已成功运行,并且块设备配置已被成功加载。

 

 

手动配置 Device Mapper 的 direct-lvm

1) 块设备(Block Device)

在使用 direct-lvm 模式的时候,读者需要有可用的块设备。这些块设备应该位于高性能的存储设备之上,比如本地 SSD 或者外部高性能 LUN 存储。

如果 Docker 环境部署在企业私有云(On-Premise)之上,那么外部 LUN 存储可以使用 FC、iSCSI,或者其他支持块设备协议的存储阵列。

如果 Docker 环境部署在公有云之上,那么可以采用公有云厂商提供的任何高性能的块设备(通常基于 SSD)。

2) LVM配置

Docker 的 Device Mapper 存储驱动底层利用 LVM(Logical Volume Manager)来实现,因此需要配置 LVM 所需的物理设备、卷组、逻辑卷和精简池。

读者应当使用专用的物理卷并将其配置在相同的卷组当中。这个卷组不应当被 Docker 之外的工作负载所使用。

此外还需要配置额外两个逻辑卷,分别用于存储数据和源数据信息。

要创建 LVM 配置文件、指定 LVM 自动扩容的触发阈值,以及自动扩容的大小,并且为自动扩容配置相应的监控,保证自动扩容会被触发。

$ sudo systemctl stop docker

 

$ sudo pvcreate /dev/sdb

 

$ sudo vgcreate docker /dev/sdb

 

$ sudo lvcreate --wipesignatures y -n thinpool docker -l 95%VG
$ sudo lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG

 

$ sudo lvconvert -y \
--zero n \
-c 512K \
--thinpool docker/thinpool \
--poolmetadata docker/thinpoolmeta
  1.  
$ sudo vi /etc/lvm/profile/docker-thinpool.profile
activation {
  thin_pool_autoextend_threshold=80
  thin_pool_autoextend_percent=20
}

 

$ sudo lvchange --metadataprofile docker-thinpool docker/thinpool

 

$ sudo lvs -o+seg_monitor

 

$ mkdir /var/lib/docker.bk
$ mv /var/lib/docker/* /var/lib/docker.bk

 

3) Docker 配置

修改 Docker 配置文件之前要先保存原始文件(etc/docker/daemon.json),然后再进行修改。

环境中的 dm.thinpooldev 配置项对应值可能跟下面的示例内容有所不同,需要修改为合适的配置。

{
    "storage-driver": "devicemapper",
    "storage-opts": [
        "dm.thinpooldev=/dev/mapper/docker-thinpool",
        "dm.use_deferred_removal=true",
        "dm.use_deferred_deletion=true"
    ]
}

修改并保存配置后,读者可以重启 Docker daemon。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值