天天看點

《一文搞懂對象存儲》

【對象存儲的應用】

      可以了解為一個海量的存儲空間,适合存儲網際網路上産生的圖檔、短視訊、音頻等海量非結構化資料。您可以通過API在任何時間、任何地點通路對象存儲裡的資料。常用于網際網路業務網站搭建、動靜資源分離、CDN加速等業務場景。

【什麼是對象存儲】

  • 塊存儲

          塊存儲的典型架構是SAN,其采用SCSI協定,利用磁盤或FC提供高性能的随機I/O和吞吐率,具有高性能、高帶寬、低延遲、随機讀寫的優勢,你可以像使用實體硬碟一樣格式化并建立檔案系統來使用塊存儲。塊存儲可以适用于絕大部分通用業務場景資料存儲。

          該架構的成本較高、擴充性差,不利于資料/檔案共享。非叢集情況下,主機之間無法共享資料;不同的作業系統因采用的檔案系統的不同而無法進行檔案共享。

  • 檔案存儲

          檔案存儲的典型架構是NAS,需要利用标準的檔案通路協定來進行資料通路,如Linux系統的NFS協定(目前應用較為廣泛),Windows系統的SMB協定(又稱為CIFS協定)。可以通過設定權限讓不同的用戶端同時通路同一份檔案。NAS架構具備較好的擴充性、造價便宜、易于管理。但該架構的協定開銷較高、帶寬低、延遲大,一般适用于企業部門之間檔案共享,不适用于高性能叢集環境。

  • 塊存儲和檔案存儲的共性

          在塊存儲和檔案存儲中,用檔案或者塊作為基本的存儲機關,塊裝置需要記錄每個資料塊在裝置上的位置資訊。

          一個檔案包含了屬性/中繼資料(例如檔案大小、建立時間、修改時間、存儲路徑等)和内容資料。非對象存儲中,一個檔案的存儲是将檔案的中繼資料和資料一起的。其存儲過程大緻如下:

            1. 參照目前檔案系統的最小塊限制,将檔案分塊;

            2. 将所有分塊寫入硬碟,每個塊中将包含與其關聯的塊資訊,如位址。

          與之對應,一個檔案的讀操作則需要首先找到組成該檔案的第一個塊,然後從中擷取到下一個塊的位址,進而讀取下一個塊,… , 如此按圖索骥的持續讀取,最終完成一個檔案的讀取操作。

  • 對象存儲

          對象存儲克服了塊存儲與檔案存儲的缺點,同時具有SAN的高速直接通路和NAS的分布式資料共享優勢。

          對象存儲中對象将是資料存儲的基本機關,每個對象由資料和資料屬性集(中繼資料和使用者自定義屬性)組成。資料屬性集可以根據應用的需求進行設定,包括資料分布、服務品質等。對象存儲中,資料屬性集部分被存放在控制節點也叫中繼資料伺服器(中繼資料+對象存儲管理軟體),資料部分則被存放在分布式叢集對象存儲伺服器OSD中。當使用者通路一個對象時候,首先需要通路中繼資料伺服器,判斷目前對象是否存在,擷取目前對象的存儲位置資訊,如目前對象分散存儲在哪幾個OSD中,而後直接通路對應的OSD伺服器即可擷取一個對象的完整資訊。由于擷取對象資料的方式是并行處理過程,故資料的傳輸速率相當給力。對象的寫操作也是同樣的道理。通過此種方式,對象存儲可以實作高效讀寫操作。

          至于對象存儲的便于共享特性,我們可以從對象存儲管理軟體入手。對象存儲管理軟體依賴于特定的檔案系統,故OSD對外有相當于檔案伺服器,是以檔案共享問題迎刃而解。

          對象存儲中每個對象都包含三個屬性:

          1. 資料本身 Data;

          2. 可擴充的中繼資料(Metadata + Attributes):由對象建立者指定,主要是對1中資料本身的描述資訊;

          3. 全局唯一辨別符 OID

    《一文搞懂對象存儲》

【對象存儲與塊存儲的差別】

  • 資料存儲方式

          塊存儲中,一個檔案将會被分割成多個資料塊,每一個資料除去擁有一個位址辨別之外沒有額外的資訊來提供更多的關于該資料塊的上下文。

          相對于塊存儲,對象存儲不會對檔案進行分割,而是将整個檔案作為一個存儲單元來存放,這個存儲單元即是對象。對象存儲沒有對檔案類型或者數量進行明确的限定,這些特性是的其具備更強大的存儲能力和靈活性。對象存儲在高可用和持久性上擁有極大的優勢。比如,音頻、視訊、圖檔存儲。

  • 是否提供增量編輯功能

          然而,對象存儲無法提供增量編輯功能,一個對象即是一次操作的最小單元。一旦對象的一部分需要被修改,則整個對象都将被通路、更新,并重新上傳,這可能會影響性能。

          二者的另一個不同之處在于,塊存儲可以被挂載到檔案系統通路而對象存儲則不建議這麼做,否則會顯著降低性能。此外,塊存儲不存在對象存儲所需的對象管理開銷(如重新映射卷)。

  • 資料一緻性

    對象存儲因其分布式特性,提供最終一緻性。而塊存儲提供的是強一緻性,這也是類似事務資料庫之類的軟體需要依賴于塊存儲的根本原因。

  • 存儲對象

    對象存儲更适用于不頻繁變更的海量資料的存儲,比如靜态Web内容、備份或者存檔的圖像音頻資料。

    二者差異示意圖如下所示:

  1. 塊存儲與對象存儲
    《一文搞懂對象存儲》
  2. 塊存儲與對象存儲通路模型
    《一文搞懂對象存儲》

【對象存儲所解決的問題】

  • 爆炸式增長資料的存儲和通路

          為了解決這一問題,塊存儲系統需要随之擴充系統的存儲容量。當一個塊存儲系統達到上百TB容量時候會面臨什麼問題?你可能會受到硬體基礎設施的限制、遇到資料持久性問題,同時毫無疑問的,系統的管理開銷将難以估算。

  • 高可用需求

          對象存儲針對每一個對象一般提供至少三個備援副本

  • 低成本

          如同大多數分布式系統,對象存儲系統完全可以建立在一套廉價的基礎設施之上,并且提供足夠的穩定性、可用性和性能。

【參考連結】

  https://www.druva.com/blog/object-storage-versus-block-storage-understanding-technology-differences/

繼續閱讀