- Linux開源存儲全棧詳解:從Ceph到容器存儲
- 英特爾亞太研發有限公司
- 4983字
- 2019-11-15 16:04:51
1.1 Linux和開源存儲
計算機系統是圖靈機的高效實現,即根據輸入數據的規則得到輸出數據?,F在的計算機系統由CPU、內存、總線、外設(如網絡設備、存儲設備)等組成,其中,存儲是非常重要的一部分。系統的啟動需要存儲,操作系統在啟動的時候需要從存儲系統中(無論是本地存儲還是遠端存儲)加載相應的鏡像數據;在CPU和內存中進行數據計算的時候,需要把數據進行相應的存儲,如放入本地或遠端存儲系統。
為了更好地說明存儲的重要性,先回顧一下經典的存儲級別圖,如圖1-1所示。數據在計算機系統中的存儲級別自上而下地劃分為4大塊:CPU、CPU緩存、易失內存、非易失內存。

圖1-1 存儲級別
在圖1-1中,由上到下表現為數據存儲級別由高到低,數據訪問速度由快到慢,延遲時間由短到長。CPU的計算速度越來越快,但是也達到了一定的瓶頸;計算機工藝(基于硅晶體)可以達到7nm和10nm的級別,但是再往更低突破也不太理想,于是轉向了多核化發展;CPU對應的緩存級別,從L1到L2再到更多級別的緩存,擴大了緩存的大小,能讓更多的數據位于緩存中,從而更好地降低了延遲。
易失內存主要是指內存,分為SRAM(Static Random Access Memory)和DRAM (Dynamic Random Access Memory),主要以雙內聯存儲器模塊(Dual In-line Memory Module,DIMM)接口為主。當然目前也有支持雙內聯存儲器模塊接口的非易失內存,如英特爾的Apache Pass(AEP)。
非易失內存種類繁多,可以基于PCIe、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、AHCI(Advanced Host Controller Interface)等各種協議。根據介質和工作原理,非易失內存可以分為機械硬盤(Harddisk)、固態硬盤(Sdid State Drive,SSD)及磁帶(Tape)。其中,固態硬盤根據顆粒和介質可以分為NAND和3D XPoint等。
總的來說,在整個數據的計算層次中,與存儲相關的硬件是非常重要的、不可忽略的一部分。這反過來也影響了存儲軟件的設計和開發,并提高了開發存儲軟件的門檻。為此,在很長一段時間內,基于存儲的開源軟件雖然不少,但是基本以商用收費軟件,即閉源軟件為主。
1.1.1 為什么需要開源存儲
在之前,我們并不需要開源存儲軟件來構建相應的解決方案。當時閉源的商用存儲軟件就可以滿足用戶的需求,只是價格比較昂貴。
1.基于商用/閉源存儲軟件的時代
在Linux沒有流行的時候,并沒有太多操作系統可供選擇。例如,微軟的Windows、Sun的Solaris、運行在IBM大型機上的操作系統,以及流行的UNIX等?;谶@樣的現實,存儲系統大多構建在閉源的操作系統上,自然沒有太大的動力去推出開源存儲軟件。
另外一個客觀的事實是,存儲軟件的第一個版本基本都是閉源的。而開源存儲軟件出現的原因是某些公司覺得應該把這樣的技術公之于眾或回饋社會,或者迫于其他類似開源軟件的先聲奪人。另外形成開源社區也需要時間,10~20年之前,沒有太多的開源存儲項目,自然談不上使用開源存儲軟件來進行實際的部署。另外,還有以下幾點原因也在客觀上限制了存儲系統的發展。
1)存儲設備的發展
開源存儲軟件之前未得到發展的一個主要原因是受限于存儲設備。從存儲設備的發展歷史來看,每GB存儲空間的成本一直在降低。直到2000年左右,存儲設備的發展仍不太迅速。從用戶角度來看,當時的存儲設備容量太小、價格太貴、速度太慢,這在很大程度上制約了存儲應用的發展。
2)存儲的整體需求不高
存儲設備的發展制約了存儲的需求,反過來,沒有需求,存儲設備的發展速度也會變慢,這兩者既是相互制約,也是相互促進的。例如,在2000年左右,存儲需求不太明顯,互聯網行業虛假繁榮,直至泡沫破裂,當時崛起的一些IT公司從市值很高的神壇跌落。例如,EMC(昌安信)公司的市值曾達到2000多億美金,但泡沫破裂后,其股票一路下跌,直到2015年被戴爾公司以670億美金收購,也沒有恢復元氣。以EMC為例是為了說明在互聯網發展初期,其實存儲公司的發展前景并不是特別明朗的,尤其在市場整體股價下跌的時候,因為沒有大量數據的存儲需求,所以可能跌得更厲害。
在那個時代,存儲數據主要以結構化數據為主,如數據庫、有索引的文件、檔案等。對致力于企業級存儲的EMC來講,雖然有很多高端的金融客戶等,但是這些客戶對存儲設備的需求量還是非常有限的。在互聯網發展初期,一方面,還沒有太多的結構化數據,主要是用于搜索的非結構化數據,如圖片等。那些占據大量存儲的視頻、音頻文件在當時并不流行,所以對于存儲的需求還是以企業為主的,以支持個人用戶為導向的存儲系統并沒有太大的市場,當然這也與當時網絡不發達有關。另一方面,當時各種產生大量存儲需求的設備,如個人使用的智能相機,還沒有流行起來。
3)開發存儲產品的高門檻
評估一個存儲系統,一般有以下指標。
· 性能指標:業界有相關的存儲性能委員會(Storage Performance Council,SPC)發布相應的測試規范(Benchmark)和測試工作集(Workload)。典型的測試工作集包括SPC-1(主要評估存儲系統面向事務性業務的性能)、SPC-2(評估不同業務類型,大規模連續數據訪問的存儲系統的性能,如大量文件并發性訪問、視頻點播業務等)、SPC-3(提供應用層的模擬,如存儲管理、內容管理、信息生命周期等性能)。
· 可靠性標準:如數據的可用性、完整性、安全性,在不同領域有不同的標準。
· 功能性標準:如是否符合業界定義的規范,不同的國家有不同的標準。想要獲得更詳細的信息,可以參考主流供應商提供的存儲產品進行相關的對照,如EMC、華為、NetApp提供的產品。
· 能耗標準:主要用于評估存儲系統在不同負載情況下的功耗,顯然在相同負載的情況下,功耗消耗越低越有競爭力。因為這個標準涉及運維的代價,因此,數據中心的運行者對這個指標比較關心。
這些存儲系統的評估標準是在不斷演化的??偟膩碚f,想要打造一款具有競爭力的存儲產品并不是一件容易的事情。作為一個合格的存儲提供廠商,即使是一個創業小公司,也是竭盡全力地想要通過一些標準組織委員會提供的性能、可靠性等不同的測試的,從而在交付用戶之前,能夠及早發現各種問題,并加以修正。如果想做到盈利,公司提供的相應的產品就要有競爭力,如產品性能、性價比、存儲安全性等方面的優勢,只有這樣才能在競爭激烈的市場中占據一席之地。由此可知,開發存儲產品的門檻很高。
在互聯網還沒有蓬勃發展的時候,一些開源存儲軟件顯然不能滿足相應的需求。
2.風向的轉變
近幾年,隨著CPU、內存等硬件技術的快速發展,以及互聯網的高速發展和數據的爆炸式增長等,傳統的商業存儲軟件已經難以滿足人們的應用需求了。為此, Google開發了Google文件系統(Google File System,GFS),以滿足搜索引擎的后端存儲(Backend Storage)需求;Amazon推出了EBS(Elastic BlockStore),以滿足提供EC2(Elastic Computing Cloud)服務的虛擬機的持久化存儲需求。為了滿足人們對開源分布式存儲的需求,學術界誕生的Ceph在社區管理的緩慢推動下,形成了一套可實際部署的開源存儲軟件,被廣泛部署在各個領域。
從商用/閉源存儲系統到開源的存儲系統,這個變化是令人欣喜的,仔細分析其中的原因,主要有以下幾點。
1)商用存儲軟件功能的局限性
在數據爆發式增長的時候,一些存儲系統,如單機,已經不能滿足存儲需求了。當數據的容量從TB到PB甚至繼續增長的時候,這些商用/閉源存儲系統由于可擴展性的缺失,已經不能適用于某些數據持續增長的應用場景。我們知道,擴容無非是兩種形式,即Scale-up(針對單機)和Scale-out(針對分布式存儲)。因此,擴容成了一件棘手的事情。在開始的時候,單機擴容還可以解決問題,但是其容量終究是有上限的。
2)商用存儲系統的價格昂貴
有些企業銷售的高端存儲系統價格非常昂貴,一臺機器可能賣到幾十萬美元甚至幾百萬美元。這些系統雖然在性能評估等各個方面非常有優勢,但是昂貴的價格讓很多人望而卻步,只有一些大公司,如銀行、證券公司,才可能配備這樣的系統。在市場和行業沒有對比的情況下,售賣這些存儲系統帶來的盈利是非??捎^的。
另外,企業在給客戶售賣閉源存儲系統的時候,也會搭配相應的售后服務。從系統穩定性和良好的售后服務來看,這些存儲系統可以說是無可挑剔的,但生產成本始終是不可忽略的一個因素。在開源存儲不斷崛起的時代,這些存儲系統慢慢轉變成云存儲服務,這對這些昂貴的存儲系統的銷售將是一個挑戰。雖然某些特殊領域對存儲系統還有一些需求,但是不可否認的是,這個需求量在不斷下滑,市場在進一步萎縮。
3)開源生態圈的蓬勃發展
開源軟件越來越流行,生態圈發展越來越好,主要是因為互聯網企業在廣泛使用開源軟件,包括開源存儲軟件,并且向社區提交補丁,以改善代碼質量,這樣就形成了一個良性循環?;ヂ摼W企業對于開源軟件的使用或驗證(所謂的Dogfood測試)極大地提高了開源軟件的影響力,讓用戶意識到由社區維護的開源軟件一樣可以作為商用軟件來使用。
4)互聯網企業的身體力行
很多互聯網企業最初在運營的時候并沒有把自己定位為高科技公司。Amazon最初是一家電子商務公司,它很大一部分收入來自書籍的售賣,后來慢慢轉型為一家提供云計算、云存儲等服務的高科技公司,雖然電子商務仍是其業務的一部分,但是也許已經不再是支持其高速發展、股價一路上漲的重要部分了。
存儲方面,Amazon一開始搭載了存儲巨頭,如戴爾、EMC、IBM等公司的存儲產品或軟件,目前可能依然在使用,但已經不是其后端存儲業務的核心了。為了適應自身發展的需求,Amazon在存儲方面做了自己的開發工作,例如,Amazon的基礎架構即服務(Infrastructure as a Service,IaaS)最早采用了Xen虛擬化的架構,為虛擬機的后端存儲開發了EBS和S3(Simple Storage Store);針對電子商務業務, Amazon開發了基于鍵值的NoSQL數據庫——Dynamo,滿足了自身業務的需求。
1.1.2 Linux開源存儲技術原理和解決方案
前面提到開源存儲軟件已經成為趨勢,在Linux下構建開源存儲的服務也順理成章地成了大勢所趨。最近,Linux在服務器端蓬勃發展,代替Windows、FreeBSD等操作系統成為了業界的主流,因此,在Linux下開發開源存儲軟件及進行相關的運維已經成為一件非常平常的事情。
在討論Linux開源存儲軟件之前,我們先來回顧一下在Linux上部署的比較流行的網站服務。該網站服務的關鍵組件稱為LAMP,其中,L為Linux操作系統;A為Apache網頁服務器;M為MariaDB或MySQL數據庫系統;P為PHP、Perl或Python用于網頁后臺編程的腳本語言。這些軟件并不是一開始就是網站服務的組合的,而因為是開源軟件,并且比較廉價和普遍,自然而然地就有人把這些軟件組合起來,并提出了將這個組合用于網站服務可行的解決方案,接著就成了流行的組合方案,并被默認是安裝Linux系統的標準套件。隨著時代的變化,LAMP演變成了LNMP,其中N為nginx。
LNMP流行的原因有兩點:一是軟件廉價或容易獲取,如打包在常見的Linux系統發行版本中,如Fedora、Ubuntu、CentOS、Redhat;二是軟件的高效性。這也是為什么那些開源軟件都要按照各個Linux發行版做成相應的包,只要打包在這些發行版中,就能被廣泛接受。所以對應Linux的開源存儲軟件,需要滿足如下要求。
1)軟件集成在Linux發行版本中
如果該軟件只有開源版本,并沒有集成在主流的Linux發行版本中,那么就會對軟件的易用性帶來很大挑戰。如果只能下載源代碼安裝,對于軟件運維人員來講,這是不太友好的。因為很多軟件對于其他軟件或系統有一定的依賴性,如果直接從源碼安裝軟件,那么這個版本可能未必和當前的操作系統(包括內核版本)及其他依賴軟件相匹配,因此在運行的時候,可能會發生一些未知的問題。所以,一個成熟的開源軟件需要和主流的Linux發行版本集成,確保每當發布一個新的發行版本,都會有最佳適配的版本。
2)軟件有活躍的社區
存儲軟件服務的運營商或企業在采用開源軟件的時候,都希望該軟件有活躍的社區,原因主要有以下幾個:①該軟件持續開發和迭代,有活躍的開發者工作在這個軟件上;②該軟件對于Linux系統的支持友好,要不斷更新相關代碼以適配Linux系統;③軟件的開發要遵循相應的標準,對使用開源軟件的用戶是福音。
現在主流的開源分布式系統解決方案是Ceph,其原因是Ceph社區非常活躍。而其他的開源解決方案,如Sheepdog則基本上處于停滯狀態,因用戶少而導致社區不活躍,目前主要由日本的NTT公司在維護該社區,很難看到一個良好發展的前景。
3)軟件的特性滿足應用的需求
很多開源軟件都有很大的局限性,不能很好地滿足應用的需求。例如,在大請求場景下,不能滿足延時需求;軟件只支持單機版本,支持的存儲容量有限制;軟件支持分布式版本,但是擴容有限制。要滿足這些需求,就需要存儲軟件的用戶或運維人員充分了解軟件的特性和配置,并且進行相關的壓力測試,如測試這些配置是否有效,面對一些給出的極限情況的值是否能達到使用手冊的標準。
如果應用的需求超過了該軟件的支持范圍,那么只有兩種選擇:一是放棄該軟件,尋求新的軟件;二是組織相關的研發人員,改造已有的軟件,或者提交需求到軟件開發社區尋求相應的幫助。對于比較流行的軟件,用戶一般都會選擇第二種,該軟件就會根據用戶的反饋及提交的補丁被不斷改進,進入良性循環。
- Windows Server 2012 Hyper-V:Deploying the Hyper-V Enterprise Server Virtualization Platform
- Social Media Mining with R
- 鴻蒙生態:開啟萬物互聯的智慧新時代
- 網絡操作系統:Windows Server 2003管理與應用
- 精解Windows8
- 計算機系統開發與優化實戰
- Python基礎教程(第3版)
- STM32庫開發實戰指南:基于STM32F4
- Linux內核觀測技術BPF
- VMware NSX Cookbook
- 細說Linux基礎知識
- 無蘋果不生活 The New iPad隨身寶典
- Linux 從入門到項目實踐(超值版)
- OpenSolaris紅寶書
- Microsoft Azure Administrator:Exam Guide AZ-103