Docker配置direct-lvm模式
转载:https://blog.csdn.net/ImmutableWxy/article/details/105707547
1. 停止Docker
$ sudo systemctl stop docker
2. 安装依赖包
device-mapper-persistent-data,lvm2, and all dependencies
3. 创建物理卷/dev/xvdf来替换块设备
$ sudo pvcreate /dev/xvdf
4. 用vgcreate命令在同一个设备上创建docker卷组
$ sudo vgcreate docker/dev/xvdf
5. 用lvcreate命令创建thinpool(数据)和thinpoolmeta(元数据)两个逻辑卷
最后一个参数指定空闲空间的数量,以允许在空间运行低时自动扩展数据或元数据,作为临时的权宜之计。这些是推荐的值。
$ sudo lvcreate--wipesignatures y -n thinpool docker -l 95%VG
$ sudo lvcreate--wipesignatures y -n thinpoolmeta docker -l 1%VG
6. 用lvconvert命令把thinpool数据卷和thinpoolmeta元数据卷换为一个精简池,且此精简池使用原数据卷的名字
$ sudo lvconvert -y --zero n-c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
7. 通过lvm profile配置精简池的自动扩容
$ sudo vi/etc/lvm/profile/docker-thinpool.profile
8. 指定thin_pool_autoextend_threshold和thin_pool_autoextend_percent的值
thin_pool_autoextend_threshold:当达到使用空间的指定阈值(百分数)后,lvm就会试图尝试自动扩展可用的空间(100=禁用)。
thin_pool_autoextend_percent:当磁盘每次达到上面定义的阈值后,自动再扩展的百分比数(0=禁用)。
示例:
当磁盘使用达到80%时,再扩展当前容量的10%。更新/etc/lvm/profile/docker-thinpool.profile
activation {
thin_pool_autoextend_threshold=80
thin_pool_autoextend_percent=10
}
保存文件。
9. 用lvchange命令激活LVM profile
$ sudo lvchange--metadataprofile docker-thinpool docker/thinpool
10. 对主机上的逻辑卷启用监视
如果没有这个步骤,即使在LVM配置文件出现时也不会发生自动扩展。
$ sudo lvs -o+seg_monitor
11. 备份Docker原有数据
如果曾经在这个主机上运行过Docker,或者如果/var/ lib/docker存在,那么将它移出后,Docker就可以使用新的LVM池来存储镜像和容器的内容了。
$ mkdir /var/lib/docker.bk
$ mv /var/lib/docker/*/var/lib/docker.bk
12. 编辑/etc/docker/daemon.json
配置devicemapper存储驱动程序所需的选项。如果该文件以前是空的,那么现在应该包含以下内容:
{
"storage-driver":"devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/docker-thinpool",
"dm.use_deferred_removal=true",
"dm.use_deferred_deletion=true"
]
}
注意:
延迟删除选项,dm.use_deferred_deletion=true,在使用默认内核版本3.18时还不支持RHEL、CentOS或Ubuntu 14.04。
13. 启动Docker
systemd:
$ sudo systemctl start docker
service:
$ sudo service docker start
14. 查看Docker启动信息
$ docker info
15. 验证配置正确后,就可以删除/var/lib/docker.bk目录了
$ rm -rf /var/lib/docker.bk