塊存儲、文件存儲、對象存儲的區別


這三者的本質差別是使用數據的“用戶”不同:
塊存儲的用戶是可以讀寫塊設備的軟件系統,例如傳統的文件系統、數據庫;
文件存儲的用戶是自然人;
對象存儲的用戶則是其它計算機軟件。
首先要說明一下的是,這三個概念都是分布式存儲中的概念,由不同的網絡存儲協議實現。

#對象存儲
對象存儲其實介於塊存儲和文件存儲之間。文件存儲的樹狀結構以及路徑訪問方式雖然方便人類理解、記憶和訪問,但計算機需要把路徑進行分解,然后逐級向下查找,最后才能查找到需要的文件,對於應用程序來說既沒必要,也很浪費性能。而塊存儲是排它的,服務器上的某個邏輯塊被一台客戶端掛載后,其它客戶端就無法訪問上面的數據了。而且掛載了塊存儲的客戶端上的一個程序要訪問里面的數據,不算類似數據庫直接訪問裸設備這種方式外,通常也需要對其進行分區、安裝文件系統后才能使用。除了在網絡上傳輸的數據包效率更高以外,並不比使用文件存儲好多少,客戶端的文件系統依然需要對路徑分解,然后逐級查找才能定位到某一個具體的文件。
是否可以用不排它但又類似塊設備訪問的方式呢?理論上是可以的,但對塊設備的訪問方式雖然比文件存儲快,其實也很麻煩——一個文件往往是由多個塊組成,並且很可能是不連續的。例如要讀取一個文件,可能需要發出這樣的指令:讀取從編號A₁開始的N₁個塊;讀取從編號A₂開始的N₂個塊;讀取從編號A₃開始的N₃個塊;…………讀取從編號Ai開始的Ni個塊。最后自行把這i個連續的塊自行拼接成一個文件,這才完成了一個文件的讀取操作。為了發出這些指令,訪問文件的軟件系統需要記錄下這個文件分成多少個部分,每個部分的起始塊編號是多少,有多少塊,順序如何。不單是讀取操作,刪除、寫入、修改操作也是如此,非常麻煩復雜。而且往往一個文件可能需要被多個系統訪問使用,這就更麻煩了。
為了解決這中麻煩,使用一個統一的底層存儲系統,管理這些文件和底層介質的組織結構,然后給每個文件一個唯一的標識,其它系統需要訪問某個文件,直接提供文件的標識就可以了。存儲系統可以用更高效的數據組織方式來管理這些標識以及其對應的存儲介質上的塊。當然,對於不同的軟件系統來說,一次訪問需要獲取的不一定是單個我們傳統意義上的文件,根據不同的需要可能只是一個/組值,某個文件的一部分,也可能是多個文件的組合,甚至是某個塊設備,統稱為對象。這就是對象存儲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM