新聞中心
容器中缺乏永久性存儲(chǔ)的問(wèn)題該如何解決?
作者:Frank Chan 2015-09-30 10:34:39
云計(jì)算 容器的起源實(shí)際上可以追溯至大型機(jī)時(shí)代,因此它并不是新的東西。這一技術(shù)已經(jīng)開始逐漸成熟,并以極快的速度獲得了用戶的關(guān)注與認(rèn)可。

遼源ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
在容器中運(yùn)行應(yīng)用并不是一個(gè)全新的理念。是的,這是一個(gè)熱門話題,其中許多人在討論中為了提升話題的熱度,或者是為了拋出新奇的觀點(diǎn),往往都會(huì)提到容器,仿佛他們?yōu)檫@一棘手問(wèn)題找到了良策一樣。聽上去似乎是這樣的——容器是***的,它能解決所有的問(wèn)題。
容器的起源實(shí)際上可以追溯至大型機(jī)時(shí)代,因此它并不是新的東西。這一技術(shù)已經(jīng)開始逐漸成熟,并以極快的速度獲得了用戶的關(guān)注與認(rèn)可。
容器可讓應(yīng)用同時(shí)運(yùn)行在一個(gè)單一操作系統(tǒng)中,既可以將其直接部署在物理服務(wù)上,也可以作為一個(gè)虛擬實(shí)例部署。
這是通過(guò)提供了執(zhí)行“用戶空間”多個(gè)拷貝的功能實(shí)現(xiàn)的。在這里,應(yīng)用可以運(yùn)行在平臺(tái)上,系統(tǒng)或是特殊代碼可以運(yùn)行在內(nèi)核上。
容器在存儲(chǔ)領(lǐng)域的短板:默認(rèn)情況下沒(méi)有***性存儲(chǔ)
容器當(dāng)前的吸引力來(lái)自與運(yùn)行虛擬實(shí)例相關(guān)的問(wèn)題和日常開支方面,即每個(gè)實(shí)例必須要有專用內(nèi)存和存儲(chǔ)資源。這些東西通常要么太多,要么太少,在需要快速擴(kuò)展時(shí),往往要花費(fèi)很長(zhǎng)的時(shí)間。
虛擬實(shí)例的設(shè)計(jì)存在孤立性,每個(gè)實(shí)例的升級(jí)都具有獨(dú)特性,但是在運(yùn)行相似或相同操作系統(tǒng)版本的大環(huán)境中,每個(gè)都運(yùn)行著一套相同的程序以消費(fèi)內(nèi)存,保持近乎相同的啟動(dòng)卷。
在向“大規(guī)模計(jì)算轉(zhuǎn)型”這一目標(biāo)進(jìn)發(fā)的征途中,傳統(tǒng)的虛擬化被認(rèn)為效率低下,浪費(fèi)內(nèi)存、CPU、存儲(chǔ)、機(jī)架空間、電力、冷卻等物理資源,以及浪費(fèi)管理、IP地址等邏輯資源。由于它們與鄰近的看起來(lái)好像容器擁有整個(gè)操作系統(tǒng)的組件相互隔離,因此容器帶有一定程度的分離性。這種分離性允許它們與外部世界進(jìn)行互動(dòng)。
由于在2014年呈現(xiàn)指數(shù)增長(zhǎng),容器及其生態(tài)系統(tǒng)2015年在企業(yè)環(huán)境中獲得了一些推動(dòng)力,但是還遠(yuǎn)未達(dá)到大規(guī)模部署的程度。目前已經(jīng)有少量的備份軟件提供商開始提供容器備份支持,但是目前是否已經(jīng)有了一種可以通過(guò)備份軟件備份容器的方法呢?
與虛擬實(shí)例相比,這可能是非常短暫的,并且只適用于分配給它們的存儲(chǔ)。與以前所使用的原始鏡像相比,容器可以使用重疊式文件系統(tǒng)等功能執(zhí)行寫入時(shí)復(fù)制程序,以存儲(chǔ)所有升級(jí)信息到容器的根文件系統(tǒng)。如果容器被刪除了,那么這些變更也通常會(huì)丟失。因此,容器在默認(rèn)情況下沒(méi)有***存儲(chǔ)。
docker在存儲(chǔ)領(lǐng)域的改進(jìn):使用卷和數(shù)據(jù)容器時(shí)仍存在問(wèn)題
然而,Docker提供了Docker卷和數(shù)據(jù)容器兩個(gè)功能,這兩個(gè)功能可以實(shí)現(xiàn)對(duì)更多***存儲(chǔ)資源的訪問(wèn)。
Docker卷允許數(shù)據(jù)被存儲(chǔ)在啟動(dòng)卷外的容器中,根文件系統(tǒng)內(nèi),并且可以通過(guò)多種方式被執(zhí)行。通過(guò)提供一個(gè)傳遞至“-v”交換機(jī)參數(shù)的共享名,容器能夠被創(chuàng)建在一個(gè)或多個(gè)卷內(nèi)。
這擁有在Docker配置文件夾(/var/lib/docker)中創(chuàng)建一個(gè)實(shí)體,以展現(xiàn)卷中內(nèi)容的效果。卷中的配置數(shù)據(jù)被存儲(chǔ)在/var /lib/docker/volumes文件夾內(nèi),通過(guò)每個(gè)子目錄展現(xiàn)基于通用唯一標(biāo)識(shí)符(UUID)的卷名。數(shù)據(jù)本身將被存儲(chǔ)在以UUID名稱為基礎(chǔ)的 /var/lib/docker/vfs/dir文件夾中。
任何卷中的數(shù)據(jù)都能夠通過(guò)主機(jī)操作系統(tǒng)和標(biāo)準(zhǔn)權(quán)限申請(qǐng)被瀏覽和編輯。卷的使用既有優(yōu)勢(shì)也有劣勢(shì)。由于數(shù)據(jù)被存儲(chǔ)在標(biāo)準(zhǔn)文件系統(tǒng)中,它們可以通過(guò)操作系統(tǒng)被備份、拷貝或是移入/移出。
不足之處是卷名采用的是UUID格式,這讓人難以將它們與容器名稱聯(lián)系在一起。Docker讓許多工作變得更加輕松,它通過(guò)提供“docker cp”命令,讓文件和文件夾能夠從主機(jī)目錄拷貝至指定容器名稱的容器目錄路徑。這與rsync很相似。
這為提供對(duì)在NFS共享上的外部共享存儲(chǔ)或LUN的訪問(wèn)帶來(lái)了可能。LUN使用卷選項(xiàng)訪問(wèn)創(chuàng)建在外部存儲(chǔ)上的主機(jī)共享,不過(guò)這種方式并不推薦使用。
Docker卷也可以與主機(jī)目錄聯(lián)系在一起。這在“-v”交換機(jī)中被進(jìn)行了詳細(xì)說(shuō)明,它使用了一個(gè)通過(guò)冒號(hào)將主機(jī)與容器分隔起來(lái)的格式,即:“-v /host:/container”。這種方法允許容器訪問(wèn)主機(jī)上的持久性數(shù)據(jù)。
因此,這使得訪問(wèn)存儲(chǔ)在NFS共享上的外部共享存儲(chǔ),或者使用卷選項(xiàng)訪問(wèn)創(chuàng)建在外部存儲(chǔ)上的主機(jī)共享的LUN成為了可能。這種方式也可用于備份由容器訪問(wèn)的數(shù)據(jù)。
對(duì)于管理Docker中數(shù)據(jù)的另一個(gè)選項(xiàng)是使用Docker數(shù)據(jù)容器。這一概念實(shí)質(zhì)上是一個(gè)不活躍容器,其中創(chuàng)建有一個(gè)或多個(gè)卷。在啟動(dòng)額外容器時(shí),這些卷能夠被導(dǎo)出到一個(gè)或多個(gè)使用“-volumes-from”交換機(jī)的容器中。
數(shù)據(jù)卷容器實(shí)際上是作為一個(gè)內(nèi)部的Docker NFS服務(wù)器,提供對(duì)來(lái)自中央掛載點(diǎn)的容器的訪問(wèn)。
這種方法的好處是它抽象了原始數(shù)據(jù)的位置,讓數(shù)據(jù)容器成為了一個(gè)邏輯掛載點(diǎn)。在保持?jǐn)?shù)據(jù)長(zhǎng)久保存一個(gè)專用容器的同時(shí),它們還允許訪問(wèn)數(shù)據(jù)容器卷的“應(yīng)用”容器被創(chuàng)建和被破壞。
在使用卷和數(shù)據(jù)容器時(shí)我們會(huì)發(fā)現(xiàn),其中存在許多問(wèn)題。
孤立的存儲(chǔ)
目前,在不刪除相關(guān)卷的情況下,刪除容器已經(jīng)成為了可能。實(shí)際上,這是一種默認(rèn)行為,除非明確進(jìn)行重寫。這使得終結(jié)沒(méi)有相關(guān)容器的孤立卷變得更加容易。
清理孤立存儲(chǔ)是一項(xiàng)艱巨的任務(wù),這需要查找與容器匹配的容器配置文件和與它們相關(guān)的卷。
安全性
除了標(biāo)準(zhǔn)文件權(quán)限和配置只讀或讀寫訪問(wèn)選項(xiàng)外,卷或數(shù)據(jù)容器沒(méi)有額外的安全保證。這意味著容器中的用戶文件訪問(wèn)權(quán)限需要與主機(jī)設(shè)置相匹配。
數(shù)據(jù)完整性
共享使用卷和數(shù)據(jù)容器的數(shù)據(jù)沒(méi)有任何數(shù)據(jù)完整性保護(hù)措施。文件鎖定等功能需要由容器自身進(jìn)行管理。這是一項(xiàng)必須要加入到應(yīng)用當(dāng)中的額外開銷。
容器不提供數(shù)據(jù)保護(hù)工具,例如快照或復(fù)制,因此數(shù)據(jù)管理必須要由主機(jī)或是容器負(fù)責(zé)。
目前還缺乏對(duì)外部存儲(chǔ)的支持。除了主機(jī)操作系統(tǒng)提供的功能外,Docker內(nèi)部也沒(méi)有對(duì)外部存儲(chǔ)的一些特殊支持。
容器卷默認(rèn)存儲(chǔ)在/var/lib/dockerdirectory下,這將成為容量和性能瓶頸。目前,在Docker后臺(tái)程序啟動(dòng)中使用交換機(jī)改變這一位置已經(jīng)變成了可能。
容器和存儲(chǔ)目前存在的問(wèn)題之一是,無(wú)法管理運(yùn)行在獨(dú)立物理主機(jī)上的容器之間的數(shù)據(jù)共享。
容器卷可位于外部存儲(chǔ)上,但是目前的設(shè)計(jì)并不便于將來(lái)自一臺(tái)主機(jī)的卷用在另一臺(tái)主機(jī)上。為了解決這一問(wèn)題,開始出現(xiàn)了類似ClusterHQ的 Flocker等解決方案,以解決卷的可移植性問(wèn)題。目前,還有一些建議對(duì)Docker進(jìn)行調(diào)整,增加一些關(guān)于對(duì)卷進(jìn)行管理的功能。
雖然許多問(wèn)題有望被快速解決,但是數(shù)據(jù)管理在短期內(nèi)仍將是一個(gè)棘手的問(wèn)題。
編者注:本文編譯自superuser.openstack.org,作者為Nick Gerasimotos,編譯者Frank Chan。Nick Gerasimotos是FICO云服務(wù)工程高級(jí)總監(jiān),目前正致力于研究容器中缺乏***性存儲(chǔ)的問(wèn)題,以及如何通過(guò)Docker卷和數(shù)據(jù)容器解決這一問(wèn)題。
原文鏈接:https://www.ustack.com/news/how-storage-works-in-containers/?belong=skill-share
網(wǎng)頁(yè)題目:容器中缺乏永久性存儲(chǔ)的問(wèn)題該如何解決?
文章地址:http://m.fisionsoft.com.cn/article/cdchicp.html


咨詢
建站咨詢
