前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker配置direct-lvm模式

docker配置direct-lvm模式

作者头像
shaonbean
发布2019-05-26 09:21:07
1.8K0
发布2019-05-26 09:21:07
举报
文章被收录于专栏:运维前线

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434613

DOCKER配置DIRECT-LVM模式

在Docker 17.06及更高版本中,Docker可以为您管理块设备,简化direct-lvm模式配置。这仅适用于新的Docker设置。只能使用一个块设备。如果您需要使用多个块设备,请手动配置direct-lvm模式。添加了以下新的配置选项:

  • 编辑/etc/docker/daemon.json文件并设置适当的选项,然后重新启动Docker以使更改生效。以下daemon.json设置了上表中的所有选项。笔者着急实验,直接新建/daemon.json的方式配置的DIRECT-LVM,建议手动参考下面手动配置
代码语言:javascript
复制
{
  "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"
  ]
}

手动配置DIRECT-LVM模式

  • 1、确定要使用的块设备。该设备位于 /dev/(例如/dev/sdb)下并且需要足够的可用空间来存储主机运行的工作负载的映像和容器层。理想的是固态硬盘。
  • 2、停止docker
代码语言:javascript
复制
$ sudo systemctl stop docker
  • 3、安装下面软件包
代码语言:javascript
复制
# RHEL / CentOS: device-mapper-persistent-data, lvm2, and all dependencies
yum install device-mapper-persistent-data lvm2 -y
  • 4、创建pv
代码语言:javascript
复制
$ sudo pvcreate /dev/sdb

Physical volume "/dev/sdb" successfully created.
  • 5、docker使用该vgcreate 命令在同一设备上创建一个卷组
代码语言:javascript
复制
$ sudo vgcreate docker /dev/sdb

Volume group "docker" successfully created
  • 6、创建两个命名的逻辑卷thinpool,thinpoolmeta使用该 lvcreate命令。最后一个参数指定可用空间的大小,以便在空间不足时自动扩展数据或元数据,作为临时性缺口。这些是推荐值。
代码语言:javascript
复制
$ sudo lvcreate --wipesignatures y -n thinpool docker -l 95%VG

Logical volume "thinpool" created.

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

Logical volume "thinpoolmeta" created.
  • 7、使用该lvconvert命令将卷转换为精简池和精简池元数据的存储位置。
代码语言:javascript
复制
$ sudo lvconvert -y \
--zero n \
-c 512K \
--thinpool docker/thinpool \
--poolmetadata docker/thinpoolmeta

WARNING: Converting logical volume docker/thinpool and docker/thinpoolmeta to
thin pool's data and metadata volumes with metadata wiping.
THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Converted docker/thinpool to thin pool.
  • 8、通过lvm配置文件配置精简池的自动扩展。
代码语言:javascript
复制
$ sudo vi /etc/lvm/profile/docker-thinpool.profile
  • 9、指定thin_pool_autoextend_threshold和thin_pool_autoextend_percent的值。
代码语言:javascript
复制
thin_pool_autoextend_threshold是lvm 尝试自动扩展可用空间之前所用空间的百分比(100 =禁用,不推荐)。
thin_pool_autoextend_percent 是自动扩展时添加到设备的空间量(0 =禁用)。
# 以下示例在磁盘使用率达到80%时增加了20%的容量
activation {
  thin_pool_autoextend_threshold=80
  thin_pool_autoextend_percent=20
}
  • 10、使用该lvchange命令应用LVM配置文件。
代码语言:javascript
复制
$ sudo lvchange --metadataprofile docker-thinpool docker/thinpool

Logical volume docker/thinpool changed.
  • 11、启用对主机上逻辑卷的监视。没有这一步,即使存在LVM配置文件,也不会自动扩展。
代码语言:javascript
复制
$ sudo lvs -o+seg_monitor

LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Monitor
thinpool docker twi-a-t--- 95.00g             0.00   0.01                             monitored
  • 12、如果之前曾经在此主机上运行过Docker,或者/var/lib/docker/ 存在,请将其移出,以便Docker可以使用新的LVM池来存储映像和容器的内容。
代码语言:javascript
复制
$ mkdir /var/lib/docker.bk
$ mv /var/lib/docker/* /var/lib/docker.bk
如果以下任何步骤失败并且需要恢复,则可以删除 /var/lib/docker并替换它/var/lib/docker.bk,这一步很重要 几乎都用得到
  • 13、编辑/etc/docker/daemon.json并配置devicemapper存储驱动程序所需的选项 。如果该文件以前是空的,它现在应该包含以下内容:
代码语言:javascript
复制
{
    "storage-driver": "devicemapper",
    "storage-opts": [
    "dm.thinpooldev=/dev/mapper/docker-thinpool",
    "dm.use_deferred_removal=true",
    "dm.use_deferred_deletion=true"
    ]
}
  • 14、重启docker并验证Docker是否正在使用新配置docker info
代码语言:javascript
复制
[root@vm-06 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.03.1-ce
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3kB
 Base Device Size: 10.74GB
 Backing Filesystem: xfs
 Udev Sync Supported: true
 Data Space Used: 19.92MB
 Data Space Total: 204GB
 Data Space Available: 204GB
 Metadata Space Used: 266.2kB
 Metadata Space Total: 2.143GB
 Metadata Space Available: 2.143GB
 Thin Pool Minimum Free Space: 20.4GB
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.146-RHEL7 (2018-01-22)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-862.3.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.637GiB
Name: vm-06
ID: RXKR:KEWO:WHKD:TLRV:6JYU:AXI2:422R:VTVS:EDGB:KAHU:2J2J:NU62
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年06月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DOCKER配置DIRECT-LVM模式
    • 手动配置DIRECT-LVM模式
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档