自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從OpenStack的角度看塊存儲的世界

運(yùn)維 系統(tǒng)運(yùn)維 OpenStack
本文重點(diǎn)介紹塊存儲服務(wù)。我們對目前主流的塊存儲服務(wù)提供商和開源的塊存儲軟件做了一個簡要分析,希望能給從事塊存儲開發(fā)的工程師對于塊存儲一個全局的認(rèn)識。

塊存儲,簡單來說就是提供了塊設(shè)備存儲的接口。用戶需要把塊存儲卷附加到虛擬機(jī)或者裸機(jī)上以與其交互。這些卷都是持久的:它們可以從運(yùn)行實(shí)例上被解除或者重新附加而數(shù)據(jù)保持完整不變。

本文重點(diǎn)介紹塊存儲服務(wù)。我們對目前主流的塊存儲服務(wù)提供商和開源的塊存儲軟件做了一個簡要分析,希望能給從事塊存儲開發(fā)的工程師對于塊存儲一個全局的認(rèn)識。

下面會先介紹常見的單機(jī)塊設(shè)備工具,以建立對塊存儲的初步印象。

單機(jī)塊存儲

首先,一個硬盤是一個塊設(shè)備。內(nèi)核檢測到硬盤后,在/dev/下會看到/dev/sda/。為了用一個硬盤來得到不同的分區(qū)來做不同的事,我們使用fdisk工具得到/dev/sda1、/dev/sda2等。這種方式通過直接寫入分區(qū)表來規(guī)定和切分硬盤,是最死板的分區(qū)方式。

1. LVM & Device-mapper

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

通用線程:學(xué)習(xí) Linux LVM,第 1 部分

通用線程:學(xué)習(xí) Linux LVM,第 2 部分

LVM基于Device-mapper用戶程序?qū)崿F(xiàn)。Device-mapper是一種支持邏輯卷管理的通用設(shè)備映射機(jī)制,為存儲資源管理的塊設(shè)備驅(qū)動提供了一個高度模塊化的內(nèi)核架構(gòu)。以下鏈接對Device-mapper架構(gòu)進(jìn)行了極好的說明:

Linux 內(nèi)核中的 Device Mapper 機(jī)制

2. SAN & iSCSI

在接觸了單機(jī)下的邏輯卷管理后,你需要了解SAN,目前主流的企業(yè)級存儲方式。

大部分SAN使用SCSI協(xié)議在服務(wù)器和存儲設(shè)備之間傳輸和溝通,通過在SCSI之上建立不同鏡像層,可以實(shí)現(xiàn)存儲網(wǎng)絡(luò)的連接。常見的有iSCSI,F(xiàn)CP,Fibre Channel over Ethernet等。

SAN通常需要在專用存儲設(shè)備中建立,而iSCSI是基于TCP/IP的SCSI映射,通過iSCSI協(xié)議和Linux iSCSI項(xiàng)目,我們可以在常見的PC機(jī)上建立SAN存儲。

對于如何建立在PC機(jī)上的SAN,可以參考:iSCSI建立。不過,這篇文章提到的iSCSI target管理方式不太方便,通常我們會用targetcli管理target。targetcli可以直接建立和管理不同backstone類型的邏輯卷和不同的export方式,如建立ramdisk并且通過iSCSI export,非常方便。操作方式見targetcli screencast Part 2 of 3: ISCSI – YouTube。

以上都是我們經(jīng)常接觸的單機(jī)塊存儲。接下來是本文主要分享的內(nèi)容:公共云技術(shù)服務(wù)提供的塊存儲服務(wù),開源的塊存儲框架,以及OpenStack目前對塊存儲的定義和支持情況。

分布式塊存儲

在面對極具彈性的存儲需求和性能要求下,單機(jī)或者獨(dú)立的SAN越來越不能滿足企業(yè)的需要。如同數(shù)據(jù)庫系統(tǒng)一樣,塊存儲在scale up的瓶頸下也面臨著scale out的需要。我們可以用以下幾個特點(diǎn)來描述分布式塊存儲系統(tǒng)的概念:

  1. 分布式塊存儲可以為任何物理機(jī)或者虛擬機(jī)提供持久化的塊存儲設(shè)備
  2. 分布式塊存儲系統(tǒng)管理塊設(shè)備的創(chuàng)建、刪除和attach/detach
  3. 分布式塊存儲支持強(qiáng)大的快照功能,快照可以用來恢復(fù)或者創(chuàng)建新的塊設(shè)備
  4. 分布式存儲系統(tǒng)能夠提供不同IO性能要求的塊設(shè)備

3.1 Amazon EBS

Amazon作為領(lǐng)先的IaaS服務(wù)商,其API目前是IaaS的事實(shí)標(biāo)準(zhǔn)。Amazon EC2目前在大多數(shù)方面遠(yuǎn)超其他IaaS服務(wù)商。Amazon EC2的產(chǎn)品介紹是快速了解Amazon EC2的捷徑。

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

Amazon EC2實(shí)例可以將根設(shè)備數(shù)據(jù)存儲在Amazon EBS或者本地實(shí)例存儲上。使用Amazon EBS時,根設(shè)備中的數(shù)據(jù)將獨(dú)立于實(shí)例的生命周期保留下來,使得在停止實(shí)例后仍可以重新啟動使用,與筆記本電腦關(guān)機(jī)并在再次需要時重新啟動相似。另一方面,本地實(shí)例存儲僅在實(shí)例的生命周期內(nèi)保留。這是啟動實(shí)例的一種經(jīng)濟(jì)方式,因?yàn)閿?shù)據(jù)沒有存儲到根設(shè)備中。

Amazon EBS提供兩種類型的卷,即標(biāo)準(zhǔn)卷和預(yù)配置IOPS卷。它們的性能特點(diǎn)和價格不同,可以根據(jù)應(yīng)用程序的要求和預(yù)算定制所需的存儲性能。

標(biāo)準(zhǔn)卷可為要求有適度或突發(fā)式I/O的應(yīng)用程序提供存儲。這些卷平均可以提供大約100 IOPS,最多可突增至數(shù)百IOPS。標(biāo)準(zhǔn)卷也非常適合用作引導(dǎo)卷,其突發(fā)能力可提供快速的實(shí)例啟動時間(通常十幾秒)。

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

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

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

總的來說,Amazon EBS是目前IaaS服務(wù)商最引入注目的服務(wù)之一,目前的OpenStack、CloudStack等其他開源框架都無法提供Amazon EBS的彈性和強(qiáng)大的服務(wù)。了解和使用Amazon EBS是學(xué)習(xí)IaaS塊存儲的最好手段。

3.2 阿里云存儲

阿里云是國內(nèi)的公共云計算服務(wù)商。阿里云磁盤目前僅支持在創(chuàng)建云主機(jī)的時候綁定云磁盤或者在升級云主機(jī)的進(jìn)行云磁盤擴(kuò)容,這從根本上就是傳統(tǒng)的虛擬主機(jī)的特點(diǎn)而不是所謂的“云磁盤”。

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

無法快速創(chuàng)建或刪除volume,在進(jìn)行擴(kuò)容時需要升級云主機(jī)才能達(dá)到,而升級云主機(jī)只有在下月云主機(jī)套餐到期時才能生效(中國移動套餐的模式)

一個云主機(jī)最多只能綁定3個云磁盤

從阿里云磁盤目前的使用分析,以下是我對阿里云磁盤實(shí)現(xiàn)的推測:

阿里云主機(jī)是跟磁盤綁定的,這意味著阿里云的云磁盤是local volume(因此性能還是挺可觀的)。用戶需要擴(kuò)容、減少都需要下個月更說明了這點(diǎn),整個主機(jī)在擴(kuò)容時去調(diào)度合適的有足夠存儲空間的host,然后進(jìn)行擴(kuò)容。

阿里云磁盤是分布式塊存儲系統(tǒng),但是由于其QoS無法保證和其他資源調(diào)度原因,無法提供足夠的塊存儲支持。

從演講回顧:阿里云存儲技術(shù)的演進(jìn),以及云服務(wù)用例最佳實(shí)踐中了解到阿里云是基于自家的“盤古”系統(tǒng),那么從實(shí)際使用來說,遠(yuǎn)沒達(dá)到一般的分布式塊存儲系統(tǒng)的要求。

4.1 Ceph

Ceph是開源實(shí)現(xiàn)的PB級分布式文件系統(tǒng),其分布式對象存儲機(jī)制為上層提供了文件接口、塊存儲接口和對象存儲接口。Inktank是Ceph的主要支持商,也是目前Ceph開源社區(qū)的主要力量。

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

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

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

Ceph支持傳統(tǒng)的POSIX文件接口,因此需要額外的MDS(Meatadata Server)支持文件元信息(Ceph的塊存儲和對象存儲支持不需要MDS服務(wù))。Ceph將Data和Metadata分離到兩個服務(wù)上,跟傳統(tǒng)的分布式系統(tǒng)如Lustre相比可以大大增強(qiáng)擴(kuò)展性。在小文件讀寫上,Ceph讀寫文件會有[RTT*2],在每次open時,會先去Metadata Server查詢一次,然后再去Object Server。除了Open操作外,Ceph在Delete上也有問題,它需要到Metadata Server擦除對應(yīng)的Metadata,是n(2)復(fù)雜度。Ceph在Metadata上并非只有壞處,通過Metadata Server,像目錄列表等目錄操作為非常快速,遠(yuǎn)超GlusterFS等其他分布式文件系統(tǒng)的目錄或文件元操作。

如果要用Ceph作為塊存儲項(xiàng)目,有幾個問題需要考慮:

  1. Ceph在讀寫上不太穩(wěn)定(有btrfs的原因)。目前Ceph官方推薦XFS作為底層文件系統(tǒng)
  2. Ceph的擴(kuò)展性較難,如果需要介入Ceph,需要較長時間
  3. Ceph的部署不夠簡易并且集群不夠穩(wěn)定

4.2 Sheepdog

Sheepdog是另一個分布式塊存儲系統(tǒng)實(shí)現(xiàn)。與Ceph相比,它的最大優(yōu)勢就是代碼短小好維護(hù),hack的成本很小。Sheepdog也有很多Ceph不支持的特性,比如說Multi-Disk, Cluster-wide Snapshot等。

Sheepdog主要有兩部分,一個是集群管理,另一個是存儲服務(wù)。集群管理目前使用Corosync或者Zookper來完成,其存儲服務(wù)的特點(diǎn)是在client和存儲host有Cache的實(shí)現(xiàn)可以大大減小數(shù)據(jù)流量。

目前Sheepdog只在QEMU端提供Drive,而缺少library支持,這是Sheepdog目前最主要的問題。但是社區(qū)已經(jīng)有相關(guān)的Blueprint在討論這個問題。

了解Sheepdog的一些相關(guān)資料:

目前Taobao是Sheepdog主要用戶和社區(qū)貢獻(xiàn)者。

5. Cinder

OpenStack是目前流行的IaaS框架,提供了與AWS類似的服務(wù)并且兼容其API。OpenStack Nova是計算服務(wù),Swift是對象存儲服務(wù),Quantum是網(wǎng)絡(luò)服務(wù),Glance是鏡像服務(wù),Cinder是塊存儲服務(wù),Keystone是身份認(rèn)證服務(wù),Horizon是Dashboard,另外還有Heat、Oslo、Ceilometer、Ironic等等項(xiàng)目。

OpenStack的存儲主要分為三大類:

(1)對象存儲服務(wù),Swift

(2)塊設(shè)備存儲服務(wù),主要是提供給虛擬機(jī)作為“硬盤”的存儲。這里又分為兩塊:

 

  • 本地塊存儲
  • 分布式塊存儲,Cinder

 

(3)數(shù)據(jù)庫服務(wù),目前是一個正在孵化的項(xiàng)目Trove,前身是Rackspace開源出來的RedDwarf,對應(yīng)AWS里面的RDC。

Cinder是OpenStack中提供類似于EBS塊存儲服務(wù)的API框架。它并沒有實(shí)現(xiàn)對塊設(shè)備的管理和實(shí)際服務(wù),而是為后端不同的存儲結(jié)構(gòu)提供了統(tǒng)一的接口,不同的塊設(shè)備服務(wù)廠商在Cinder中實(shí)現(xiàn)其驅(qū)動支持以與OpenStack進(jìn)行整合。后端的存儲可以是DAS,NAS,SAN,對象存儲或者分布式文件系統(tǒng)。也就是說,Cinder的塊存儲數(shù)據(jù)完整性、可用性保障是由后端存儲提供的。在CinderSupportMatrix中可以看到眾多存儲廠商如NetAPP、IBM、SolidFire、EMC和眾多開源塊存儲系統(tǒng)對Cinder的支持。

從上圖我們也可以看到,Cinder只是提供了一層抽象,然后通過其后段支持的driver實(shí)現(xiàn)來發(fā)出命令來得到回應(yīng)。關(guān)于塊存儲的分配信息以及選項(xiàng)配置等會被保存到OpenStack統(tǒng)一的DB中。

總結(jié)

目前分布式塊存儲的實(shí)現(xiàn)仍然是由Amazon EBS領(lǐng)銜,其卓越穩(wěn)定的讀寫性能、強(qiáng)大的增量快照和跨區(qū)域塊設(shè)備遷移,以及令人驚嘆的QoS控制都是目前開源或者其他商業(yè)實(shí)現(xiàn)無法比擬的。

不過Amazon EBS始終不是公司私有存儲的一部分,作為企業(yè)IT成本的重要部分,塊存儲正在發(fā)生改變。EMC在一個月前發(fā)布了其ViPR平臺,并開放了其接口,試圖接納其他廠商和開源實(shí)現(xiàn)。Nexenta在顛覆傳統(tǒng)的的存儲專有硬件,在其上軟件實(shí)現(xiàn)原來只有專有SDN的能力,讓企業(yè)客戶完全擺脫存儲與廠商的綁定。Inktank極力融合OpenStack并推動Ceph在OpenStack社區(qū)的影響力。這些都說明了,無論是目前的存儲廠商還是開源社區(qū)都在極力推動整個分布式塊存儲的發(fā)展,存儲專有設(shè)備的局限性正在進(jìn)一步弱化了原有企業(yè)的存儲架構(gòu)。

在分布式塊存儲和OpenStack之間,我們可以打造更鞏固的紐帶,將塊存儲在企業(yè)私有云平臺上做更好的集成和運(yùn)維。

【作者簡介】王豪邁,UnitedStack工程師。本文根據(jù)作者的博客文章《塊存儲的世界(入門級)》修改而成。

責(zé)任編輯:黃丹 來源: infoq
相關(guān)推薦

2018-03-16 09:23:34

塊存儲文件存儲對象存儲

2019-04-28 16:10:50

設(shè)計Redux前端

2015-05-05 11:04:31

CoreOS自動化運(yùn)維

2012-04-29 10:37:28

APP

2010-07-16 09:00:20

開源RedOffice紅旗2000

2019-02-01 14:45:41

前端

2009-07-08 19:44:56

2020-02-04 09:53:05

數(shù)據(jù)安全數(shù)據(jù)泄漏信息安全

2017-04-01 13:30:23

OpenStack O容器技術(shù)

2019-02-18 14:42:18

React.jsUI前端

2021-04-28 22:42:36

SaaS軟件技術(shù)

2022-07-15 13:01:13

Kotlin編程語言Java

2012-10-30 09:59:04

RackspaceOpenStack

2009-08-27 16:03:31

從c#到c++

2009-06-14 18:43:57

LinuxWindows對比

2015-01-07 15:11:00

ITOpenStack云存儲

2019-10-08 09:29:41

架構(gòu)代碼業(yè)務(wù)邏輯

2016-08-22 12:52:41

GoogleFuchsia操作系統(tǒng)

2019-11-27 10:11:22

勒索病毒網(wǎng)絡(luò)安全
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號