對象儲存(英語:Object storage)是一種電腦數據儲存架構,它將數據作為對象進行管理,與其他儲存架構不同(如檔案系統將數據作為檔案階層進行管理,而塊儲存則將數據作為磁區和軌道內的塊進行管理)。[1] 每個對象通常包括數據本身、數量不等的元數據和一個全域唯一的識別碼。對象儲存可以在多個層面實現,包括裝置層面(對象儲存裝置)、系統層面和介面層面。在每一種情況下,對象儲存都試圖實現其他儲存架構所不具備的能力,如可由應用程式直接編程的介面,可跨越多個物理硬件實例的命名空間,以及數據管理功能,如數據複製英語data replication和對象級粒度的數據分發。

對象儲存系統允許保留大量的非結構化數據英語unstructured data。對象儲存的用途包括:在Facebook上儲存相片,在Spotify上儲存歌曲,或在線上協同運作服務(如Dropbox)中儲存檔案。[2]

歷史

編輯

起源

編輯

1995年,由Garth Gibson領導的關於網絡附加安全磁碟的研究首次推廣了將不太常見的操作(如命名空間操作)與常見的操作(如讀和寫)分開的概念,以最佳化兩者的效能和規模。[3] 同年,比利時公司FilePool成立,為歸檔功能奠定了基礎。1996年,對象儲存作為一個研究專案在Gibson的卡內基·梅隆大學實驗室提出。[4] 另一個關鍵概念是將數據的寫入和讀取抽象為更靈活的數據容器(對象)。NASD團隊之一的Howard Gobioff進一步描述了通過對象儲存架構[5]的細粒度訪問控制,他後來是Google檔案系統的發明人之一。[6] 其他相關工作包括卡內基·梅隆大學Coda檔案系統專案,該專案始於1987年,並催生了Lustre檔案系統[7] 還有1999年開始的加州大學伯克利分校的OceanStore專案[8][9]和1998年開始的田納西大學諾克斯維爾分校的Logistical Networking專案。[10] 1999年,Gibson成立了Panasas英語Panasas公司,將NASD團隊開發的概念商業化。

發展

編輯

希捷科技在對象儲存的發展中發揮了核心作用。根據儲存網絡工業協會SNIA的說法,「對象儲存起源於20世紀90年代末。希捷公司1999年的規範介紹了一些最早的命令和作業系統如何有效地從儲存的消費中移除」。[11]

1999年10月25日的《基於對象的儲存裝置命令集提案》的初步版本是由希捷提交的,由希捷的Dave Anderson編輯,是國家儲存產業聯盟(NSIC)的工作成果,包括卡內基梅隆大學、希捷、IBM、昆騰和StorageTek的貢獻。[12] 這篇論文是向INCITS T-10(國際資訊科技標準委員會英語International Committee for Information Technology Standards)提出的,目的是組建一個委員會並設計一個基於SCSI介面協定的規範。這個規範將對象定義為抽象的數據,具有唯一的識別碼和元數據,還定義了對象如何與檔案系統相關,以及其他許多創新概念。Anderson在1999年10月的SNIA會議上提出了許多這些想法。該演講揭示了1997年2月原始合作者(由Anderson和Chris Malakapalli代表希捷)之間簽署的知識產權協定,並涵蓋了對象儲存、可延伸計算、平台獨立性和儲存管理的好處。[13]

架構

編輯
 

儲存的抽象化

編輯

對象儲存的設計原則之一是將一些較低層次的儲存從管理員和應用程式中抽象出來。因此,數據是作為對象而不是檔案或塊被暴露和管理的。對象包含額外的描述性屬性,可用於更好地進行索引或管理。管理員不必執行較低層次的儲存功能,如構建和管理邏輯卷以利用磁碟容量或設置RAID級別以處理磁碟故障。

對象儲存還允許通過不僅僅是檔名和檔案路徑對單個對象進行定址和辨識。對象儲存在一個桶內或整個系統中增加了一個唯一的識別碼,以支援更大的命名空間並消除名稱衝突。

將豐富的自訂元數據納入對象中

編輯

對象儲存明確地將檔案元數據與數據分開,以支援額外的功能。相對於檔案系統中的固定元數據(檔名、建立日期、類型等),對象儲存提供了全功能的、自訂的、對象級的元數據,以便於:

  • 擷取特定應用或特定用戶需要的資訊,以更好地進行索引
  • 支援數據管理策略(例如,驅動對象從一個儲存層移動到另一個儲存層的策略)。
  • 集中管理許多單獨節點和叢集的儲存
  • 最佳化元數據儲存(如封裝、資料庫或鍵值儲存)和快取/索引(當權威元數據與對象內部的元數據封裝在一起時),獨立於數據儲存(如非結構化二進制儲存)。

此外,在一些基於對象的檔案系統實現中:

  • 檔案系統客戶端只在檔案打開時與元數據伺服器聯絡一次,然後直接通過對象儲存伺服器獲得內容(而基於塊的檔案系統需要持續的元數據訪問)。
  • 可以根據每個檔案組態數據對象,以允許自適應條頻寬度,甚至可以跨多個對象儲存伺服器進行組態,從而支援對頻寬和I/O進行最佳化

基於對象的儲存裝置OSD)以及一些軟件實現(例如,DataCore Swarm)在儲存裝置層面管理元數據和數據:

  • 不是提供面向塊的介面來讀寫固定大小的數據塊,而是將數據組織成靈活大小的數據容器(稱作「對象」)
  • 每個對象都有數據(未解釋的位元組序列)和元數據(描述對象的可延伸的屬性集);將兩者物理封裝在一起有利於提升可恢復性。
  • 命令介面包括建立和刪除對象、向單個對象寫入位元組和讀取位元組,以及設置和取得對象屬性的命令
  • 安全機制提供每個對象和每個命令的訪問控制

編程式的數據管理

編輯

對象儲存提供了編程介面,使應用程式能夠運算元據。在基礎層面,這包括用於基礎讀、寫和刪除操作的增刪改查(CRUD)功能。一些對象儲存的實現更進一步,支援對象版本控制英語object versioning、對象複製、生命周期管理以及對象在不同層級和類型的儲存之間的移動等附加功能。大多數API實現是基於REST的,允許使用許多標準的HTTP呼叫。

實現

編輯

雲端儲存

編輯

市場上絕大多數的雲端儲存都是利用對象儲存的架構。一些值得注意的例子是2006年3月首次亮相的亞馬遜網絡服務S3Microsoft Azure Blob儲存、Rackspace Files(其代碼在2010年捐贈給Openstack專案並作為OpenStack Swift發佈)以及2010年5月發佈的谷歌雲端儲存英語Google Cloud Storage

基於對象的檔案系統

編輯

一些分散式檔案系統使用基於對象的架構,其中檔案元數據儲存在元數據伺服器中,檔案數據儲存在對象儲存伺服器中。檔案系統客戶端軟件與不同的伺服器進行互動,並將其抽象化,以向用戶和應用程式展示一個完整的檔案系統。

對象儲存系統

編輯

一些早期的對象儲存被用於歸檔,因為實現是針對數據服務(如不變性)而不是效能進行最佳化。EMC Centera和日立HCP(以前被稱為HCAP)是兩個常見的用於歸檔的對象儲存產品。另一個例子是Quantum Lattus對象儲存平台。

更多的通用對象儲存系統在2008年左右進入市場。在雅虎郵箱等網絡應用的「私藏」儲存系統的驚人增長和雲端儲存的早期成功的誘惑下,對象儲存系統承諾具有雲端儲存的規模和能力,並能夠在企業內或有志於雲端儲存的服務提供商處部署系統。

混合儲存

編輯

少數對象儲存系統支援統一檔案和對象(UFO)儲存,允許一些客戶在一個儲存系統上儲存對象,同時其他客戶在同一儲存系統上儲存檔案。雖然由於與混合旋轉磁碟和快閃記憶體的混淆,「混合儲存」並不是這個概念的一個廣泛接受的術語,[14] 但在一些對象儲存產品中,對相同的數據集有可操作的介面。

「私藏」對象儲存

編輯

一些大型互聯網公司在對象儲存產品沒有商業化或使用案例非常特殊的情況下開發了自己的軟件。著名的Facebook開發了他們自己的對象儲存軟件,代號為Haystack,以有效解決他們特殊的大規模相片管理需求。

基於對象的儲存裝置

編輯

協定和裝置層的對象儲存是在20年前提出的,並在近10年前作為「基於對象的儲存裝置命令」(OSD)被批准用於SCSI命令集,[15] 然而,直到希捷Kinetic開放儲存平台的開發,它還沒有投入生產。[16][17] 對象儲存裝置的SCSI命令集是由SNIA的一個工作小組為國際資訊科技標準委員會(INCITS)的T10委員會開發的。[18] T10負責所有SCSI標準。

市場採用

編輯

最早的對象儲存產品之一,Lustre,被用於70%的前100名超級電腦和約50%的前500名超級電腦[19] 截至2013年6月16日,這包括前10名中的7名,包括目前榜單上第四快的系統——中國的天河二號,和第七快的橡樹嶺國家實驗室泰坦超級電腦[20]

對象儲存系統在21世紀初作為存檔平台有很好的應用,特別是在薩班斯-奧克斯利法案等合規法律出台後。在進入市場五年後,EMC的Centera產品聲稱到2007年有超過3500個客戶和150PB的出貨量。[21] 日立的HCP產品也聲稱有許多PB級的客戶。[22] 較新的對象儲存系統也得到了一些吸引力,特別是圍繞非常大的客製化應用,如eBay的拍賣網站,EMC Atmos被用來每天管理超過5億個對象。[23] 截至2014年3月3日,EMC聲稱已經售出超過1.5百萬位元組的Atmos儲存。[24] 2014年7月1日,洛斯阿拉莫斯國家實驗室選擇Scality RING英語Scality作為500PB儲存環境的基礎,這將是有史以來最大的儲存環境之一。[25]

像Facebook的Haystack這樣的「私藏」對象儲存系統的規模也令人印象深刻。2009年4月,Haystack管理着600億張相片和1.5PB的儲存,每周增加2.2億張相片和25TB。Facebook最近表示,他們每天增加3.5億張相片,儲存2400億張相片。[26] 這可能相當於357PB之多。[27]

隨着許多新的網絡和流動應用程式選擇雲作為儲存二進制數據的常用方式,雲端儲存已經變得無處不在。[28] 作為許多流行的應用程式如SmugmugDropbox的儲存後端,AWS S3已經發展到大規模,在2013年4月參照了超過2萬億的儲存對象。[29] 兩個月後,微軟聲稱他們在Azure中儲存的對象甚至更多,達到8.5萬億。[30] 到2014年4月,Azure聲稱儲存了超過20萬億個對象。[31] Windows Azure儲存管理着Blobs(用戶檔案)、表(結構化儲存)和佇列(訊息傳遞),並把它們都算作對象。[32]

市場分析

編輯

IDC已經開始使用其MarketScape方法每年評估基於對象的儲存市場。IDC將MarketScape描述為。"...對評估供應商在上述市場或細分市場的當前和未來成功的特徵進行定量和定性評估,並提供一個衡量其成為領導者或保持領導地位的標準。IDC的MarketScape評估對新興市場特別有幫助,這些市場往往是分散的,有幾個參與者,缺乏明確的領導者。"[33]

在2019年,IDC將戴爾EMC、日立數據系統、IBMNetAppScality英語Scality評為領導者。

標準

編輯

基於對象的儲存裝置標準

編輯

OSD版本1

編輯

在OSD標準的第一個版本中,[34] 對象是用一個64位元的分區ID和一個64位元的對象ID指定的。分區在OSD中被建立和刪除,而對象在分區中被建立和刪除。分區或對象沒有固定的大小,它們被允許在裝置的物理大小限制或分區的邏輯配額限制下增長。

一套可延伸的屬性描述對象。有些屬性是由OSD直接實現的,如一個對象的位元組數和一個對象的修改時間。有一個特殊的策略標籤屬性,是安全機制的一部分。其他的屬性則不被OSD所解釋。這些是由使用OSD進行持久化儲存的上級儲存系統在對象上設置的。例如,屬性可能被用來對對象進行分類,或者用來捕捉儲存在不同OSD上的不同對象之間的關係。

列表命令返回一個分區中的對象的識別碼列表,可以選擇通過與屬性值的匹配進行過濾。列表命令還可以返回列表對象的選定屬性。

讀和寫的命令可以與取得和設置屬性的命令結合起來,或者說是捎帶上的。這種能力減少了高層儲存系統穿越介面到OSD的次數,這可以提高整體效率。

OSD版本2

編輯

第二代SCSI命令集「基於對象的儲存裝置-2」(OSD-2)增加了對快照、對象集合的支援,並改進了錯誤處理。[35]

快照是將一個分區中的所有對象複製到一個新的分區中的時間點。OSD可以使用寫時拷貝技術實現空間效率高的拷貝,這樣兩個分區就可以共用快照之間沒有變化的對象,或者OSD可以將數據物理地拷貝到新的分區中。該標準定義了克隆和快照,前者是可寫的,後者是唯讀的。

集合是一種特殊的對象,包含其他對象的識別碼。有一些操作可以從集合中添加和刪除,還有一些操作可以取得或設置集合中所有對象的屬性。集合也被用於錯誤報告。如果一個對象因為媒介缺陷(即磁碟上的一個壞點)或OSD實現中的軟件錯誤而損壞,它的識別碼會被放入一個特殊的錯誤集合中。使用OSD的上級儲存系統可以查詢這個集合併在必要時採取糾正措施。

鍵值儲存和對象儲存之間的差異

編輯

不幸的是,對象儲存和鍵-值儲存之間的邊界是模糊的,鍵值儲存有時被寬泛地稱為對象儲存。[36]

傳統的塊儲存介面使用一系列固定大小的塊,這些塊從0開始編號。數據必須是準確的固定大小,並且可以儲存在一個特定的塊中,該塊由其邏輯塊編號(LBN)辨識。之後,人們可以通過指定其唯一的LBN來檢索該數據塊。

在鍵值儲存中,數據是由一個鍵而不是LBN來辨識的。一個鍵可能是「cat」 或「olive」或「42」。它可以是一個任意長度的任意位元組序列。數據(在這裏稱為值)不需要有固定的大小,也可以是任意長度的任意位元組序列。人們通過向數據儲存提交金鑰和數據(值)來儲存數據,隨後可以通過提交金鑰來檢索數據。這個概念在程式語言中可以看到。Python稱其為字典,Perl稱其為雜湊,Java和C++稱其為map(對映),等等。一些數據儲存也實現了鍵值儲存,如Memcached、Redis和CouchDB。

對象儲存在兩個方面與鍵值儲存相似。首先,對象的識別碼或URL(相當於鍵)可以是一個任意的字串。[37] 第二,數據可以是任意大小的。

然而,鍵值儲存和對象儲存之間有幾個關鍵的區別。首先,對象儲存還允許人們將一組有限的屬性(元數據)與每一個數據聯絡起來。一個鍵、值和一組屬性的組合被稱為一個對象。其次,對象儲存為大量的數據(幾百百萬位元組甚至幾千百萬位元組)進行了最佳化,而對於鍵值儲存來說,價值預計相對較小(千百萬位元組)。最後,對象儲存通常提供較弱的一致性保證,如最終一致性,而鍵值儲存提供強一致性英語strong consistency

參見

編輯

參考文獻

編輯
  1. ^ Porter De Leon, Yadin; Tony Piscopo. Object Storage versus Block Storage: Understanding the Technology Differences. Druva.com. 14 August 2014 [19 January 2015]. (原始內容存檔於2022-01-23). 
  2. ^ Chandrasekaran, Arun, Dayley, Alan. Critical Capabilities for Object Storage. Gartner Research. 11 February 2014 [2021-11-19]. (原始內容存檔於2016-01-14). 
  3. ^ Garth A. Gibson; Nagle D.; Amiri K.; Chan F.; Feinberg E.; Gobioff H.; Lee C.; Ozceri B.; Riedel E.; Rochberg D.; Zelenka J. File Server Scaling with Network-Attached Secure Disks (PDF). Proceedings of the ACM International Conference on Measurement and Modeling of Computer Systems (Sigmetrics 『97). [27 October 2013]. (原始內容存檔 (PDF)於2022-01-20). 
  4. ^ Factor, Michael; Meth, K.; Naor, D.; Rodeh, O.; Satran, J. Object Storage: The Future Building Block for Storage Systems. IBM Haifa Research Labs: 119–123. 2005. CiteSeerX 10.1.1.122.3959 . 
  5. ^ Gobioff, Howard; Gibson, Garth A.; Tygar, Doug. Security for Network Attached Storage Devices (CMU-CS-97-185). Parallel Data Laboratory. 1 October 1997 [7 November 2013]. (原始內容存檔於2016-03-04). 
  6. ^ Sanjay Ghemawat; Howard Gobioff; Shun-Tak Leung. The Google File System (PDF). October 2003 [7 November 2013]. (原始內容存檔 (PDF)於2009-12-14). 
  7. ^ Braam, Peter. Lustre: The intergalactic file system (PDF). [17 September 2013]. (原始內容存檔 (PDF)於2017-12-01). 
  8. ^ OceanStore. [18 September 2013]. (原始內容存檔於8 August 2012). 
  9. ^ Kubiatowicz, John; Wells, Chris; Zhao, Ben; Bindel, David; Chen, Yan; Czerwinski, Steven; Eaton, Patrick; Geels, Dennis; Gummadi, Ramakrishna; Rhea, Sean; Weatherspoon, Hakim. OceanStore: an architecture for global-scale persistent storage. Proceedings of the Ninth International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS-IX. 2000: 190–201. doi:10.1145/378993.379239. 
  10. ^ Plank, James; Beck, Micah; Elwasif, Wael; Moore, Terry; Swany, Martin; Wolski, Rich. The Internet Backplane Protocol: Storage in the Network (PDF). Netstore 1999. October 1999 [27 January 2021]. (原始內容存檔 (PDF)於2022-06-21). 
  11. ^ Object Storage: What, How and Why?, NSF (Networking Storage Forum), SNIA (Storage Networking Industry Association), Live Webcast頁面存檔備份,存於互聯網檔案館) February 19, 2020
  12. ^ Anderson, D. Object based storage devices: a command set proposal (PDF). 1999 [2021-11-19]. S2CID 59781155. (原始內容存檔 (PDF)於2022-01-21). 
  13. ^ Object Based Storage: A Vision, slide presentation, Dave Anderson and Seagate Technology, October 13, 1999 https://www.t10.org/ftp/t10/document.99/99-341r0.pdf頁面存檔備份,存於互聯網檔案館
  14. ^ Crump, George. What Is Hybrid Storage?. [2020-02-16]. (原始內容存檔於2019-09-05). 
  15. ^ Riedel, Erik; Sami Iren. Object Storage and Applications (PDF). February 2007 [3 November 2013]. (原始內容存檔 (PDF)於2022-08-11). 
  16. ^ The Seagate Kinetic Open Storage Vision. Seagate. [3 November 2013]. (原始內容存檔於2019-06-16). 
  17. ^ Gallagher, Sean. Seagate introduces a new drive interface: Ethernet. Arstechnica.com. 27 October 2013 [3 November 2013]. (原始內容存檔於2022-06-21). 
  18. ^ Corbet, Jonathan. Linux and object storage devices. LWN.net. 4 November 2008 [8 November 2013]. (原始內容存檔於2022-03-20). 
  19. ^ Dilger, Andreas. Lustre Future Development (PDF). IEEE MSST. [27 October 2013]. (原始內容 (PDF)存檔於29 October 2013). 
  20. ^ Datadirect Networks to build world's fastest storage system for Titan, the world's most powerful supercomputer. [27 October 2013]. (原始內容存檔於29 October 2013). 
  21. ^ EMC Marks Five Years of EMC Centera Innovation and Market Leadership. EMC. 18 April 2007 [3 November 2013]. (原始內容存檔於2014-01-23). 
  22. ^ Hitachi Content Platform Supports Multiple Petabytes, Billions of Objects. Techvalidate.com. [19 September 2013]. (原始內容存檔於24 September 2015). 
  23. ^ Robb, Drew. EMC World Continues Focus on Big Data, Cloud and Flash. Infostor. 11 May 2011 [19 September 2013]. (原始內容存檔於2021-12-07). 
  24. ^ Hamilton, George. In it for the Long Run: EMC's Object Storage Leadership. [15 March 2014]. (原始內容存檔於15 March 2014). 
  25. ^ Mellor, Chris. Los Alamos National Laboratory likes it, puts Scality's RING on it. The Register. 1 July 2014 [26 January 2015]. (原始內容存檔於2020-01-07). 
  26. ^ Miller, Rich. Facebook Builds Exabyte Data Centers for Cold Storage. Datacenterknowledge.com. 13 January 2013 [6 November 2013]. (原始內容存檔於2014-05-22). 
  27. ^ Leung, Leo. How much data does x store?. Techexpectations.org. 17 May 2014 [23 May 2014]. (原始內容存檔於22 May 2014). 
  28. ^ Leung, Leo. Object storage already dominates our days (we just didn't notice). January 11, 2012 [27 October 2013]. (原始內容存檔於29 September 2013). 
  29. ^ Harris, Derrick. Amazon S3 goes exponential, now stores 2 trillion objects. Gigaom. 18 April 2013 [17 September 2013]. (原始內容存檔於2022-01-19). 
  30. ^ Wilhelm, Alex. Microsoft: Azure powers 299M Skype users, 50M Office Web Apps users, stores 8.5T objects. thenextweb.com. 27 June 2013 [18 September 2013]. (原始內容存檔於2021-02-26). 
  31. ^ Nelson, Fritz. Microsoft Azure's 44 New Enhancements, 20 Trillion Objects. Tom's IT Pro. 4 April 2014 [3 September 2014]. (原始內容存檔於6 May 2014). 
  32. ^ Calder, Brad. Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency (PDF). 23rd ACM Symposium on Operating Systems Principles (SOSP): Microsoft. [6 November 2013]. (原始內容存檔 (PDF)於2017-10-13). 
  33. ^ Potnis, Amita. IDC MarketScape: Worldwide Object-Based Storage 2019 Vendor Assessment. idc.com. IDC. [16 Feb 2020]. (原始內容存檔於2021-11-19). 
  34. ^ INCITS 400-2004. InterNational Committee for Information Technology Standards. [8 November 2013]. 
  35. ^ INCITS 458-2011. InterNational Committee for Information Technology Standards. 15 March 2011 [8 November 2013]. (原始內容存檔於2016-03-09). 
  36. ^ 存档副本. [2021-11-19]. (原始內容存檔於2015-02-21). 
  37. ^ OpenStack Foundation. Object Storage API overview. OpenStack Documentation. [9 June 2017]. (原始內容存檔於2017-07-03).