物件儲存是一種計算機資料儲存架構，它將資料作為物件進行管理，與其他儲存架構不同（如檔案系統將資料作為檔案層次結構進行管理，而塊儲存則將資料作為扇區和軌道內的塊進行管理）。 每個物件通常包括資料本身、數量不等的元資料和一個全域性唯一的識別符號。物件儲存可以在多個層面實現，包括裝置層面（物件儲存裝置）、系統層面和介面層面。在每一種情況下，物件儲存都試圖實現其他儲存架構所不具備的能力，如可由應用程式直接程式設計的介面，可跨越多個物理硬體例項的名稱空間，以及資料管理功能，如和物件級粒度的資料分發。 物件儲存系統允許保留大量的。物件儲存的用途包括：在 Facebook 上儲存照片，在 Spotify 上儲存歌曲，或在線上協作服務（如 Dropbox）中儲存檔案。 歷史 起源 1995 年，由 Garth Gibson 領導的關於網路附加安全磁碟的研究首次推廣了將不太常見的操作（如名稱空間操作）與常見的操作（如讀和寫）分開的概念，以最佳化兩者的效能和規模。 同年，比利時公司 FilePool 成立，為歸檔功能奠定了基礎。1996 年，物件儲存作為一個研究專案在 Gibson 的卡內基梅隆大學實驗室提出。 另一個關鍵概念是將資料的寫入和讀取抽象為更靈活的資料容器（物件）。NASD 團隊之一的 Howard Gobioff 進一步描述了透過物件儲存架構的細粒度訪問控制，他後來是 Google 檔案系統的發明人之一。 其他相關工作包括卡內基梅隆大學的 Coda 檔案系統專案，該專案始於 1987 年，並催生了 Lustre 檔案系統。 還有 1999 年開始的加州大學伯克利分校的 OceanStore 專案和 1998 年開始的田納西大學諾克斯維爾分校的 Logistical Networking 專案。 1999 年，Gibson 成立了公司，將 NASD 團隊開發的概念商業化。 發展 希捷科技在物件儲存的發展中發揮了核心作用。根據儲存網路工業協會 SNIA 的說法，物件儲存起源於 20 世紀 90 年代末。希捷公司 1999 年的規範介紹了一些最早的命令和作業系統如何有效地從儲存的消費中移除。Object Storage What How and Why NSF Networking Storage Forum SNIA Storage Networking Industry Association Live Webcast February 19 2020 1999 年 10 月 25 日的《基於物件的儲存裝置命令集提案》的初步版本是由希捷提交的，由希捷的 Dave Anderson 編輯，是國家儲存產業聯盟（NSIC）的工作成果，包括卡內基梅隆大學、希捷、IBM、昆騰和 StorageTek 的貢獻。 這篇論文是向 INCITS T10提出的，目的是組建一個委員會並設計一個基於 SCSI 介面協議的規範。這個規範將物件定義為抽象的資料，具有唯一的識別符號和元資料，還定義了物件如何與檔案系統相關，以及其他許多創新概念。Anderson 在 1999 年 10 月的 SNIA 會議上提出了許多這些想法。該演講揭示了 1997 年 2 月原始合作者（由 Anderson 和 Chris Malakapalli 代表希捷）之間簽署的智慧財產權協議，並涵蓋了物件儲存、可擴充套件計算、平臺獨立性和儲存管理的好處。Object Based Storage A Vision slide presentation Dave Anderson and Seagate Technology October 13 1999 httpswwwt10orgftpt10document9999341r0pdf 架構 儲存的抽象化 物件儲存的設計原則之一是將一些較低層次的儲存從管理員和應用程式中抽象出來。因此，資料是作為物件而不是檔案或塊被暴露和管理的。物件包含額外的描述性屬性，可用於更好地進行索引或管理。管理員不必執行較低層次的儲存功能，如構建和管理邏輯卷以利用磁碟容量或設定 RAID 級別以處理磁碟故障。 物件儲存還允許透過不僅僅是檔名和檔案路徑對單個物件進行定址和識別。物件儲存在一個桶內或整個系統中增加了一個唯一的識別符號，以支援更大的名稱空間並消除名稱衝突。 將豐富的自定義元資料納入物件中 物件儲存明確地將檔案元資料與資料分開，以支援額外的功能。相對於檔案系統中的固定元資料（檔名、建立日期、型別等），物件儲存提供了全功能的、自定義的、物件級的元資料，以便於： 捕獲特定應用或特定使用者需要的資訊，以更好地進行索引 支援資料管理策略（例如，驅動物件從一個儲存層移動到另一個儲存層的策略）。 集中管理許多單獨節點和叢集的儲存 最佳化元資料儲存（如封裝、資料庫或鍵值儲存）和快取 索引（當權威元資料與物件內部的元資料封裝在一起時），獨立於資料儲存（如非結構化二進位制儲存）。 此外，在一些基於物件的檔案系統實現中： 檔案系統客戶端只在檔案開啟時與元資料伺服器聯絡一次，然後直接透過物件儲存伺服器獲得內容（而基於塊的檔案系統需要持續的元資料訪問）。 可以根據每個檔案配置資料物件，以允許自適應條頻寬度，甚至可以跨多個物件儲存伺服器進行配置，從而支援對頻寬和 IO 進行最佳化 基於物件的儲存裝置（OSD）以及一些軟體實現（例如，DataCore Swarm）在儲存裝置層面管理元資料和資料： 不是提供面向塊的介面來讀寫固定大小的資料塊，而是將資料組織成靈活大小的資料容器（稱作 物件） 每個物件都有資料（未解釋的位元組序列）和元資料（描述物件的可擴充套件的屬性集）；將兩者物理封裝在一起有利於提升可恢復性。 命令介面包括建立和刪除物件、向單個物件寫入位元組和讀取位元組，以及設定和獲取物件屬性的命令 安全機制提供每個物件和每個命令的訪問控制 程式設計式的資料管理 物件儲存提供了程式設計介面，使應用程式能夠操作資料。在基礎層面，這包括用於基礎讀、寫和刪除操作的增刪改查（CRUD）功能。一些物件儲存的實現更進一步，支援、物件複製、生命週期管理以及物件在不同層級和型別的儲存之間的移動等附加功能。大多數 API 實現是基於 REST 的，允許使用許多標準的 HTTP 呼叫。 實現 雲端儲存 市場上絕大多數的雲端儲存都是利用物件儲存的架構。一些值得注意的例子是 2006 年 3 月首次亮相的亞馬遜網路服務 S3、Microsoft Azure Blob 儲存、Rackspace Files（其程式碼在 2010 年捐贈給 Openstack 專案並作為 OpenStack Swift 釋出）以及 2010 年 5 月釋出的。 基於物件的檔案系統 一些分散式檔案系統使用基於物件的架構，其中檔案元資料儲存在元資料伺服器中，檔案資料儲存在物件儲存伺服器中。檔案系統客戶端軟體與不同的伺服器進行互動，並將其抽象化，以向用戶和應用程式展示一個完整的檔案系統。 物件儲存系統 一些早期的物件儲存被用於歸檔，因為實現是針對資料服務（如不變性）而不是效能進行最佳化。EMC Centera 和日立 HCP（以前被稱為 HCAP）是兩個常見的用於歸檔的物件儲存產品。另一個例子是 Quantum Lattus 物件儲存平臺。 更多的通用物件儲存系統在 2008 年左右進入市場。在雅虎郵箱等網路應用的 私藏 儲存系統的驚人增長和雲端儲存的早期成功的誘惑下，物件儲存系統承諾具有云儲存的規模和能力，並能夠在企業內或有志於雲端儲存的服務提供商處部署系統。 混合儲存 少數物件儲存系統支援統一檔案和物件（UFO）儲存，允許一些客戶在一個儲存系統上儲存物件，同時其他客戶在同一儲存系統上儲存檔案。雖然由於與混合旋轉磁碟和快閃記憶體的混淆，混合儲存 並不是這個概念的一個廣泛接受的術語， 但在一些物件儲存產品中，對相同的資料集有可操作的介面。 私藏 物件儲存 一些大型網際網路公司在物件儲存產品沒有商業化或使用案例非常特殊的情況下開發了自己的軟體。著名的 Facebook 開發了他們自己的物件儲存軟體，代號為 Haystack，以有效解決他們特殊的大規模照片管理需求。 基於物件的儲存裝置 協議和裝置層的物件儲存是在 20 年前提出的，並在近 10 年前作為 基於物件的儲存裝置命令（OSD）被批准用於 SCSI 命令集， 然而，直到希捷 Kinetic 開放儲存平臺的開發，它還沒有投入生產。 物件儲存裝置的 SCSI 命令集是由 SNIA 的一個工作小組為國際資訊科技標準委員會（INCITS）的 T10 委員會開發的。 T10 負責所有 SCSI 標準。 市場採用 最早的物件儲存產品之一，Lustre，被用於 70 的前 100 名超級計算機和約 50 的前 500 名超級計算機。 截至 2013 年 6 月 16 日，這包括前 10 名中的 7 名，包括目前榜單上第四快的系統 中國的天河二號，和第七快的橡樹嶺國家實驗室的泰坦超級計算機。 物件儲存系統在 21 世紀初作為存檔平臺有很好的應用，特別是在薩班斯 奧克斯利法案等合規法律出臺後。在進入市場五年後，EMC 的 Centera 產品聲稱到 2007 年有超過 3500 個客戶和 150PB 的出貨量。 日立的 HCP 產品也聲稱有許多 PB 級的客戶。 較新的物件儲存系統也得到了一些吸引力，特別是圍繞非常大的定製應用，如 eBay 的拍賣網站，EMC Atmos 被用來每天管理超過 5 億個物件。 截至 2014 年 3 月 3 日，EMC 聲稱已經售出超過 15 兆位元組的 Atmos 儲存。 2014 年 7 月 1 日，洛斯阿拉莫斯國家實驗室選擇作為 500PB 儲存環境的基礎，這將是有史以來最大的儲存環境之一。 像 Facebook 的 Haystack 這樣的 私藏 物件儲存系統的規模也令人印象深刻。2009 年 4 月，Haystack 管理著 600 億張照片和 15PB 的儲存，每週增加 22 億張照片和 25TB。Facebook 最近表示，他們每天增加 35 億張照片，儲存 2400 億張照片。 這可能相當於 357PB 之多。 隨著許多新的網路和移動應用程式選擇雲作為儲存二進位制資料的常用方式，雲端儲存已經變得無處不在。 作為許多流行的應用程式如 Smugmug 和 Dropbox 的儲存後端，AWS S3 已經發展到大規模，在 2013 年 4 月引用了超過 2 萬億的儲存物件。 兩個月後，微軟聲稱他們在 Azure 中儲存的物件甚至更多，達到 85 萬億。 到 2014 年 4 月，Azure 聲稱儲存了超過 20 萬億個物件。 Windows Azure 儲存管理著 Blobs（使用者檔案）、表（結構化儲存）和佇列（訊息傳遞），並把它們都算作物件。 市場分析 IDC 已經開始使用其 MarketScape 方法每年評估基於物件的儲存市場。IDC 將 MarketScape 描述為。 對評估供應商在上述市場或細分市場的當前和未來成功的特徵進行定量和定性評估，並提供一個衡量其成為領導者或保持領導地位的標準。IDC 的 MarketScape 評估對新興市場特別有幫助，這些市場往往是分散的，有幾個參與者，缺乏明確的領導者。 在 2019 年，IDC 將戴爾 EMC、日立資料系統、IBM、NetApp 和評為領導者。 標準 基於物件的儲存裝置標準 OSD 版本 1 在 OSD 標準的第一個版本中， 物件是用一個 64 位的分割槽 ID 和一個 64 位的物件 ID 指定的。分割槽在 OSD 中被建立和刪除，而物件在分割槽中被建立和刪除。分割槽或物件沒有固定的大小，它們被允許在裝置的物理大小限制或分割槽的邏輯配額限制下增長。 一套可擴充套件的屬性描述物件。有些屬性是由 OSD 直接實現的，如一個物件的位元組數和一個物件的修改時間。有一個特殊的策略標籤屬性，是安全機制的一部分。其他的屬性則不被 OSD 所解釋。這些是由使用 OSD 進行持久化儲存的上級儲存系統在物件上設定的。例如，屬性可能被用來對物件進行分類，或者用來捕捉儲存在不同 OSD 上的不同物件之間的關係。 列表命令返回一個分割槽中的物件的識別符號列表，可以選擇透過與屬性值的匹配進行過濾。列表命令還可以返回列表物件的選定屬性。 讀和寫的命令可以與獲取和設定屬性的命令結合起來，或者說是捎帶上的。這種能力減少了高層儲存系統穿越介面到 OSD 的次數，這可以提高整體效率。 OSD 版本 2 第二代 SCSI 命令集 基於物件的儲存裝置 2（OSD2）增加了對快照、物件集合的支援，並改進了錯誤處理。 快照是將一個分割槽中的所有物件複製到一個新的分割槽中的時間點。OSD 可以使用寫時複製技術實現空間效率高的複製，這樣兩個分割槽就可以共享快照之間沒有變化的物件，或者 OSD 可以將資料物理地複製到新的分割槽中。該標準定義了克隆和快照，前者是可寫的，後者是隻讀的。 集合是一種特殊的物件，包含其他物件的識別符號。有一些操作可以從集合中新增和刪除，還有一些操作可以獲取或設定集合中所有物件的屬性。集合也被用於錯誤報告。如果一個物件因為介質缺陷（即磁碟上的一個壞點）或 OSD 實現中的軟體錯誤而損壞，它的識別符號會被放入一個特殊的錯誤集合中。使用 OSD 的上級儲存系統可以查詢這個集合並在必要時採取糾正措施。 鍵值儲存和物件儲存之間的差異 不幸的是，物件儲存和鍵 值儲存之間的邊界是模糊的，鍵值儲存有時被寬泛地稱為物件儲存。 傳統的塊儲存介面使用一系列固定大小的塊，這些塊從 0 開始編號。資料必須是準確的固定大小，並且可以儲存在一個特定的塊中，該塊由其邏輯塊編號（LBN）識別。之後，人們可以透過指定其唯一的 LBN 來檢索該資料塊。 在鍵值儲存中，資料是由一個鍵而不是 LBN 來識別的。一個鍵可能是 cat 或 olive 或 42。它可以是一個任意長度的任意位元組序列。資料（在這裡稱為值）不需要有固定的大小，也可以是任意長度的任意位元組序列。人們透過向資料儲存提交金鑰和資料（值）來儲存資料，隨後可以透過提交金鑰來檢索資料。這個概念在程式語言中可以看到。Python 稱其為字典，Perl 稱其為雜湊，Java 和 C 稱其為 map（對映），等等。一些資料儲存也實現了鍵值儲存，如 Memcached、Redis 和 CouchDB。 物件儲存在兩個方面與鍵值儲存相似。首先，物件的識別符號或 URL（相當於鍵）可以是一個任意的字串。 第二，資料可以是任意大小的。 然而，鍵值儲存和物件儲存之間有幾個關鍵的區別。首先，物件儲存還允許人們將一組有限的屬性（元資料）與每一個數據聯絡起來。一個鍵、值和一組屬性的組合被稱為一個物件。其次，物件儲存為大量的資料（幾百兆位元組甚至幾千兆位元組）進行了最佳化，而對於鍵值儲存來說，價值預計相對較小（千兆位元組）。最後，物件儲存通常提供較弱的一致性保證，如最終一致性，而鍵值儲存提供。 參見 Blob 雲端儲存 叢集檔案系統 參考文獻 Category 檔案系統 Category 電腦儲存 Category 資料管理 Category 資料管理軟體