塊存儲、對象存儲和文件系統(tǒng): 它們對容器而言意味著什么?
決定如何為容器實現(xiàn)持久存儲的***步是確定您將使用的存儲系統(tǒng)的基礎類型。在這方面, 通常有三種主要選項:文件系統(tǒng)存儲、塊存儲和對象存儲。
文件系統(tǒng)存儲
文件系統(tǒng)存儲是將數(shù)據(jù)存儲為文件,這一存儲形式已存在數(shù)十年了。每個文件都有一個文件名, 并且通常具有與其關聯(lián)的屬性。一些常用的文件系統(tǒng)包括NFS和NTFS。
當涉及到配置容器以持久存儲數(shù)據(jù)時,文件系統(tǒng)存儲是實現(xiàn)持久存儲數(shù)據(jù)的最普遍的方法之一。
容器駐留在主機服務器上。這個主機服務器包含它自己的操作系統(tǒng)和它自己的文件系統(tǒng)。可以將容器配置為在主機服務器的文件存儲的專用文件夾內(nèi)存儲持久數(shù)據(jù)。
普通主機持久性引起的主要問題是,它完全破壞了容器的可移植性。當使用主機持久性時,依賴項資源(持久存儲)駐留在宿主服務器的原生文件系統(tǒng)的容器外。為了解決此問題, 已經(jīng)創(chuàng)建了其他的主機持久性。
結論
文件系統(tǒng)存儲可能是最笨拙的方法,因為文件系統(tǒng)在設計之初并沒有把可移植性納入考慮范圍。有一些方法可以實現(xiàn)容器友好型的文件存儲系統(tǒng),而這通常要通過跨多個服務器分布文件系統(tǒng)來實現(xiàn)。
塊存儲
塊存儲是容器的另一個存儲選項。塊存儲存儲塊中的數(shù)據(jù)塊。塊僅通過其地址識別。塊沒有文件名,也沒有自己的元數(shù)據(jù)。只有當塊與其他塊組合形成完整的數(shù)據(jù)塊時,它們才具有意義。
由于其性能,塊存儲通常用于數(shù)據(jù)庫應用程序。塊存儲也通常用于提供快照功能,它允許將volume回滾到特定時間點,而無需還原備份。
對于容器,塊存儲有時以容器定義的存儲的形式實現(xiàn)。容器定義的存儲是一種軟件定義的存儲形式,但專門用于容器化環(huán)境中。此存儲通常在專用存儲容器內(nèi)部實現(xiàn)。
存儲系統(tǒng)可以包含多個塊存儲volumes,并且這些volumes中的每一個只能由單個主機加載。在這種情況下,將塊存儲控制器劃分為大量較小的塊存儲控制器,每個存儲控制器都可以映射到不同的塊存儲volume。如果所有這些塊存儲volumes都駐留在物理磁盤的公共池中,那么將允許編排引擎根據(jù)需要創(chuàng)建塊存儲volumes。
結論
塊存儲比文件系統(tǒng)存儲更靈活,這樣更容易適應容器環(huán)境的塊存儲。唯一的挑戰(zhàn)是確保塊存儲數(shù)據(jù)在由多臺主機組成的環(huán)境中可用。這可以通過分布式存儲來解決。
對象存儲
對象存儲與文件系統(tǒng)存儲或塊存儲不同。它不是通過塊地址或文件名引用數(shù)據(jù),而是將數(shù)據(jù)存儲為對象并由對象ID引用。對象存儲的優(yōu)點在于它具有很強的伸縮性,并且在將屬性與對象相關聯(lián)方面具有高度的靈活性。使用對象存儲的缺點是它執(zhí)行起來不如塊儲存。
由于對象存儲主要是為實現(xiàn)可伸縮性而設計的,因此它是公共云提供商的熱門選擇。而典型的應用程序可能被設計為通過文件系統(tǒng)或SCSI調用訪問數(shù)據(jù),對象存儲需要基于HTTP的REST調用,例如Get或Put。因此,應該將對象存儲保存在需要大規(guī)??缮炜s存儲的應用程序或需跨地域的存儲上。
結論
由于依賴于REST調用,對象存儲可能更復雜。但對象存儲提供的可伸縮性使它成為一個很好的選擇, 因為在容器環(huán)境中,大規(guī)模可伸縮性常常是大家優(yōu)先考慮的。