目前市面上最主要的公有云服務供應商包括AWS、Google Cloud Platform、Microsoft Azure,以及IBM SoftLayer,他們都提供了云存儲服務,具體又該如何選擇?
此時必須針對每個應用程序工作負載的具體需求來決定,但考慮因素很多,例如功能、成本、位置、安全與合規、性能、私有云現有數據中心所用的技術,以及簽署過的企業協議或折扣價格等。
本文將詳細談談不同公有云供應商在云存儲方面的差異。
云存儲的不同類型
大部分云供應商都提供了不同類型的數據存儲選項,例如:
對象存儲(Object storage) 塊存儲(Block storage) 實例/服務器存儲("短暫"存儲) 歸檔存儲(Archival storage) 內容交付網絡(CDN) 隊列服務(Queue service) 數據庫服務 緩存服務 導入/導出服務本文將重點介紹兩種最常用的核心存儲服務:對象存儲和塊存儲,因為這兩種類型幾乎是所有公有云服務的用戶都會用到的。
對象存儲:AWS Simple Storage Service (S3)
存儲抽象:“Bucket” 每個 Bucket 可存儲無限數量的對象,每個對象最大5TBSLA: Standard(標準):-- 可用性:年均99.99%
-- 持久性:年均99.99999999999%(11個9) Infrequent(不頻繁):
-- 可用性:年均99.9%
-- 持久性:年均99.99999999999%(11個9)加密:傳輸中和存儲后 多種加密選項:AWS控制的密鑰,用戶控制的密鑰
S3使用“Bucket”描述用于存儲對象的存儲抽象。每個Bucket可保存無限數量的對象,每個對象最大可達到5TB。S3分為標準和不頻繁兩種服務級別:標準級服務可用性為年均99.99%,持久性為11個9,簡單來說,對于標準級S3中存儲的每10,000個對象,每10,000年才會丟失一個。
S3的另一個服務級別Infrequent access(不頻繁訪問),99.9%的可用性略低,持久性同樣為11個9。不頻繁訪問級別定價略低。
這些存儲級別都可通過SSL和TLS加密傳輸中的數據,同時可加密存儲后的數據。此外還可以在客戶端自行加密數據,并將加密后的數據上傳至Amazon S3。
Google Cloud Storage
存儲抽象:“Bucket” 每個Bucket可存儲無限數量的對象,每個對象最大5TBSLA: Standard(標準):月均99.9% Durable reduced availability(低可用持久,DRA):月均99.0% 上述兩種級別的延遲均為毫秒級。加密:與AWS相同,但目前為Alpha測試階段Google的對象存儲服務也使用“Bucket”作為抽象,具體局限與AWS相同:每個Bucket可存儲無限數量的對象,每個對象體積上限為5TB。Google提供了三種服務級別:標準、低可用持久(DRA),以及近線(Nearline)。
Google存儲服務的SLA按月計算。對于標準級存儲,具備月均99.9%的持續運行時間保證,對象訪問延遲為毫秒級別。對于DRA,具備月均99%的持續運行時間,延遲同樣為毫秒級。近線級別的持續運行時間保證與DRA同為99%,但延遲約為3秒,這更像是一種歸檔存儲。
默認情況下,Google Cloud Storage會使用自己的服務器端加密密鑰加密傳輸中和存儲后的數據,但也可以在客戶端對數據進行加密,隨后將加密后的數據寫入Google Cloud Storage。
Azure Storage
存儲抽象:“容器”和“Blob” 無限數量的對象,每個存儲賬戶最大500TB,可使用多個存儲賬戶服務級別: Locally Redundant Storage(本地冗余存儲,LRS),Zone Redundant Storage(區域冗余存儲,ZRS),Geographically Redundant Storage(地域冗余存儲,GRS)(更加接近于AWS和Google的服務),Read-Access Geo-Redundant(讀取訪問地域冗余,RA-GRS)加密:均通過Azure Encryption Extensions(在您的虛擬機內運行)加密,可配合Azure密鑰保管庫(Azure Key Vault)使用Azure存儲服務使用“容器”代替“Bucket”,使用“Blob”稱呼塊存儲。Azure每個容器可存儲無限數量的對象,每個存儲賬戶最大容量500TB,但可同時使用多個存儲賬戶。
Azure提供了本地冗余(LRS)、區域冗余(ZRS)、地域冗余(GRS),以及讀取訪問地域冗余(RA-GRS)選項。LRS會在同一數據中心內部多次復制,ZRS會在同一區域(即同一地理位置的多個數據中心間)多次復制,GRS會在本地復制的同時復制到距離數百英里之外的輔助數據中心。RA-GRS為備份數據中心的其他地域冗余副本提供了讀取訪問的能力。
Azure存儲支持對傳輸中的數據進行加密,存儲后的數據可使用Azure Encryption Extensions加密,同時可將密鑰存儲在Azure密鑰保管庫中。Azure Encryption Extensions是一種在虛擬機內部運行的工具,需要消耗虛擬機的CPU資源。
SoftLayer Object Storage
基于OpenStack Swift平臺 存儲抽象:“容器” 每個容器可存儲無限量的對象,每個對象最大5GB,但可將數據分為多個Chunk保存,存儲服務可創建清單文件,借此將文件重新拼接到一起。該服務可并行上傳/下載,因此這個體積局限有些誤導用戶。單一服務級別 持久性99.99999999999%(11個9)可在群集內部復制,但非地域冗余 加密:第三方工具或客戶自行實施的工具,非內建SoftLayer Object Storage基于OpenStack Swift平臺,也使用“容器”代表存儲抽象。每個容器可支持存儲無限數量的對象,每個對象體積最大為5GB,但可將巨型對象拆分為多個Chunk存儲,并創建清單文件,這樣在下載文件時就可以自動將其重新拼接到一起。
SoftLayer只提供一個服務級別,持久性包含11個9,可在(本地數據中心)群集內部進行復制,但目前不支持地域復制,也沒有內建的加密功能。
塊存儲
對象存儲服務很適合需要以自包含“對象”方式存儲并檢索數據的場景,如果需要更標準的文件系統配置(并且需要兼容POSIX),此時更適合使用塊存儲。
AWS Elastic Block Storage (EBS)
卷容量:1GB至16TB(以1GB為增量) 卷類型: Magnetic:平均IOPS為100,可迸發至數百IOPS(主要用于存儲/快照創建) General Purpos (SSD):3 IOPS/GB,最高10,000 IOPS。吞吐率限制為128MB/秒,更大型(<170GB)卷最高為160MB/秒 Provisioned IOPS (SSD):最高為20,000 IOPS/卷。最大吞吐率為320MB/秒(配合EBS優化實例使用時)可跨越可用性區域(Availability Zone, AZ)使用快照,但不可跨地域 所有類型的卷均支持EBS加密EBS卷體積范圍從1GB至16TB,以1GB為增量,因此可以逐步獲得一個非常大的卷。AWS提供三種不同類型的卷,分別叫做Magnetic、General Purpose,以及Provisioned IOPS。
Magnetic使用傳統機械磁盤,據稱該服務平均可實現100 IOPS,可迸發至數百IOPS,因此這種類型的卷并不適合高事務量的工作負載,但最適合保存希望存儲并創建快照,同時不需要快速訪問的數據。
General Purpose是一種基于SSD的存儲機制,可為每GB數據提供3 IOPS,最高10,000 IOPS。例如對于一個3,334 GB (3.3TB)的卷,可獲得10,000 IOPS。雖然該類型最高提供16TB容量,但IOPS的最大值10,000封頂,吞吐率范圍從128MB/秒至最高160MB/秒。
EBS的第三種類型為Provisioned IOPS (PIOPS),這種類型同樣基于SSD。PIOPS最高20,000 IOPS/卷。如果使用EBS優化過的實例,最大吞吐率可進一步增至320MB/秒。
所有EBS卷均可創建快照并跨AZ使用。舉例來說,如果在US-East-1A創建一個卷并為其創建快照,隨后便可自動在US-East的任何區域(US-East-A、B、C、D,和E)訪問該快照,但該快照無法在US-West使用。AWS提供了跨地域復制快照的工具,但復制操作無法自動進行。
所有EBS卷均可加密。在創建卷時可以看到加密選項,此時可選擇使用AWS管理的密鑰,或自行管理的密鑰。
Google Block Storage (Persistent Disk, "PD")
卷容量:1GB至10TB 卷類型: HDD (標準磁介質存儲)。-- IOPS:最高3,000讀取IOPS/15,000寫入IOPS
-- 吞吐率:180MB/秒讀取,120MB/秒寫入 SSD
-- IOPS:最高15,000 IOPS
-- 吞吐率:最高240MB/秒快照可在區域內所有數據中心使用,但無法跨地域 所有卷上傳輸中和存儲后的數據均被加密
Google提供了HDD和SSD這兩種類型的卷。HDD據稱最高可實現3,000 IOPS讀取和15,000 IOPS寫入,以及180MB/秒讀取和120MB/秒寫入的吞吐率。SSD則可實現最高15,000 IOPS和高達240MB/秒的吞吐率。
快照可在區域內所有數據中心使用,但無法跨地域。如有必要可自行跨地域復制快照。默認情況下,Google Persistent Disk會加密對傳輸中和存儲后的數據。
Azure Block Storage
卷容量:1GB至1TB 以“Page Blob”形式實施,讀寫操作要在后端轉換為GET/PUT操作 卷類型: 標準存儲-- IOPS:500 IOPS/直連磁盤
-- 吞吐率:60MB/秒 高級存儲:基于SSD(僅適用于Azure虛擬機,無法用于其他服務)
-- IOPS:最高80,000 IOPS
-- 吞吐率:2,000MB/秒快照可跨越區域內多個數據中心復制,并提供了跨地域復制的選項 傳輸中和存儲后的數據均可使用Azure Encryption Extensions加密
Azure卷可提供1GB至1TB容量,作為一種高端服務,這樣的容量實在非常小,但這一局限源自Azure后端的實現方式。該服務使用Page blob而非Block blob,可為讀寫操作創建兼容POSIX的文件系統,所執行的freads和fwrites操作會在后端轉換為GET和PUT操作。這種方法使得Azure能夠將同一套后端基礎結構應用于所有存儲服務,但正是因此,卷的大小存在1TB的局限。
Azure提供標準和高級兩種類型的卷。對于標準存儲,每個直連磁盤可實現500 IOPS,及大約60MB/秒的吞吐率,這樣的性能表現尚可,但并非最優秀的。不過高級存儲就相當驚人了,可提供最高80,000 IOPS和讓人驚嘆的2,000MB/秒吞吐率。這是一種基于SSD的存儲,目前只能用于Azure虛擬機,無法將其用于其他Azure服務。
Azure提供了額外的快照選項。快照可跨越同一區域的多個數據中心復制,還可通過GRS進行跨地域復制。
所有傳輸中的數據會被加密,同時也可以通過Azure Encryption Extensions加密存儲后的數據。
SoftLayer Block Storage
卷容量:20GB至12TB 卷類型: Endurance Storage(持久存儲):-- IOPS:每GB 0.25、2.0,或4.0 IOPS,最高可實現48,000 IOPS Performance Storage(性能存儲):
-- IOPS:最高6,000 IOPS。100GB的卷可支持6,000 IOPS
-- 相同IOPS的速率需要具備1.5TB的持久存儲快照可在區域內多個數據中心復制,并提供跨地域復制的選項(僅適用于持久存儲) 加密功能需要使用第三方工具和/或客戶自行實施
SoftLayer Block Storage可提供容量20GB至12TB的卷,分為Endurance(持久)和Performance(性能)兩種級別。持久存儲可為每GB卷提供0.25、2.0,或4.0的IOPS,因此如果有一個12TB的卷,最高可獲得48,000的IOPS。
性能存儲最高提供6,000的IOPS,該IOPS要求卷容量至少100GB。對于100GB以上的卷,性能存儲的IOPS上限為6,000。如果使用持久存儲,需要容量為1.5TB的卷才能實現相同的6,000 IOPS。因此持久存儲更適用于事務量不是非常高,但可能需要較大存儲容量的工作負載。性能存儲適合需要以很高速度執行非常高讀寫事務的工作負載。性能存儲的不足之處在于無法為其創建快照。您可以為持久存儲卷創建快照,并在區域內部或跨地域復制,但是對于性能存儲卷,只能自行執行相關操作。
加密工作只能通過第三方工具或自行實施的工具實現。
云存儲的定價
每個云供應商都提供了類似的存儲服務,但由于服務之間存在諸多差異,往往很難進行嚴格的“同類”服務對比。價格方面,最恰當的做法是首先從待考慮的云供應商中確定最適合的服務,隨后根據相關定價確定每種服務的最終成本。