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 35G sudo 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<> /etc/fstab <