溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法

發(fā)布時(shí)間:2022-05-25 14:59:35 來(lái)源:億速云 閱讀:864 作者:iii 欄目:大數(shù)據(jù)

這篇“docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法”文章吧。

擴(kuò)容容器

默認(rèn)來(lái)說(shuō),如果你使用 device mapper 的存儲(chǔ)插件,所有的鏡像和容器是從一個(gè)初始 10g 的文件系統(tǒng)中創(chuàng)建的。讓我們來(lái)看看如何從一個(gè)更大的文件系統(tǒng)中創(chuàng)建一個(gè)容器。

 首先,我們用 ubuntu 的鏡像來(lái)創(chuàng)建我們的容器。我們不需要在這個(gè)容器里運(yùn)行任何東西,只需要這個(gè)文件(或者關(guān)聯(lián)的文件系統(tǒng))存在。為了演示,我們會(huì)在這個(gè)容器里運(yùn)行 df ,來(lái)看一下根文件系統(tǒng)的大小。

 $ docker run -d ubuntu df -h /
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603

由于需要修改 device mapper 管理中的一些卷的信息,我們現(xiàn)在用 root 的身份來(lái)運(yùn)行一些命令。所有以#開(kāi)頭的命令都必須以 root 身份來(lái)執(zhí)行。只要能訪問(wèn) docker 的 socket 服務(wù),你也可以用普通用戶的身份來(lái)執(zhí)行其他的命令(以$開(kāi)頭)。

 讓我們看一下 /dev/mapper ,那里應(yīng)該有一個(gè)對(duì)應(yīng)容器文件系統(tǒng)的符號(hào)鏈接,以 docker-x:y-z- 開(kāi)頭:

 # ls -l /dev/mapper/docker-*-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
lrwxrwxrwx 1 root root 7 jan 31 21:04 /dev/mapper/docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603 -> ../dm-8

注意記住那個(gè)全名,我們未來(lái)會(huì)用到。

 開(kāi)始擴(kuò)容:

1、首先讓我們來(lái)看一下當(dāng)前卷的信息表:

# dmsetup table docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
0 20971520 thin 254:0 7

docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法

第二個(gè)數(shù)字是設(shè)備的大小,表示有多少個(gè) 512-bytes 的扇區(qū). 這個(gè)值略高于 10gb 的大小。

2、我們來(lái)計(jì)算一下一個(gè) 42gb 的卷需要多少扇區(qū),

  $ echo $((42*1024*1024*1024/512))
88080384

精簡(jiǎn)快照目標(biāo)的一個(gè)神奇的特點(diǎn)是它不會(huì)限制卷的大小。當(dāng)你創(chuàng)建它的時(shí)候,一個(gè)精簡(jiǎn)的卷使用0個(gè)塊,當(dāng)你開(kāi)始往塊里面寫(xiě)入的時(shí)候,它們會(huì)從共用的塊池中進(jìn)行分配。你可以寫(xiě)0個(gè)塊,或者是10億個(gè)塊,這個(gè)和精簡(jiǎn)快照目標(biāo)沒(méi)關(guān)系。文件系統(tǒng)的大小只和 device mapper 表有關(guān)系。 

覺(jué)得困惑?不要擔(dān)心。我們只是需要裝載一個(gè)新的表,這個(gè)完全和之前的是一樣的,但是有更多的扇區(qū)。僅此而已。

3、舊表是 0 20971520 thin 254:0 7 。我們會(huì)改變第二個(gè)數(shù)字,要非常小心保持其他的值不變。你的卷可能不是 7 ,所以要使用正確的值!

這樣操作:

復(fù)制代碼 代碼如下:


# echo 0 88080384 thin 254:0 7 | dmsetup load docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603

4、現(xiàn)在如果我們?cè)俅螜z查表的信息,步驟和前面一樣。首先使用下面的命令激活新表:

復(fù)制代碼 代碼如下:


# dmsetup resume docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603

執(zhí)行完命令后,再次檢查一下表的信息,發(fā)現(xiàn)它會(huì)使用新的扇區(qū)數(shù)量。

5、我們已經(jīng)調(diào)整了塊設(shè)備的大小,但是我們?nèi)匀恍枰{(diào)整文件系統(tǒng)的大小,我們使用 xfs_growfs 來(lái)操作:

(網(wǎng)上很多說(shuō)到的resize2fs后來(lái)看到xfs方式的使用dumpe2fs,該命令在16.04下可能出現(xiàn)文件正在使用或者找不到超級(jí)塊的錯(cuò)誤,)

復(fù)制代碼 代碼如下:


# xfs_growfs docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603

docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法

docker動(dòng)態(tài)容器擴(kuò)容成功。

 6、停止該容器后,無(wú)法重新啟動(dòng)

當(dāng)容器擴(kuò)容之后,由于dm認(rèn)為設(shè)備塊大小仍然為之前設(shè)置的初始大小,所以會(huì)發(fā)生無(wú)法起啟動(dòng)的情況,這時(shí)只要重新操作即可。

$ docker start test#必須要先啟動(dòng)一下,讓其生成dm文件才能修改
#此時(shí)會(huì)報(bào)錯(cuò),不要理會(huì),執(zhí)行以下操作即可
$ echo 0 41943040 thin 252:0 9 | dmsetup load docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
$ dmsetup resume docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69

以上就是關(guān)于“docker容器硬盤動(dòng)態(tài)擴(kuò)容的方法”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI