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驅動下的存儲擴容


分享到:


相關文章: