docker 容器热扩容

本方式在ubuntu14.04上运行正常,16.04上运行失败
docker的文件系统必须是devicemapper,而且只支持扩容不支持缩小
方法引自:http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/

1.查看/dev/mapper下文件

$ ls /dev/mapper
control  docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69  docker-253:1-131179-pool
记下docker-253:1-131179-a835d49...这个文件的名字,这个是容器存储文件的文件名

2.使用dmsetup查看该文件扇区信息

$ dmsetup table docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
0 20971520 thin 252:0 9

3.计算所需扇区数目,如,20G。

20*1024*1024*1024/512=41943040

4.将新的扇区大小写入,注意只是改变20971520的数字,其他数字不变

echo 0 41943040 thin 252:0 9 | dmsetup load docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69

5.将修改后的容器文件激活

dmsetup resume docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69

6.重新查看文件信息

$ dmsetup table docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
0 41943040 thin 252:0 9

7.更改文件系统大小,使变更生效

$ resize2fs /dev/mapper/docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
该命令在16.04下可能出现文件正在使用或者找不到超级块的错误。还未解决

8.停止该容器后,无法重新启动
当容器扩容之后,由于dm认为设备块大小仍然为之前设置的初始大小,所以会发生无法起启动的情况,这时只要重新操作即可。

$ docker start test#必须要先启动一下,让其生成dm文件才能修改
#此时会报错,不要理会,执行以下操作即可
$ echo 0 41943040 thin 252:0 9 | dmsetup load docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
$ dmsetup resume docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69

你可能感兴趣的:(Docker)