NAS文件服務(wù)器或文件管理器在過去的25年里一直是存儲非結(jié)構(gòu)化數(shù)據(jù)或非標(biāo)準(zhǔn)數(shù)據(jù)庫數(shù)據(jù)的傳統(tǒng)方式。面向非結(jié)構(gòu)化數(shù)據(jù),并不意味著數(shù)據(jù)本身沒有結(jié)構(gòu),因?yàn)槲募举|(zhì)上就是一個二進(jìn)制對象。基于以上原理,許多供應(yīng)商已經(jīng)為相同的非結(jié)構(gòu)化數(shù)據(jù)同時提供對象級存儲和文件級存儲接口,我們有望看到新興的對象存儲成為傳統(tǒng)文件服務(wù)器的替代者。
我們將在這篇文章中討論混合使用對象級存儲和文件存儲兩種方式來存儲非結(jié)構(gòu)化數(shù)據(jù)時的優(yōu)劣對比,并研究IT部門在考察相關(guān)產(chǎn)品時應(yīng)該考慮哪些重點(diǎn)。
NAS歷史回顧
NAS涵蓋了源自IT世界兩段不同歷史的兩種技術(shù)。其一是由Sun Microsystems開發(fā)的NFS,已經(jīng)成為非Windows系統(tǒng)訪問網(wǎng)絡(luò)文件內(nèi)容的標(biāo)準(zhǔn)協(xié)議。另一種就是SMB,也就是廣為人知CIFS,是Microsoft平臺的文件共享協(xié)議。兩種技術(shù)自從推出以來都發(fā)展迅速,不斷提升和增加擴(kuò)展功能,超越簡單文件共享實(shí)現(xiàn)更廣泛的功能。
傳統(tǒng)的NAS會使用RAID技術(shù)來防護(hù)磁盤故障,供應(yīng)商的大多數(shù)NAS產(chǎn)品也都基于雙控制器架構(gòu)來防護(hù)硬件故障,其中一些NAS產(chǎn)品還能實(shí)現(xiàn)橫向擴(kuò)展。NAS的文件系統(tǒng)首先構(gòu)建在物理存儲介質(zhì)上,這些文件系統(tǒng)再使用NFS或SMB向網(wǎng)絡(luò)公開。
NAS和對象存儲的相似點(diǎn)
基于文件的NAS和基于對象的存儲都面向相同的數(shù)據(jù)類型——非結(jié)構(gòu)化文件,在文件內(nèi)部或者外部維護(hù)文件層級信息。兩者都可以支持橫向擴(kuò)展架構(gòu),從而能存儲海量文件或?qū)ο蟆?/p>
用文件系統(tǒng)來充當(dāng)數(shù)據(jù)存儲基礎(chǔ)也帶來一些可用性問題:
可擴(kuò)展性問題。在單節(jié)點(diǎn)NAS或故障轉(zhuǎn)移雙節(jié)點(diǎn)NAS上,文件系統(tǒng)只位于單個操作系統(tǒng)實(shí)例上。這種方式可以相對容易地處理諸如文件創(chuàng)建、鎖定和更新的“固定模式”操作。然而,文件系統(tǒng)的擴(kuò)展是一個真正的挑戰(zhàn),并且問題在需要處理眾多節(jié)點(diǎn)變得非常復(fù)雜。
數(shù)據(jù)完整性。文件系統(tǒng)將數(shù)據(jù)分解為元數(shù)據(jù)和數(shù)據(jù)內(nèi)容,然后存儲在邏輯或物理磁盤卷空間內(nèi)。如果文件服務(wù)器意外掉電,那么系統(tǒng)必須執(zhí)行文件系統(tǒng)檢查(FSCK)來校驗(yàn)掉電時數(shù)據(jù)的完整性。根據(jù)文件系統(tǒng)的實(shí)現(xiàn)方式,校驗(yàn)操作可能會帶來很大的延遲;某些NAS系統(tǒng),如NetApp的Data ONTAP,會使用非易失性RAM來處理海量數(shù)據(jù)的校驗(yàn)和確認(rèn),從而降低FSCK的開銷。
RAID保護(hù)。從Gatter Gibson和Randy Katz在1987年的一篇論文開始,RAID已成為存儲設(shè)備的常規(guī)保護(hù)措施。RAID技術(shù)為我們服務(wù)了很多年,但現(xiàn)在已經(jīng)開始達(dá)到可擴(kuò)展性的極限,因?yàn)橛脖P驅(qū)動器的容量不斷增長,結(jié)果已經(jīng)遠(yuǎn)遠(yuǎn)超出RAID論文發(fā)表時的預(yù)計(jì)。今天的RAID系統(tǒng)重建時間可能會持續(xù)數(shù)天,這已經(jīng)是個大問題,隨著新款12TB容量驅(qū)動器的發(fā)布和不斷投入使用,RAID的前景將會更加困難。
RAID僅適用于保護(hù)存儲在單個設(shè)備中的數(shù)據(jù),這也是額外的限制條件。為了保護(hù)數(shù)據(jù)免受單純設(shè)備故障之外的侵害,必須對數(shù)據(jù)進(jìn)行復(fù)制,在地理上分散的不同位置創(chuàng)建數(shù)據(jù)的完整副本。
理解對象存儲
基于對象的存儲是存儲二進(jìn)制數(shù)據(jù)或?qū)ο蟮南鄬^新的方式。該技術(shù)可以追溯到20世紀(jì)90年代中期,一家名為FilePool的公司提出了可尋址內(nèi)容存儲的概念。EMC(現(xiàn)在的戴爾EMC)收購了FilePool,其產(chǎn)品成為Centera產(chǎn)品線。此后,許多供應(yīng)商都已經(jīng)進(jìn)入這個可以存儲海量非結(jié)構(gòu)化內(nèi)容的新概念市場。
NAS產(chǎn)品基于文件系統(tǒng)存儲非結(jié)構(gòu)化數(shù)據(jù),這種機(jī)制的性能和數(shù)據(jù)完整性缺陷無法避免;而對象存儲是一套物理存儲架構(gòu),完全消除了以上問題。這是因?yàn)閷ο蟠鎯Σ⒉皇褂梦募到y(tǒng)概念,而是將數(shù)據(jù)存儲在單個平面命名空間或?qū)哟谓Y(jié)構(gòu)中。
對象級存儲在以下幾個關(guān)鍵領(lǐng)域與NAS不同:
通過基于Web的協(xié)議(HTTP或HTTPS)訪問,而且通常是無狀態(tài)連接。對象存儲平臺的每次讀寫操作都使用諸如store-create,update和delete這樣的簡單指令。
沒有文件目錄結(jié)構(gòu)。對象級存儲提供“存儲單元”或邏輯存儲容器,以平坦,非分層的方式存儲數(shù)據(jù)。
不關(guān)注數(shù)據(jù)格式或結(jié)構(gòu)。數(shù)據(jù)的內(nèi)容屬性描述信息會保存在元數(shù)據(jù)中,和數(shù)據(jù)本身同時存儲。這些屬性可以是系統(tǒng)元數(shù)據(jù),例如數(shù)據(jù)保存的日期時間,或用戶定義的元數(shù)據(jù),從而讓外部應(yīng)用程序更容易對數(shù)據(jù)內(nèi)容執(zhí)行檢索和搜索。
修改操作不改變舊數(shù)據(jù)。新數(shù)據(jù)對象的存儲是一個無關(guān)聯(lián)的操作,而數(shù)據(jù)對象的修改更新實(shí)際上包括刪除和創(chuàng)建操作,并不會實(shí)際修改已有數(shù)據(jù)。
廣受認(rèn)同的對象存儲的高度可擴(kuò)展性。許多IT公司認(rèn)為,如果沒有存儲海量二進(jìn)制數(shù)據(jù)的需求,就沒有必要選擇對象存儲。這種偏見正在消除,對象存儲適合任何環(huán)境,而不只是超大規(guī)模的云。
通過可替代RAID的技術(shù)措施實(shí)現(xiàn)數(shù)據(jù)保護(hù)。這些技術(shù)包括保留對象的多個本地或遠(yuǎn)程副本,或者使用擦除編碼。
使用特殊的內(nèi)容鎖定技術(shù)。內(nèi)容鎖定可以保障NAS的數(shù)據(jù)完整性。單獨(dú)的文件可以打開以進(jìn)行獨(dú)占或?qū)懭朐L問,確保數(shù)據(jù)只能在任何一個時間被單個來源編寫。對象存儲并不提供原生的鎖定功能,但會確保對象被視為不可變的,這意味著數(shù)據(jù)會被覆蓋以保持一致性。
毫無疑問,對象和文件存儲之間的界限有些模糊。
對比兩種存儲系統(tǒng)的屬性,我們可以看到存儲數(shù)據(jù)的兩種方法之間也有很多相似之處。兩者都適用于非結(jié)構(gòu)化數(shù)據(jù),并使用元數(shù)據(jù)來跟蹤正在存儲的特定對象的信息。可以看出,改造對象存儲以提供NAS協(xié)議并不困難。
合并對象和NAS存儲
為什么要合并NAS和對象存儲?除了只需運(yùn)行單個存儲平臺帶來的物理存儲的明顯節(jié)省外,還有其他好處:
對象存儲器使用擦除編碼技術(shù)來支持位置分散的數(shù)據(jù)的保護(hù)和訪問。這意味著不再需要使用傳統(tǒng)復(fù)制技術(shù)來保留數(shù)據(jù)的整個副本。存儲硬件節(jié)省效果顯著,但還有其他好處,例如能夠有效地將數(shù)據(jù)訪問擴(kuò)展到多個位置,而不是點(diǎn)對點(diǎn)性質(zhì)的復(fù)制。提醒一句:地理分布文件的鎖定——實(shí)現(xiàn)有效的、分布式對象的關(guān)鍵要素——并不簡單。
可以同時從使用多個協(xié)議的不同系統(tǒng)上訪問數(shù)據(jù)。對象存儲既可以通過傳統(tǒng)協(xié)議(如NFS或SMB)提供內(nèi)容服務(wù),需要時也可以使用更有效的基于對象的訪問方式來分析數(shù)據(jù)內(nèi)容,以支持其他目的。與NAS相比,對象協(xié)議的無狀態(tài)特性減少了訪問內(nèi)容的開銷,例如文件鎖定或跟蹤,分配鎖和跟蹤打開的文件句柄(請參閱“減少開銷”)。
對象存儲介質(zhì)易于擴(kuò)展而且便宜。在提供傳統(tǒng)文件訪問功能的同時,對象存儲也是歸檔存儲的理想選擇。您還可以將數(shù)據(jù)移動到云端對象存儲,包括長期冷數(shù)據(jù)歸檔,同時還能保留一定限度的元數(shù)據(jù)實(shí)現(xiàn)內(nèi)容檢索。這種混合使用物理和云存儲資源的方法大大簡化了混合存儲平臺的開發(fā)。
基于對象的NAS:供應(yīng)商評述
有哪些供應(yīng)商提供基于對象的NAS產(chǎn)品?我們看到有兩種不同類型的產(chǎn)品誕生:利用基于對象的NAS來提升NAS使用體驗(yàn),而且無需暴露底層對象存儲;或者,供應(yīng)商提供混合的NAS和對象功能,數(shù)據(jù)通過兩種協(xié)議都可以訪問。
基于對象的NAS產(chǎn)品模式的例子包括Nasuni,這是一個提供基于云的全局NAS產(chǎn)品的初創(chuàng)公司,NAS的后端存儲空間則基于Amazon Web Services Simple Storage Service(亞馬遜Web服務(wù)簡單存儲服務(wù))。另外一家采用類似技術(shù)的公司是Exablox(現(xiàn)在屬于StorageCraft公司)。該公司的橫向擴(kuò)展OneBlox系統(tǒng)使用環(huán)行分布式對象存儲來保存文件內(nèi)容,同時提供一些有意思的功能,如智能文件版本控制和快照。OneBlox底層會對象分解成允許重復(fù)數(shù)據(jù)刪除的塊,但這些細(xì)節(jié)用戶無法訪問。
在商業(yè)對象存儲軟件領(lǐng)域也有一系列專有供應(yīng)商產(chǎn)品。以下是一些例子:
Scality公司的RING產(chǎn)品,提供SMB 2.0和NFSv3支持,包括與Microsoft Active Directory的集成。多協(xié)議的支持通過在RING平臺本機(jī)運(yùn)行的不同協(xié)議“連接器”服務(wù)來實(shí)現(xiàn)。
Caringo公司的Filefly產(chǎn)品,使用后臺文件服務(wù)來擴(kuò)展公司的Swarm對象存儲,從而支持NAS協(xié)議。該公司還提供輕量級接口SwarmNFS,可以利用NFSv4版本協(xié)議訪問Swarm對象存儲中存儲的數(shù)據(jù)。
DataDirect Networks公司,在其WOS對象存儲產(chǎn)品中提供名為NoFS的功能,讓您可以使用文件服務(wù)。該公司宣稱,使用NoFS可以比傳統(tǒng)文件服務(wù)系統(tǒng)節(jié)省15%至20%的存儲空間,并顯著減少I/O流量沖擊。
Hitachi Data Systems通過HCP Anywhere在該公司的Hitachi Content Platform對象存儲平臺上實(shí)現(xiàn)NAS訪問。使用定制開發(fā)的HCP Anywhere應(yīng)用程序讓數(shù)據(jù)內(nèi)容可以被移動設(shè)備訪問。
Cloudian公司,使用HyperStore Connect for Files實(shí)現(xiàn)對其HyperStore對象平臺的文件訪問。該產(chǎn)品提供無狀態(tài)接入點(diǎn),從而提供包括全局命名空間和文件鎖定的標(biāo)準(zhǔn)NAS功能。
除了提供原生NAS支持的對象存儲供應(yīng)商之外,還有一些公司提供可以連接到對象存儲的文件網(wǎng)關(guān),例如Avere公司的FXT產(chǎn)品。然而,這些非原生產(chǎn)品不能同時通過NAS和對象兩種協(xié)議訪問數(shù)據(jù),因?yàn)閿?shù)據(jù)可能會用專有格式存儲到后端對象存儲,不可能直接從對象級別訪問。
最后我們也應(yīng)該提到可供選擇的開源產(chǎn)品。Ceph基于支持對象、文件和塊格式的橫向擴(kuò)展平臺來實(shí)現(xiàn)對象存儲功能,盡管當(dāng)前它還不支持直接通過多個協(xié)議暴露相同的數(shù)據(jù)。還有OpenIO,它支持一系列存儲協(xié)議,并且可以部署在普通商品硬件上。支持的硬件還包括基于ARM的硬件,該公司使用名為“nano”的ARM節(jié)點(diǎn)可以將獨(dú)立的硬盤驅(qū)動器轉(zhuǎn)換為存儲服務(wù)器。
數(shù)據(jù)分析的伙伴
對象和文件是數(shù)據(jù)分析的好伙伴。使用傳統(tǒng)的NAS協(xié)議存儲數(shù)據(jù),使用對象或HTTP進(jìn)行后端分析,這種組合可以將并行的兩種業(yè)務(wù)的開銷和相互影響降到最低。對象協(xié)議不需要文件鎖定和其他數(shù)據(jù)完整性功能,因?yàn)閿?shù)據(jù)的讀寫都是靜態(tài)的。這就減少了文件系統(tǒng)的開銷并提高了性能。
毫無疑問,對象和文件存儲之間的界限是模糊的,對于很多用例來說,合并這兩者合情合理。對象級存儲提供了比傳統(tǒng)NAS存儲更實(shí)用的存儲方法,具有更高的效率和地理靈活性。我們可以預(yù)計(jì),未來所有非結(jié)構(gòu)化存儲設(shè)備都會原生地同時支持標(biāo)準(zhǔn)的對象和文件兩種協(xié)議。