幾種塊存儲簡單介紹!!!

塊存儲,簡單來說就是提供了塊設備存儲的接口。通過向內核註冊塊設備信息,在Linux中通過lsblk可以得到當前主機上塊設備信息列表。

下面會先介紹常見的單機塊設備工具來建立Common Base。

單機塊存儲

首先一個硬盤是一個塊設備,內核檢測到硬盤然後在/dev/下會看到/dev/sda/,因爲我們需要利用一個硬盤來得到不同的分區來做不同的事,通過fdisk工具得到/dev/sda1, /dev/sda2等,這種方式通過直接寫入分區表來規定和切分硬盤,是最死板的分區方式。

1. LVM & Device-mapper

LVM是一種邏輯卷管理器,通過LVM來對硬盤創建邏輯卷組和得到邏輯捲來完成目的比fdisk方式更加彈性,如果你目前對LVM用途還不熟悉或者不大清楚,請參考以下鏈接:

Device-mapper是一種支持邏輯卷管理的通用設備映射機制,爲存儲資源管理的塊設備驅動提供了一個高度模塊化的內核架構。LVM是基於Device-mapper的用戶程序實現,以下鏈接對Device-mapper架構進行了極好的說明:

2. SAN & iSCSI

在接觸了單機下的邏輯卷管理後,你需要了解SAN,目前主流的企業級存儲方式。

大部分SAN使用SCSI協議在服務器和存儲設備之間傳輸和溝通,通過在SCSI之上建立不同鏡像層,可以實現存儲網絡的連接。常見的有iSCSIFCPFibre Channel over Ethernet等。

SAN通常需要在專用存儲設備中建立,而iSCSI是基於TCP/IP的SCSI映射,通過iSCSI協議和Linux iSCSI項目我們可以在常見的PC機上建立SAN存儲。。

如何建立在PC機上的SAN可以參考:

這篇文章的iSCSI target管理方式不太方便,通常利用targetcli管理target是及其方便的。targetcli可以直接建立和管理不同backstone類型的邏輯卷和不同的export方式,如建立ramdisk並且通過iSCSI export非常方便,操作方式見targetcli screencast Part 2 of 3: ISCSI – YouTube

分佈式塊存儲服務

以上都是common-base,接下來纔開始本文的正式分享內容,包括公共雲技術服務提供的塊存儲服務,開源的塊存儲框架和實現以及各大Startup目前對塊存儲的定義和支持。

3. 分佈式塊存儲

在面對極具彈性的存儲需求和性能要求下,單機或者獨立的SAN越來越不能滿足企業的需要。如同數據庫系統一樣,塊存儲在scale up的瓶頸下也面臨着scale out的需要。我們可以用以下幾個特點來描述分佈式塊存儲系統的概念:

  1. 分佈式塊存儲可以爲任何物理機或者虛擬機提供持久化的塊存儲設備
  2. 分佈式塊存儲系統管理塊設備的創建、刪除和attach/deattach。
  3. 分佈式塊存儲支持強大的快照功能,快照可以用來恢復或者創建新的塊設備
  4. 分佈式存儲系統能夠提供不同IO性能要求的塊設備

4. Amazon EBS & 阿里雲磁盤

Amazon作爲領先的IAAS服務商,其API目前是IAAS的事實標準。Amazon EC2目前仍然一騎絕塵,在大多數方面遠超其他IAAS服務商。通過Amazon EC2的產品介紹是快速瞭解Amazon EC2的捷徑。

EBS是Amazon提供的塊存儲服務,通過EBS,用戶可以隨時增刪遷移volume和快照操作。

Amazon EC2實例可以將根設備數據存儲在Amazon EBS或者本地實例存儲上。使用 Amazon EBS時,根設備中的數據將獨立於實例的生命週期保留下來,使得在停止實例後仍可以重新啓動使用,與筆記本電腦關機並在再次需要時重新啓動相似。另一方面,本地實例存儲僅在實例的生命週期內保留。這是啓動實例的一種經濟方式,因爲數據沒有存儲到根設備中。

Amazon EBS提供兩種類型的卷,即標準卷和預配置IOPS卷。它們的性能特點和價格不同,可以根據應用程序的要求和預算定製所需的存儲性能。

標準卷可爲要求有適度或突發式I/O的應用程序提供存儲。這些卷平均可以提供大約 100 IOPS,最多可突增至數百 IOPS。標準卷也非常適合用作引導卷,其突發能力可提供快速的實例啓動時間(通常十幾秒)。

預配置 IOPS 卷旨在爲數據庫等 I/O 密集型隨機讀寫工作負載提供可預計的高性能。創建一個卷時,利用預置 IOPS 爲卷確定 IOPS 速率,隨之 Amazon EBS 在該卷的生命週期內提供該速率。Amazon EBS 目前支持每預配置 IOPS 卷最多 4000 個IOPS。您可以將多個條帶式卷組合在一起,爲您的應程程序提供每個Amazon EC2數千IOPS的能力。

EBS可以在卷連接和使用期間實時拍攝快照。不過,快照只能捕獲已寫入Amazon EBS 卷的數據,不包含應用程序或操作系統已在本地緩存的數據。如果需要確保能爲實例連接的卷獲得一致的快照,需要先徹底地斷開卷連接,再發出快照命令,然後重新連接卷。

EBS快照目前可以跨regions增量備份,意味着EBS快照時間會大大縮短,從另一面增加了EBS使用的安全性。

總的來說,Amazon EBS是目前IAAS服務商最引入注目的服務之一,目前的OpenStack、CloudStack等等其他開源框架都無法提供Amazon EBS對於的如此彈性和強大的服務。瞭解和使用Amazon EBS是學習IAAS塊存儲的最好手段。

阿里雲

阿里雲是國內的公共雲計算服務商,不過這裏阿里雲目前的塊存儲服務較於Amazon EBS差的太遠,阿里雲磁盤目前僅支持在創建雲主機的時候綁定雲磁盤或者在升級雲主機的進行雲磁盤擴容,這從根本上就是傳統的虛擬主機的特點而不是所謂的“雲磁盤”。

從目前的阿里雲磁盤的限制:

  1. 無法快速創建或刪除volume,在進行擴容時需要升級雲主機才能達到,而升級雲主機只有在下月雲主機套餐到期時才能生效(想起了中國移動套餐)
  2. 一個雲主機最多隻能綁定3個雲磁盤

從阿里雲磁盤目前的使用分析,阿里雲磁盤系統目前還很不成熟,以下是我對阿里雲磁盤實現的推測

  1. 阿里雲主機是跟磁盤綁定的,這意味着阿里雲的雲磁盤是local volume(因此性能還是挺可觀的)。如果用戶需要擴容、減少都是需要下個月更說明了這點,整個主機在擴容時去調度合適的有足夠存儲空間的host,然後進行擴容。
  2. 阿里雲磁盤是分佈式塊存儲系統,但是由於其QoS無法保證和其他資源調度原因無法提供足夠的塊存儲支持。

演講回顧:阿里雲存儲技術的演進,以及雲服務用例最佳實踐中瞭解到阿里雲是基於自家的“盤古”系統,那麼從實際使用來說,遠沒達到一般的分佈式塊存儲系統的要求。

5. Cinder

OpenStack是目前流行的IAAS框架,提供了AWS類似的服務並且兼容其API。OpenStack Nova是計算服務,Swift是對象存儲服務,Quantum是網絡服務,Glance是鏡像服務,Cinder是塊存儲服務,Keystone是身份認證服務,Horizon是Dashboard,另外還有Heat、Oslo、Ceilometer、Ironic等等項目。

Cinder是OpenStack中提供類似於EBS塊存儲服務的API框架,它並沒有實現對塊設備的管理和實際服務提供,用來爲後端不同的存儲結構提供統一的接口與OpenStack進行整合,不同的塊設備服務廠商在Cinder中實現其驅動支持。後端的存儲可以是DAS,NAS,SAN,對象存儲或者分佈式文件系統。也就是說,Cinder的塊存儲數據完整性,可用性保障是由後端存儲提供的。在CinderSupportMatrix中可以看到衆多存儲廠商如NetAPP、IBM、SolidFire、EMC和衆多開源快存儲系統對Cinder的支持,在這裏我們也可以看到OpenStack是非常受歡迎的。

QQ20130509-4 (1)

從上圖我們也可以看到,Cinder只是提供了一層抽象,然後通過其後段支持的driver實現來發出命令來得到迴應。關於塊存儲的分配信息以及選項配置等會被保存到OpenStack統一的DB中。

6. Ceph & Sheepdog

Ceph是開源實現的PB級分佈式文件系統,通過其分佈式對象存儲機制爲上層提供了文件接口、塊存儲接口和對象存儲接口。Inktank是Ceph的主要支持商,Ceph的團隊目前主要來自Inktankcom。

751113a4add49575060b5e8ac0c10d27.media.600x419

Ceph目前是OpenStack支持的開源塊存儲實現系統(即Cinder項目backend driver之一),其實現分爲三個部分: OSD, Monitor, MDS。OSD是底層對象存儲系統,Monitor是集羣管理系統,MDS是用來支持POSIX文件接口的Metadata Server。從Ceph的原始論文(Ceph: Reliable, Scalable, and High-Performance Distributed Storage)來看,Ceph專注於擴展性,高可用性和容錯性。Ceph放棄了傳統的Metadata查表方式(HDFS)而改用算法(CRUSH)去定位具體的block。

利用Ceph提供的RULES可以彈性地制訂存儲策略和Pool選擇,Monitor作爲集羣管理系統掌握了全部的Cluster Map,Client在沒有Map的情況下需要先向Monitor請求得到,然後通過Object id計算相應的OSD Server。

Ceph的文檔可以參考以下鏈接:

Ceph支持傳統的POSIX文件接口,因此需要額外的MDS(Meatadata Server)支持文件元信息(Ceph的塊存儲和對象存儲支持不需要MDS服務)。Ceph將data和metadata分離到兩個服務上,跟傳統的分佈式系統如Lustre相比可以大大增強擴展性。在小文件讀寫上,Ceph讀寫文件會有[RTT*2],在每次open時,會先去Metadata server查詢一次,然後再去object server。除了open操作外,Ceph在delete上也有問題,它需要到Metadata Server擦除對應的metadata,是n(2)複雜度。Ceph在Metadata上並非只有壞處,通過Metadata Server,像目錄列表等目錄操作爲非常快速,遠超GlusterFS等實現。

關於Ceph作爲塊存儲項目的幾個問題需要考慮:

  1. Ceph在讀寫上不太穩定(有btrfs的原因),目前Ceph官方推薦XFS作爲底層文件系統
  2. Ceph的擴展性較難,如果需要介入Ceph,需要較長時間
  3. Ceph的部署和集羣不夠穩定

Sheepdog

Sheepdog是另一個分佈式塊存儲系統,它與Ceph相比,最大優勢就是代碼短小好維護和hack的成本很小。Sheepdog也有很多Ceph不支持的特性,比如說Multi-Disk, cluster-wide snapshot等。

Sheepdog主要有兩部分,一個是集羣管理,另一個是存儲服務。集羣管理目前使用Corosync或者Zookper來完成,存儲服務的特點是在client和存儲host有Cache的實現可以大大減小數據流量。

目前Sheepdog只在QEMU端提供Drive,而缺少library支持,這是Sheepdog目前最主要的問題。但是社區已經有相關的blueprint在討論這個問題。

瞭解Sheepdog通過以下鏈接:

目前Taobao是Sheepdog主要用戶和社區貢獻者。

7. 各大廠商

目前存儲領域Startup主要是集中在SSD對存儲集羣的利用,VDI存儲設計,計算存儲一體機等方面。

下面舉幾個我瞭解的關於塊設備和存儲的典型廠商:

  • Nimble: Nimble Storage是09年成立的一家存儲服務商,其核心是利用Cache Accelerated Sequential Layout (CASL™) 專利技術架構了一個完備的存儲體系棧,包括應用級緩存、第一級存儲、第二級緩存和災備。它主要解決當前虛擬化進程越來越快而導致對存儲要求的演變,Nimble致力於簡化企業建造自己的IT虛擬化平臺對存儲 的要求,提供一系列打包的存儲設備和軟件。並且希望打造一個與頂級vendor協作的生態系統,面對目前企業對 VDI的 需求,Nimble爲Microsoft、Vmware等等虛擬化廠商提供有力並且整合的存儲保證。

  • Tegile: Tegile也是一家VDI存儲服務商,爲中小型企業提供高性能、空間高效利用並且廉價的存儲陣列。

  • Tintri:Tintri VMstore是一個與VMware vCenter Server整合的數據存儲和監控平臺,通過收集每個 VM和每個虛擬硬盤的統計數據來智能的進行存儲資源的分配,並且對讀寫請求進行集中調度來得到 更好的性能。

  • Nutanix:Nutanix提供的Cluster Unit借鑑了Amazon、Google、Facebook的數據中心設計, 重新將存儲和計算放在一個單元裏,每一個VM都會盡可能採用DAS的方式連接並得到 高性能的IO能力。通過額外的控制服務來管理衆多Cluster Unit並將每一個Unit的 本地存儲複製到其他Unit來保證數據安全性。

  • StorSimple:StorSimple提供的硬件用於公共雲與企業本地存儲整合,通過StorSimple,爲公共 雲數據提供本地加速、備份和災難恢復。StorSimple主要將SSD、SAS和Cloud三種類型的存儲類型進行整合,SSD提供最“熱” 的數據緩存、SAS也就是本地的硬盤級存儲提供較“熱”的存儲,雲端存儲“冷”數據。 通過三種性能差異較大的類型進行智能切換和支持上層的IO優化來加速企業應用。除 此之外,StorSimple也提供數據去重、Thin Provision、壓縮和快照等基本功能。

  • Nexenta:Nexenta是一家04年成立的Software-defined-Storage服務商,提供運行於ZFS的 企業級NAS、SAN解決方案。NexentaStor建立在開放的Nexenta Core Platform(NCP) 上,NCP是基於OpenSolaris內核和Ubuntu用戶空間的一系列命令行接口和Web UI界面。 在NexentaStor出現之前,企業級NAS和SAN供應商要求客戶從供應商處購買存儲硬件。 但大多數供應商的磁盤格式是專有技術――因此,要從這些供應商管理下的磁盤中取出 數據的唯一途徑就是使用該供應商的解決方案。如果供應商中斷對特定硬件系列的支持 ,用戶將不得不 進行升級或實施難度更大的遷移,從傳統硬件集遷移到另一個硬件集。 目前爲獲得企業級性能和數據完整性已不再需要這一級別的供應商鎖定。 NexentaStor 運行於適當配置的x86服務器上,將傳統存儲系統升級爲統一的存儲解決方案,以提供 SAN和NAS性能以及最高級別的端對端數據完整性檢查,通過檢查可發現並校正數據損壞。

  • EMC ViPR使用OpenStack組件打造開源版EMC ViPR

8. 寫後感

本來想多寫一些個人的觀點和研究分享,但因爲這個標題實在有點大,爲了避免寫一篇太空文章,還是要多寫一些Prerequisite,但是很多內容其他文章已經非常好了,因此就直接引用了。內容範圍定的太大導致很大東西寫太多不太合適,寫少了只能寫一些簡單的介紹,最後還是將其定位於Overview級別的文章吧。。。

Similar posts

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章