OSS與文件系統的對比 文件存儲 塊存儲 對象存儲


 

基本概念介紹_開發指南_對象存儲 OSS-阿里雲  https://help.aliyun.com/document_detail/31827.html

 

強一致性

Object 操作在 OSS 上具有原子性,操作要么成功要么失敗,不會存在有中間狀態的Object。OSS 保證用戶一旦上傳完成之后讀到的 Object 是完整的,OSS 不會返回給用戶一個部分上傳成功的 Object。

Object 操作在 OSS 上同樣具有強一致性,用戶一旦收到了一個上傳(PUT)成功的響應,該上傳的 Object 就已經立即可讀,並且數據的三份副本已經寫成功。不存在一種上傳的中間狀態,即 read-after-write 卻無法讀取到數據。對於刪除操作也是一樣的,用戶刪除指定的 Object 成功之后,該 Object 立即變為不存在。

強一致性方便了用戶架構設計,可以使用跟傳統存儲設備同樣的邏輯來使用OSS,修改立即可見,無需考慮最終一致性帶來的各種問題。

OSS與文件系統的對比

OSS 是一個分布式的對象存儲服務,提供的是一個 Key-Value 對形式的對象存儲服務。用戶可以根據 Object 的名稱(Key)唯一的獲取該Object的內容。雖然用戶可以使用類似 test1/test.jpg 的名字,但是這並不表示用戶的 Object 是保存在test1 目錄下面的。對於 OSS 來說,test1/test.jpg 僅僅只是一個字符串,和a.jpg 這種並沒有本質的區別。因此不同名稱的 Object 之間的訪問消耗的資源是類似的。

文件系統是一種典型的樹狀索引結構,一個名為 test1/test.jpg 的文件,訪問過程需要先訪問到 test1 這個目錄,然后再在該目錄下查找名為 test.jpg 的文件。因此文件系統可以很輕易的支持文件夾的操作,比如重命名目錄、刪除目錄、移動目錄等,因為這些操作僅僅只是針對目錄節點的操作。這種組織結構也決定了文件系統訪問越深的目錄消耗的資源也越大,操作擁有很多文件的目錄也會非常慢。

對於 OSS 來說,可以通過一些操作來模擬類似的功能,但是代價非常昂貴。比如重命名目錄,希望將 test1 目錄重命名成 test2,那么 OSS 的實際操作是將所有以 test1/ 開頭的 Object 都重新復制成以 test2/ 開頭的 Object,這是一個非常消耗資源的操作。因此在使用 OSS 的時候要盡量避免類似的操作。

OSS 保存的 Object 不支持修改(追加寫 Object 需要調用特定的接口,生成的 Object 也和正常上傳的 Object 類型上有差別)。用戶哪怕是僅僅需要修改一個字節也需要重新上傳整個 Object。而文件系統的文件支持修改,比如修改指定偏移位置的內容、截斷文件尾部等,這些特點也使得文件系統擁有廣泛的適用性。但另外一方面,OSS 能支持海量的用戶並發訪問,而文件系統會受限於單個設備的性能。

因此,將 OSS 映射為文件系統是非常低效的,也是不建議的做法。如果一定要掛載成文件系統的話,建議盡量只做寫新文件、刪除文件、讀取文件這幾種操作。使用 OSS 應該充分發揮其優點,即海量數據處理能力,優先用來存儲海量的非結構化數據,比如圖片、視頻、文檔等。

以下是OSS與文件系統的概念對比:

對象存儲 OSS 文件系統
Object 文件
Bucket 主目錄
Region
Endpoint
AccessKey
多級目錄
GetService 獲取主目錄列表
GetBucket 獲取文件列表
PutObject 寫文件
AppendObject 追加寫文件
GetObject 讀文件
DeleteObject 刪除文件
修改文件內容
CopyObject (目的和源相同) 修改文件屬性
CopyObject 復制文件
重命名文件

OSS 術語表

英文 中文
Bucket 存儲空間
Object 對象或者文件
Endpoint OSS 訪問域名
Region 地域或者數據中心
AccessKey AccessKeyId 和 AccessKeySecret 的統稱,訪問密鑰
Put Object 簡單上傳
Post Object 表單上傳
Multipart Upload 分片上傳
Append Object 追加上傳
Get Object 簡單下載
Callback 回調
Object Meta 文件元信息。用來描述文件信息,例如長度,類型等
Data 文件數據
Key 文件名
ACL (Access Control List) 存儲空間或者文件的權限

 

 

 

新建文件夾_管理文件_控制台用戶指南_對象存儲 OSS-阿里雲 https://help.aliyun.com/document_detail/31910.html

新建文件夾
更新時間:2018-06-08 18:13:54 編輯 ·
阿里雲 OSS 服務是沒有文件夾這個概念的,所有元素都是以對象來存儲。OSS 控制台中的文件夾本質上來說是創建了一個大小為 0 並以”/“結尾的對象用於同類文件的歸類操作和批處理,同時控制台默認將以”/“結尾的對象作為文件夾形式展現。該對象同樣可以上傳及下載。用戶可以在 OSS 控制台中,采用同 Windows 文件夾的基本操作使用 OSS 文件夾。

說明
對於任何一個以”/“結尾的對象,不論該對象是否存有數據,在控制台中都是以文件夾的方式顯示,用戶只能通過 API 或 SDK 的方式來下載該對象。對模擬文件夾具體的實現與操作可以參考:

 

存儲空間(Bucket)

存儲空間是用戶用於存儲對象(Object)的容器,所有的對象都必須隸屬於某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權限、存儲類型等。用戶可以根據實際需求,創建不同類型的存儲空間來存儲不同的數據。

  • 同一個存儲空間的內部是扁平的,沒有文件系統的目錄等概念,所有的對象都直接隸屬於其對應的存儲空間。
  • 每個用戶可以擁有多個存儲空間。
  • 存儲空間的名稱在 OSS 范圍內必須是全局唯一的,一旦創建之后無法修改名稱。
  • 存儲空間內部的對象數目沒有限制。

https://www.redhat.com/zh/topics/data-storage/file-block-object-storage

文件、塊和對象是三種以不同的方式來保存、整理和呈現數據的存儲格式。這些格式各有各的功能和限制。文件存儲會以文件和文件夾的層次結構來整理和呈現數據;塊存儲會將數據拆分到任意划分且大小相同的卷中; 對象存儲會管理數據並將其鏈接至關聯的元數據。


什么是文件存儲?

文件存儲也稱為文件級存儲或基於文件的存儲,且正如您所想:數據會以單條信息的形式存儲在文件夾中,正如您將幾張紙放入一個馬尼拉文件夾中一樣。當您需要訪問該數據時,您的計算機需要知道相應的查找路徑。(注意,這可能會是一條蜿蜒冗長的路徑。)存儲在文件中的數據會根據數量有限的元數據來進行整理和檢索,這些元數據會告訴計算機文件所在的確切位置。它就像是數據文件的庫卡目錄。

請試想一下塞滿文件櫃的儲藏室。每個文檔都會按照某種類型的邏輯層次結構來排放 ——按文件櫃、抽屜、文件夾,然后再是紙張。“分層存儲”這個術語就是這么來的,而這就是文件存儲。它是適用於直接和網絡附加存儲系統的最古老且運用最為廣泛的一種數據存儲系統;而且,這種系統您可能已經用了數十年。只要您訪問保存在個人計算機上的文件中的文檔,您就是在使用文件存儲。文件存儲具有豐富多樣的功能,幾乎可以存儲任何內容。它非常適合用來存儲一系列復雜文件,並且有助於用戶快速導航。

問題是,就像文件櫃一樣,虛擬抽屜只能打開到一定的程度。基於文件的存儲系統必須通過添置更多系統來進行橫向擴展,而不是通過增添更多容量來進行縱向擴展。


什么是塊存儲?

塊存儲會將數據拆分成塊,並單獨存儲各個塊。每個數據塊都有一個唯一標識符,所以存儲系統能將較小的數據存放在最方便的位置。這意味着有些數據可以存儲在 Linux 環境中,有些則可以存儲在 Windows 單元中。

塊存儲通常會被配置為將數據與用戶環境分離,並會將數據分布到可以更好地為其提供服務的多個環境中。然后,當用戶請求數據時,底層存儲軟件會重新組裝來自這些環境的數據塊,並將它們呈現給用戶。它通常會部署在存儲區域網絡 (SAN) 環境中,而且必須綁定到正常運行的服務器。

由於塊存儲不依賴於單條數據路徑(和文件存儲一樣),因此可以實現快速檢索。每個塊都獨立存在,且可進行分區,因此可以通過不同的操作系統進行訪問,這使得用戶可以完全自由地配置數據。它是一種高效可靠的數據存儲方式,且易於使用和管理。它適用於要執行大型事務的企業和部署了大型數據庫的企業。這意味着,需要存儲的數據越多,就越適合使用塊存儲。

但是,塊存儲有一些缺點。塊存儲的成本高昂。它處理元數據的能力有限;這意味着,它需要在應用或數據庫級別進行處理 — 開發人員或系統管理員又多了一件事要擔憂。


什么是對象存儲?

對象存儲,也稱為基於對象的存儲,是一種扁平結構,其中的文件被拆分成多個部分並散布在多個硬件間。在對象存儲中,數據會被分解為稱為“對象”的離散單元,並保存在單個存儲庫中,而不是作為文件夾中的文件或服務器上的塊來保存。

對象存儲卷會作為模塊化單元來工作:每個卷都是一個自包含式存儲庫,均含有數據、允許在分布式系統上找到對象的唯一標識符以及描述數據的元數據。元數據很重要,其包括年齡、隱私/安全信息和訪問突發事件等詳細信息。對象存儲元數據也可以非常詳細,並且能夠存儲與視頻拍攝地點、所用相機和各個幀中特寫的演員有關的信息。為了檢索數據,存儲操作系統會使用元數據和標識符,這樣可以更好地分配負載,並允許管理員應用策略來執行更強大的搜索。

對象存儲需要一個簡單的 HTTP 應用編程接口 (API),以供大多數客戶端(各種語言)使用。對象存儲經濟高效:您只需為已用的內容付費。它可以輕松擴展,因而是公共雲存儲的理想之選。它是一個非常適用於靜態數據的存儲系統,其靈活性和扁平性意味着它可以通過擴展來存儲極大量的數據。對象具有足夠的信息供應用快速查找數據,並且擅長存儲非結構化數據。

當然,它也存在缺點。無法修改對象 — 您必須一次性完整地寫入對象。對象存儲也不能很好地與傳統數據庫搭配使用,因為編寫對象是一個緩慢的過程,編寫應用以使用對象存儲 API 並不像使用文件存儲那么簡單。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM