今天本來想給各位介紹一下Spring Boot,但是因?yàn)楹竺嬉恢痹趪L試遷移Docker存儲(chǔ)位置跌穗,而且覺得這個(gè)意義比較大.就暫且先介紹一下如何遷移Docker的存儲(chǔ)位置.以后有時(shí)間虏辫,在介紹Spring Boot.
前面<由Docker垃圾回收機(jī)制引起的一場血案>這篇文章中砌庄,我們已經(jīng)說過,因?yàn)镈ocker的文件太多佩微,將我們的服務(wù)器上的硬盤空間給耗盡了.同時(shí),也提到了一種解決方案跌造,就是將Docker的存儲(chǔ)位置遷移到一個(gè)更大的硬盤上.
這不,這兩天陵珍,我們加了一塊較大的硬盤互纯,就想將Docker的數(shù)據(jù)遷移一下.
目標(biāo)
因?yàn)?i>/var文件夾最大,所以我們打算將這個(gè)文件夾遷移到那臺(tái)新的硬盤上.
Docker數(shù)據(jù)的文件夾是/var/lib/docker.所以只盹,遷移/var文件夾殖卑,Docker數(shù)據(jù)也會(huì)跟著遷移.
具體過程
首先孵稽,先停掉全部的Docker容器:
然后菩鲜,我們還需要停掉Docker daemon:sudo service docker stop
由于是新加的硬盤接校,我們需要給它進(jìn)行分區(qū)以及格式化操作狮崩,否則用不了.
進(jìn)行如下圖所示的操作:
當(dāng)然厉亏,如果你是一塊全新的硬盤爱只,這里肯定跟上圖不一樣.分區(qū)號(hào)你的應(yīng)該默認(rèn)是1,也不會(huì)有下面的那句沒有空閑扇區(qū)可用.
新建完這個(gè)分區(qū)之后招刹,我們需要對(duì)其進(jìn)行格式化.這里我們將其格式化為ext3:
輸入上面的那條命令之后疯暑,我們需要耐心等待一段時(shí)間.
有讀者可能注意到哑舒,上面的命令中洗鸵,我們使用的分區(qū)是/dev/xvdb1膘滨,而不是/dev/xvdb./dev/xvdb1是一個(gè)分區(qū),是對(duì)/dev/xvdb這塊硬盤分區(qū)得來的.不要把兩者搞混.
同樣丹弱,這里格式化的分區(qū)躲胳,以你實(shí)際創(chuàng)建的分區(qū)為標(biāo)準(zhǔn).
然后坯苹,我們?cè)诟夸浵滦陆ㄒ粋€(gè)臨時(shí)目錄/data,這個(gè)目錄相當(dāng)于中轉(zhuǎn)站摇天,只是/dev/xvdb1這個(gè)物理分區(qū)在邏輯目錄樹上的一個(gè)表現(xiàn)而已.
mkdir /data
我們將/data這個(gè)中轉(zhuǎn)站目錄與我們的物理分區(qū)掛載起來:
然后將/var這個(gè)目錄中的內(nèi)容原封不動(dòng)得拷貝到這個(gè)中轉(zhuǎn)站目錄中.這樣就相當(dāng)于我們把/var目錄中的內(nèi)容都拷到了/dev/xvdb1這個(gè)分區(qū)來了.對(duì)吧?
這條命令會(huì)將/var目錄中的內(nèi)容,原封不動(dòng)的拷貝到/data目錄中.包括文件的各種屬性坚冀,如權(quán)限,時(shí)間戳等.
這里我們需要耐心等待司训,隨著你的/var目錄的增大壳猜,拷貝的時(shí)間也會(huì)增長.
拷過來之后统扳,其實(shí)我們的數(shù)據(jù)遷移工作就完成了.因?yàn)榇藭r(shí)Docker的數(shù)據(jù)已經(jīng)完好無誤的拷貝到/dev/xvdb1這個(gè)分區(qū)中了.我們完全可以通過在Docker的配置文件中指定數(shù)據(jù)存儲(chǔ)的目錄為/data/lib/docker,以后都使用這塊新的硬盤來存儲(chǔ)或者讀取Docker的數(shù)據(jù).編輯/etc/default/docker:
然后再重啟Docker daemon.你可以看到一切都沒有問題.使用docker start命令啟動(dòng)容器吹由,應(yīng)該也是沒有問題的.
然而倾鲫,我們是將整個(gè)/var目錄中的內(nèi)容都復(fù)制過來了乌昔,因?yàn)槲覀兊哪繕?biāo)是將/var目錄中的內(nèi)容放到另一個(gè)硬盤上.那我們就需要做下面的額外的步驟了.
先將原來的/var改一個(gè)名字玫荣,如/var.old:
然后大诸,再新建一個(gè)/var文件夾:
然后资柔,將上面的/data卸載掉贿堰,并將/dev/xvdb1這個(gè)分區(qū)掛載到新創(chuàng)建的/var上:
如果你再執(zhí)行umount命令時(shí),遇到Device is busy的問題纵搁,可以通過下面的命令來解決:
它會(huì)殺掉那些跟/data文件相關(guān)的進(jìn)程.然后在umount應(yīng)該就沒有問題了.
我們還需要最后一步腾誉,就大功告成了.編輯/etc/fstab,在文件的最后加入下面的/dev/xvdb1開頭的那行:
這樣我們就完整的將第一塊硬盤上的移動(dòng)到第二塊硬盤上啦.
我們啟動(dòng)完docker daemon,再啟動(dòng)起來那些Docker容器利职,就可以正常使用啦.