這三者的本質(zhì)差別是使用數(shù)據(jù)的“用戶”不同:
塊存儲(chǔ)的用戶是可以讀寫塊設(shè)備的軟件系統(tǒng),例如傳統(tǒng)的文件系統(tǒng)、數(shù)據(jù)庫(kù);
文件存儲(chǔ)的用戶是自然人;
對(duì)象存儲(chǔ)的用戶則是其它計(jì)算機(jī)軟件。
文件存儲(chǔ)
文件存儲(chǔ)的用戶是自然人,最容易理解。計(jì)算機(jī)中所有的數(shù)據(jù)都是0和1,存儲(chǔ)在硬件介質(zhì)上的一連串的01組合對(duì)我們來(lái)說(shuō)完全無(wú)法去分辨以及管理。因此我們用“文件”這個(gè)概念對(duì)這些數(shù)據(jù)進(jìn)行組織,所有用于同一用途的數(shù)據(jù),按照不同應(yīng)用程序要求的結(jié)構(gòu)方式組成不同類型的文件(通常用不同的后綴來(lái)指代不同的類型),然后我們給每一個(gè)文件起一個(gè)方便理解記憶的名字。而當(dāng)文件很多的時(shí)候,我們按照某種劃分方式給這些文件分組,每一組文件放在同一個(gè)目錄(或者叫文件夾)里面,當(dāng)然我們也需要給這些目錄起一個(gè)容易理解和記憶的名字。而且目錄下面除了文件還可以有下一級(jí)目錄(稱之為子目錄或者子文件夾),所有的文件、目錄形成一個(gè)樹(shù)狀結(jié)構(gòu)。我們最常用的Windows系統(tǒng)中,打開(kāi)資源管理器就可以看到以這種方式組織起來(lái)的無(wú)數(shù)個(gè)文件和目錄。在Linux可以用tree命令列出以某個(gè)文件夾為根節(jié)點(diǎn)列出一棵樹(shù)。
塊存儲(chǔ)
傳統(tǒng)的文件系統(tǒng),是直接訪問(wèn)存儲(chǔ)數(shù)據(jù)的硬件介質(zhì)的。介質(zhì)不關(guān)心也無(wú)法去關(guān)心這些數(shù)據(jù)的組織方式以及結(jié)構(gòu),因此用的是最簡(jiǎn)單粗暴的組織方式:所有數(shù)據(jù)按照固定的大小分塊,每一塊賦予一個(gè)用于尋址的編號(hào)。以大家比較熟悉的機(jī)械硬盤為例,一塊就是一個(gè)扇區(qū),老式硬盤是512字節(jié)大小,新硬盤是4K字節(jié)大小。老式硬盤用柱面-磁頭-扇區(qū)號(hào)(CHS,Cylinder-Head-Sector)組成的編號(hào)進(jìn)行尋址,現(xiàn)代硬盤用一個(gè)邏輯塊編號(hào)尋址(LBA,Logical Block Addressing)。所以,硬盤往往又叫塊設(shè)備(Block Device),當(dāng)然,除了硬盤還有其它塊設(shè)備,例如不同規(guī)格的軟盤,各種規(guī)格的光盤,磁帶等。
文件存儲(chǔ)
對(duì)象存儲(chǔ)其實(shí)介于塊存儲(chǔ)和文件存儲(chǔ)之間。文件存儲(chǔ)的樹(shù)狀結(jié)構(gòu)以及路徑訪問(wèn)方式雖然方便人類理解、記憶和訪問(wèn),但計(jì)算機(jī)需要把路徑進(jìn)行分解,然后逐級(jí)向下查找,最后才能查找到需要的文件,對(duì)于應(yīng)用程序來(lái)說(shuō)既沒(méi)必要,也很浪費(fèi)性能。而塊存儲(chǔ)是排它的,服務(wù)器上的某個(gè)邏輯塊被一臺(tái)客戶端掛載后,其它客戶端就無(wú)法訪問(wèn)上面的數(shù)據(jù)了。而且掛載了塊存儲(chǔ)的客戶端上的一個(gè)程序要訪問(wèn)里面的數(shù)據(jù),不算類似數(shù)據(jù)庫(kù)直接訪問(wèn)裸設(shè)備這種方式外,通常也需要對(duì)其進(jìn)行分區(qū)、安裝文件系統(tǒng)后才能使用。除了在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包效率更高以外,并不比使用文件存儲(chǔ)好多少,客戶端的文件系統(tǒng)依然需要對(duì)路徑分解,然后逐級(jí)查找才能定位到某一個(gè)具體的文件。
為了解決這中麻煩,使用一個(gè)統(tǒng)一的底層存儲(chǔ)系統(tǒng),管理這些文件和底層介質(zhì)的組織結(jié)構(gòu),然后給每個(gè)文件一個(gè)唯一的標(biāo)識(shí),其它系統(tǒng)需要訪問(wèn)某個(gè)文件,直接提供文件的標(biāo)識(shí)就可以了。存儲(chǔ)系統(tǒng)可以用更高效的數(shù)據(jù)組織方式來(lái)管理這些標(biāo)識(shí)以及其對(duì)應(yīng)的存儲(chǔ)介質(zhì)上的塊。當(dāng)然,對(duì)于不同的軟件系統(tǒng)來(lái)說(shuō),一次訪問(wèn)需要獲取的不一定是單個(gè)我們傳統(tǒng)意義上的文件,根據(jù)不同的需要可能只是一個(gè)/組值,某個(gè)文件的一部分,也可能是多個(gè)文件的組合,甚至是某個(gè)塊設(shè)備,統(tǒng)稱為對(duì)象。這就是對(duì)象存儲(chǔ)。