docker1.12 devicemapper驱动下的存储扩容

1. docker的存储驱动类型

docker存储类型主要是5类,我们平时用到最多的是overlayFS和DeviceMapper。在docker 1.12版本时,docker默认推荐的是DeviceMapper;而现在1.12 以后的版本默认都推荐的是overlayFS。

这5类驱动类型,我们可以从这张图中很清晰的了解到优缺点。和使用它的应用场景。

docker1.12 devicemapper驱动下的存储扩容

从官方推荐的变更可以看出来,overlayFS性能肯定是优于DeviceMapper。

我之前是基于centos7.2 1611 docker 1.12版本开发应用的,所以在日常工作中发现了存储资源不够用的情况。于是今天我们就分享一下,1.12版本的存储资源扩容。

2. devicemapper驱动下的磁盘扩容方案

如果你是使用docker1.12版本,并且你的存储驱动类型是devicemapper,那么你应该会有存储扩容的需求。这里的存储扩容有两个,一个是docker资源池的扩容,一个是容器资源的扩容。所谓的docker资源池,是指/var/lib/docker/devicemapper/devicemapper/data 这个文件空间,这个文件实际上是给docker union文件系统提供空间的,直白点说就是你的容器磁盘大小都是从这个data pool中分配的。docker 默认启动一个容器时,分配的磁盘大小是10G,一般来说是足够使用的,但是如果你的业务需要,那么可以对这个磁盘分配做个修改。

3. 资源池扩容

我习惯于在安装完docker之后,立马进行扩容操作。扩容的思路也很简单,删除默认的data(100G),重新创建一个data,要多大创建多大的。

 yun -y install docker
rm -rf /var/lib/docker
mkdir -p /var/lib/docker/devicemapper/devicemapper

dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1G count=0 seek=1024
systemctl start docker

我这里是使用dd if创建一个1 T大小的文件,作为新的资源池。这里大小是通过 bs*seek 控制的。重启docker之后,我们用docker info命令是可以看到现在的资源池的大小的

docker1.12 devicemapper驱动下的存储扩容

4. 容器扩容

容器扩容分为静态和动态两种,静态是指在创建容器的时候我们通过--storage-opt size=20G设定容器可用空间的大小。

动态是指给一个已经创建好的容器进行资源扩容。如果你的文件系统是xfs的,很抱歉我们无法执行容器资源动态扩容。如果你的主机文件系统是ext4的话,是支持容器资源动态扩容。我工作环境文件系统都是xfs也就没去实践容器动态扩容,话说容器在启动的时候我们就应该规划好资源了,所以这个动态扩容的功能大家有兴趣可以自己了解一下,实践应用的不是很多。如果你的文件系统是xfs的,很抱歉我们无法执行容器资源动态扩容。如果你的主机文件系统是ext4的话,是支持容器资源动态扩容。我工作环境文件系统都是xfs也就没去实践容器动态扩容,话说容器在启动的时候我们就应该规划好资源了,所以这个动态扩容的功能大家有兴趣可以自己了解一下,真实应用的不是很多。

# --storage-opt size=20G
docker run -itd --name test1 --privileged docker.io/centos /usr/sbin/init
docker run -itd --name test2 --privileged --storage-opt size=20G docker.io/centos /usr/sbin/init

通过参数--storage-opt size=20G,是的test2容器的磁盘大小是20g而不是默认的10g,满足了要求。

所以在1.12 版本的docker中,使用DeviceMapper驱动的话,我们的扩容是非常简单的,根据实际业务的需求,我们可以设计好满足要求的资源池和容器资源。

总结

docker1.12 下devicemapper驱动下的存储扩容,如果文件系统是xfs,那么只能支持静态扩容即是我上面提到的方法,如果文件系统是ext4,是支持动态扩容的。

docker1.12 默认推荐使用devicemapper驱动,这是centos7.2 1611系统的推荐。centos7.2以后的版本yum安装docker时,docker版本都是大于docker1.12,并且推荐的驱动是overlay2。

docker1.12 devicemapper驱动下的存储扩容

docker1.12 devicemapper驱动下的存储扩容


分享到:


相關文章: