写点什么

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:391320

评论

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

web前端Node安装步骤

编程江湖

【C语言】猜数字小游戏

謓泽

3月月更

大数据使用Airflow实现简单的工作流调度

编程江湖

web前端培训Node.js和JavaScript的关系

@零度

JavaScript node.js 前端开发

观点丨新经济 DTC 转型,一个简单而强大的数据平台至关重要

PingCAP

测试在项目流程中的那些事儿

有道技术团队

全运会开幕!天翼云全力打造“智慧赛事”

天翼云开发者社区

它来了,它来了!开源圈 KOL 的江湖对谈第二季要来了!

OpenTEKr

开源 程序员人生 开源社区 开源软件 优秀开源项目

2. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml

MASA技术团队

大数据培训面试Flink八股文分享

@零度

flink 大数据开发

OpenVSCode云端IDE加入Rainbond一体化开发体系

北京好雨科技有限公司

VuePress 博客之 SEO 优化(二)重定向

冴羽

Vue 前端 vuepress SEO 重定向

液冷数据中心如何构建,蓝海大脑液冷技术保驾护航

GPU算力

液冷服务器

4个迭代,从批量交付到持续交付转型

阿里云云效

云计算 阿里云 云原生 研发团队 研发

OpenHarmony 标准系统 HDF 框架之 GPIO 驱动开发

Anna

开发者 OpenHarmony 学习成长

源码详解数据结构Linked List

华为云开发者联盟

Java ArrayList 框架 linkedlist 双向链表

Java培训JVM 高频面试题

@零度

JVM JAVA开发

天翼云中南数字产业园落地长沙“天心数谷”初具雏形

天翼云开发者社区

创新的力量天翼云推动科技创新技术实践落地

天翼云开发者社区

「尚硅谷」java实战项目谷粒商城简介_idea_通用mapper

编程江湖

微服务中台技术之视频处理

小江

架构 ffmpeg 视频处理 电商系统

微博评论高性能高可用计算架构

李大虾

#架构实战营 「架构实战营」

如何在 Go 代码中运行 C 语言代码

宇宙之一粟

C语言 Go 语言 3月月更

在页面中直接嵌入vue-sfc的方法

CRMEB

加密市场普跌 虎符交易所平台币HOO却能连续2个月逆势上涨

区块链前沿News

Hoo 虎符交易所 平台币

为什么要进行企业知识管理,这三个重点问题要明确

小炮

【堡垒机】2022年云堡垒机品牌排名大比拼!

行云管家

云计算 网络安全 堡垒机 企业安全

从“半部电台”到“云监工” 天翼云助力红色电信启航新征程

天翼云开发者社区

尚硅谷Flink(Java)新版视频教程发布

@零度

flink 大数据开发

缓存最关心的问题是什么

华为云开发者联盟

Java 缓存 堆内存 缓存命中率 回收策略

大厂面试官都不敢问的java线程的底层实现

刘祥

Java 线程

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