最近,感覺微服務(wù)非常流行,有能力的沒能力的反正是個架構(gòu)師都在談?wù)?,提到微服?wù),自然會關(guān)聯(lián)到現(xiàn)在最熱的虛擬化技術(shù)Docker。最近本人試著用docker去搭建一些測試環(huán)境,在docker上跑了一個oracle11g,不需要復(fù)雜的安裝過程只要下載公共鏡像就能跑起來了,實在非常方便。但好景不長,隨著數(shù)據(jù)增加,突然某一天發(fā)現(xiàn)docker start失敗了。于是查看日志,發(fā)現(xiàn)sh文件執(zhí)行失敗,空間不夠了。。。
于是就在網(wǎng)上查如何解決空間不夠問題,發(fā)現(xiàn)docker默認(rèn)只支持10g的空間,如果不夠用可以進(jìn)行動態(tài)新增,過程可歸納為幾步:
1.先找到需要新增的deviceName
2.使用dmsetup table 命令顯示出device mapper的具體信息
3.通過公式:echo $((N10241024*1024/512))算出你想擴(kuò)容到的扇區(qū)數(shù)量
4.裝載一個新的設(shè)備信息表,新的表與原表相比只修改了扇區(qū)數(shù)量
5.通過dmsetup resume激活新的設(shè)備信息表
6.啟動容器
7.xfs_growfs調(diào)整文件系統(tǒng)大小
具體命令及遇到的問題如下:
1.[root@localhost ~]# docker inspect -f '{{ .GraphDriver.Data.DeviceName }}' a0d41b4f48fb ( 此處填寫CONTAINER ID)
結(jié)果:docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
說明:后面幾乎都需要用到這個設(shè)備名稱
2.[root@localhost ~]# dmsetup table dmsetup table docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
結(jié)果:0 20971520 thin 253:3 16 (第二個就是扇區(qū)數(shù))
采坑標(biāo)記:當(dāng)容器在stop狀態(tài)時以上操作得不到device mapper信息,雖然由于空
間不足不能啟動成功,但需要先docker start <CONTAINER ID> 才能查找到對應(yīng)
device mapper信息。
3.[root@localhost ~]# echo $((2010241024*1024/512))
結(jié)果:41943040
說明:此處我們擴(kuò)展到20G
4.[root@localhost ~]# echo 0 41943040 thin 253:3 16 | dmsetup load docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
說明:使用第三步得出的新的扇區(qū)數(shù),其它不變
5.dmsetup resume docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
6.docker start a0d41b4f48fb
采坑標(biāo)記:此處如果不啟動,第7步將執(zhí)行失敗
7.xfs_growfs /dev/mapper/docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
或
resize2fs /dev/mapper/docker-253:1-135111498-01a6b6d74f6598480f94b95e07fc166424aafec83223662d1f3f71ac65c0dcb5
resize2fs命令 針對的是ext2、ext3、ext4文件系統(tǒng)
xfs_growfs命令 針對的是xfs文件系統(tǒng)
我是使用xfs_growfs有效
恭喜!擴(kuò)容成功,現(xiàn)在你的容器已經(jīng)是20G的容量了!
雖然是擴(kuò)容成功了,不過如果你執(zhí)行了docker stop 命令,再次start,還是需要重新擴(kuò)容一次,此問題本人至今沒有解決。如果你解決了,希望分享。
以上命令也可以使用腳本的方式執(zhí)行。