有時候,人難免懷念過去的美好時光,那時的網絡存儲世界可以清晰地分為兩種方法,一種基于文件,另一種基于數據塊。
在云計算出現以前,如果你要處理結構化的數據(如數據庫),就需要使用基于數據塊的SAN方法。如果你要處理非結構化數據(大型文件,文件夾,視頻,醫學影像等。),就需要使用基于文件的NAS方法。
后來,事情發生了變化。人們開始感受到將所有非結構化數據保持在云中的好處。他們就開始思考新的,大量運算工作(如大型數據分析)。將運算和存儲分布到大量設備中可以完成這樣的操作。而且,人們醉心于找到將數據存儲到任何地方聯網的任何設備中。
當然,一旦所謂的網絡是指“互聯網”,那么顯然原來在較快的本地網絡中有效快捷的方法會不適應較慢的互聯網。
對象存儲,基于對象的方法之所以不同于基于數據塊的方法,是因為前者將數據放置到容量靈活變化的數據容器中,也就是所謂的對象。每個對象都包含數據(為解析的字節序列)和元數據(描述對象的可擴展屬性集)。而它不同于基于文件的方法,是因為對象存儲系統利用了一個單獨的平鋪的地址空間,而不是依賴于一個層級型的樹形文件架構。對象是通過簡單的GET-PUT命令訪問,創建,刪除和移動,而不是依賴于NFS,CIFS或其他在互聯網上具有較好遞增適應性的描述性協議。
基于對象的方法存儲兼具簡潔性,有效性,經濟性和擴展性于一體,所以無疑它會成為云存儲中的主導力量。不過,仍然有一些問題存在。
或許最重要的問題是所有在企業中虛擬創建的應用都假設有服從POSIX的文件系統。所以,將應用從企業遷移到云架構中意味著所有已有的應用都必須重寫才能用于新的存儲范例。云計算還不能適應POSIX,所以它使用的是對象存儲,因為與對象相關聯的簡單協議使得創建,移動和刪除等操作更迅速。所以將云用來靈活擴展現有架構的目的難以實現。
即便你用基于對象的方法寫應用也會帶來些許麻煩。一方面,許多都采用最小和最大兩種對象容量。如果你的應用是處理小文件,那么要么是極其低效,要么是將負擔放在應用上將小文件打包到更大的對象中。此外,基于對象的系統通常依賴于集中式元數據存儲,這樣就造成了性能瓶頸和單點故障。最后,基于對象的系統限制了可保存到單一系統緩存中的對象數量。
Map-Reduce,是一個為電腦群組上大型數據集提供分布式運算支持的軟件架構,它是創新式運算獲得成功的又一典范。不過,依賴于過期元數據服務器模式的文件系統部署仍然挑戰著它的性能。
顯然,能集二者于一身的方法才是最佳方案。我們需要一個統一的文件和對象存儲方法,進行快速而簡便的存儲,同時又不影響傳統文件系統的靈活性與兼容性。這樣的方法可以將文件視作對象,將對象視作文件,將文件夾視作容器,又將容器視作文件夾。換言之,存儲應該是未知存取的。
將文件與對象統一起來同樣需要從傳統的軟件觀出發。雖然此處的統一方法以硬件為基礎,但似乎與云的概念有著根本差異。
“鏈式”方案(將存儲與組件裝配聯系起來,然后創造出特定的磁盤驅動和功能以便將存儲用于每個組件)或許在技術上可支持NAS, SAN和對象功能,但是卻帶來了額外風險和成本。與單一的文件或對象存儲相比,用戶需購買更多的存儲空間。除了能耗,冷卻和電纜故障等內部風險外,用戶還可能無法訪問所有數據。而且,你無法獲得擴展性和靈活性,這是與云最本質的區別。
相形之下,在軟件級別的統一方案中,你完全無需了解存儲或硬件相關的問題。
因此,企業可以在自己的私有云或數據中心中創建自己的云服務。在私有或共有云之間傳輸對象,甚至可以在云中的非對象存儲中創建一個對象存儲環境。再將過去的文件應用遷移到云中。創建新的云應用,使之既可以利用對象存儲,又可以利用文件存儲。