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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章