50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

CentOS 下修改 Devicemapper 存储驱动为 Direct-lvm 模式

  • 2020-04-12
  • 本文字数:1647 字

    阅读完需:约 5 分钟

CentOS下修改Devicemapper存储驱动为Direct-lvm模式

Device Mapper 是基于内核的框架,支持 Linux 上的许多高级卷管理技术。Docker 的 devicemapper 存储驱动程序利用此框架的精简配置和快照功能进行映像和容器管理。本文将 Device Mapper 存储驱动程序称为 devicemapper,并将内核框架称为 Device Mapper。


对于支持它的系统,Linux 内核中包含支持。但是,Docker 需要使用特定的配置。例如,在 RHEL 或 CentOS 操作系统中,Docker 将默认为 overlay,overlay 官方不建议在生产中使用。


该 devicemapper 驱动程序使用专用于 Docker 的块设备,并在块级而非文件级进行操作。这些设备可以通过将物理存储添加到 Docker 主机来扩展,并且比在操作系统级别使用文件系统性能更好。

配置用于生产的 direct-lvm 驱动模式

CentOS 安装好 Docker 后,默认 Storage Driver 为 devicemapper 的 loop-lvm 模式,这种模式从性能和稳定性上都不可靠,此模式仅适用于测试环境。

配置 direct-lvm 模式

生产环境使用 devicemapper 存储驱动程序的主机必须使用 direct-lvm 模式。此模式使用块设备来创建精简池。这比使用 loop-lvm 设备更快,更有效地使用系统资源,并且块设备可以根据需要扩增。


在 Docker 17.06 及更高版本中,Docker 可以为您管理块设备,简化 direct-lvm 模式的配置。这仅适用于新的 Docker 设置,并且只能使用一个块设备。


注:如果您需要使用多个块设备,需要手动配置 direct-lvm 模式。



编辑 daemon.json 文件并设置适当的选项,然后重新启动 Docker 以使更改生效。以下 daemon.json 设置了上表中的所有选项。


手动配置 DIRECT-LVM 模式

假定有一块 100G 空闲块设备 /dev/sdb 。设备标识符和音量大小在您的环境中可能不同,您应该在整个过程中替换您自己的值。

停止 docker

sudo systemctl stop docker
复制代码

安装依赖

RHEL / CentOS的:device-mapper-persistent-data,lvm2,和所有的依赖
复制代码

把整块硬盘创建物理卷(PV)

sudo pvcreate /dev/sdb
复制代码

创建 dockervg 卷组(VG)

sudo vgcreate dockervg /dev/sdb
复制代码

划分两个逻辑卷(LV)

划分两个逻辑卷(LV),分别用于:docker_data,docker_metadata。


sudo lvcreate --wipesignatures y -n data dockervg -L 35Gsudo lvcreate --wipesignatures y -n metadata dockervg -L 1G
复制代码

转换为 thin pool

sudo lvconvert -y --zero n -c 512K --thinpool dockervg/data --poolmetadata dockervg/metadata
复制代码

配置自动扩展

cat>>/etc/lvm/profile/dockervg-data.profile<<EOFactivation {   thin_pool_autoextend_threshold=80   thin_pool_autoextend_percent=20}EOF
复制代码

划分逻辑卷(LV):docker_dir

docker_dir 主要是用于存储容器运行时产生的数据卷等文件。


sudo lvcreate --wipesignatures y -n dockerdir dockervg -l+100%FREE
复制代码

应用以上配置

lvchange --metadataprofile dockervg-data dockervg/data
复制代码

启用磁盘空间监控

lvs -o+seg_monitor
复制代码

映射相应目录

mkfs -t xfs /dev/dockervg/dockerdirmkdir /var/lib/dockermount/dev/dockervg/dockerdir/var/lib/docker
cat>> /etc/fstab <<EOF/dev/dockervg/dockerdir /var/lib/docker xfs defaults 0 0EOF
复制代码


设置 Docker 启动参数


存储池扩容

假定现在新增一块 100G 的块设备 /dev/sdc

通过 pvdisplay 查看卷组与物理卷/块设备的对应关系

sudo pvdisplay |grep dockerPV Name               /dev/sdbVG Name               docker
复制代码

通过 vgextend 命令进行卷组扩容

sudo vgextend docker /dev/sdcinfo: Physical volume "/dev/sdc" successfully created.info: Volume group "docker" successfully extended
复制代码

给逻辑卷(LV)扩容

sudo lvextend -l+100%FREE  -n docker/dockerresize2fs /dev/docker/docker-l+100%FREE: 表示使用全部空闲空间,改为-L 10G指定扩展大小;-n docker/thinpool: 指定逻辑卷名(卷组/逻辑卷名)
复制代码

激活逻辑卷(LV)

# LV扩容重启后,可能会出现“Non existing device" 的提示,需要对LV卷进行激活操作:
sudo lvchange -ay docker/thinpool
复制代码


更多详情亦可参照 Docker 官方文档:


https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/


2020-04-12 20:391224

评论

发布
暂无评论
发现更多内容

架构师训练营第1周作业一:食堂就餐卡系统设计

sunpengjian

我们需要干货吗?

Neco.W

能力提升 经验分享 干货

架构训练营第一周学习总结

陈靓-哲露

食堂就餐卡系统设计

hellohuan

架构 极客大学架构师训练营

架构师训练营第一周-食堂就餐卡系统设计

王铭铭

食堂就餐卡系统架构设计

任小龙

《Web全栈实用编程》一书征集意见

老魚

程序员 大前端 Web 后端 全栈

从软件架构说起

傻傻的帅

架构 架构要素 架构设计原则

谈谈阿里云发布新一代容器、Serverless 等云原生产品

关贺宇

阿里云 容器 云原生 中间件

week1-食堂就餐卡系统设计

不在调上

架构师训练营-作业2-学习总结

狂奔嘀兔纸

极客大学架构师训练营

极客时间 - 架构师训练营 - week1 - 食堂就餐卡系统设计

毛聪

极客时间 极客大学架构师训练营 食堂就餐卡系统设计

区块链技术如何应用于版权保护?

CECBC

区块链技术 维权 著作权 版权保护 侵权

架构师训练营第1周_学习总结

方舟勇士

课程总结

ZooKeeper核心原理及应用场景

奈学教育

zookeeper

架构师训练营-第一周-食堂就餐卡系统设计

Anrika

架构师 极客大学架构师训练营

设计模式之单件模式

公众号:程序猿成神之路

Java 设计模式

极客大学架构师训练营第一周学习总结

竹森先生

学习 架构设计 极客大学架构师训练营

基于UML的食堂就餐卡系统设计

王海

极客大学架构师训练营

ZooKeeper核心原理及应用场景

古月木易

【话题讨论】「世界上最好的语言」?25周岁的 PHP “配” “不配”

InfoQ写作社区官方

php 写作平台 PHP25周年 热门活动

Week01 学习笔记

任小龙

第一周课后作业——食堂就餐卡系统概要设计

jiangnanage

IT自由职业者是怎么样的感受和体验

古月木易

IT职场

干货|微服务线上生命周期管理

博文视点Broadview

容器 微服务 架构师

架构师训练营第1周作业二:学习总结

sunpengjian

架构师训练营-第一周学习总结

hellohuan

极客大学架构师训练营

食堂就餐卡系统架构设计文档

hifly

极客大学架构师训练营 UML 架构文档 部署图 时序图

程序员为什么技术这么厉害,赚得钱却不多?

金刚小书童

程序员 职业规划 技术管理

ChaosBlade:从零开始的混沌工程(二)

郭旭东

云原生 混沌工程

产品路线图–您的产品战略路径指南

涛哥 数字产品和业务架构

敏捷 产品经理

CentOS下修改Devicemapper存储驱动为Direct-lvm模式_文化 & 方法_Rancher_InfoQ精选文章