Ceph:一個 Linux PB 級Distributed File System

來源:互聯網
上載者:User

作為一名儲存行業的架構師,我對檔案系統情有獨鐘。這些系統用來儲存系統的使用者介面,雖然它們傾向於提供一系列類似的功能,但它們還能夠提供差異顯著的功能。Ceph 也不例外,它還提供一些您能在檔案系統中找到的最有趣的功能。

Ceph 最初是一項關於儲存系統的 PhD 研究項目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)實施。但是到了 2010 年 3 月底,您可以在主線 Linux 核心(從 2.6.34 版開始)中找到 Ceph 的身影。雖然 Ceph 可能還不適用於生產環境,但它對測試目的還是非常有用的。本文探討了 Ceph 檔案系統及其專屬的功能,這些功能讓它成為可擴充分布式儲存的最有吸引力的備選。

Ceph 目標

為什麼選 “Ceph”?

“Ceph” 對一個檔案系統來說是個奇怪的名字,它打破了大多數人遵循的典型縮寫趨勢。這個名字和 UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是 “Sammy”,一個香蕉色的蛞蝓,就是頭足類中無殼的軟體動物。這些有多觸角的頭足類動物,提供了一個Distributed File System的最形象比喻。

開發一個Distributed File System需要多方努力,但是如果能準確地解決問題,它就是無價的。Ceph 的目標簡單地定義為:

  • 可輕鬆擴充到數 PB 容量
  • 對多種工作負載的高效能(每秒輸入/輸出操作[IOPS]和頻寬)
  • 高可靠性

不幸的是,這些目標之間會互相競爭(例如,可擴充性會降低或者抑制效能或者影響可靠性)。Ceph 開發了一些非常有趣的概念(例如,動態中繼資料分區,資料分布和複製),這些概念在本文中只進行簡短地探討。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級儲存)儲存故障是常見現象而不是例外情況。最後,它的設計並沒有假設某種特殊工作負載,但是包括適應變化的工作負載,提供最佳效能的能力。它利用 POSIX 的相容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 為目標的改進)的應用進行透明的部署。最後,Ceph 是開源分布式儲存,也是主線 Linux 核心(2.6.34)的一部分。

回頁首

Ceph 架構

現在,讓我們探討一下 Ceph 的架構以及高端的核心要素。然後我會拓展到另一層次,說明 Ceph 中一些關鍵的方面,提供更詳細的探討。

Ceph 生態系統可以大致劃分為四部分(見圖 1):用戶端(資料使用者),中繼資料服務器(緩衝和同步分布式中繼資料),一個Object Storage Service叢集(將資料和中繼資料作為Object Storage Service,執行其他關鍵職能),以及最後的叢集監視器(執行監視功能)。


圖 1. Ceph 生態系統的概念架構

1 所示,客戶使用中繼資料服務器,執行中繼資料操作(來確定資料位元置)。中繼資料服務器管理資料位元置,以及在何處儲存新資料。值得注意的是,中繼資料存放區在一個儲存叢集(標為 “中繼資料 I/O”)。實際的檔案 I/O 發生在客戶和Object Storage Service叢集之間。這樣一來,更高層次的 POSIX 功能(例如,開啟、關閉、重新命名)就由中繼資料服務器管理,不過 POSIX 功能(例如讀和寫)則直接由Object Storage Service叢集管理。

另一個架構視圖由圖 2 提供。一系列伺服器通過一個客戶介面訪問 Ceph 生態系統,這就明白了中繼資料服務器和對象級儲存空間之間的關係。分布式儲存系統可以在一些層中查看,包括一個存放裝置的格式(Extent and B-tree-based Object File System [EBOFS] 或者一個備選),還有一個設計用於管理資料複製,故障檢測,恢複,以及隨後的資料移轉的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage(RADOS)。最後,監視器用於識別組件故障,包括隨後的通知。


圖 2. Ceph 生態系統簡化後的分層視圖

回頁首

Ceph 組件

瞭解了 Ceph 的概念架構之後,您可以挖掘到另一個層次,瞭解在 Ceph 中實現的主要組件。Ceph 和傳統的檔案系統之間的重要差異之一就是,它將智能都用在了生態環境而不是檔案系統本身。

圖 3 顯示了一個簡單的 Ceph 生態系統。Ceph Client 是 Ceph 檔案系統的使用者。Ceph Metadata Daemon 提供了中繼資料服務器,而 Ceph Object Storage Daemon 提供了實際儲存(對資料和中繼資料兩者)。最後,Ceph Monitor 提供了叢集管理。要注意的是,Ceph 客戶,Object Storage Service端點,中繼資料服務器(根據檔案系統的容量)可以有許多,而且至少有一對冗餘的監視器。那麼,這個檔案系統是如何分布的呢?


圖 3. 簡單的 Ceph 生態系統

Ceph 用戶端

核心或使用者空間

早期版本的 Ceph 利用在 User SpacE(FUSE)的 Filesystems,它把檔案系統推入到使用者空間,還可以很大程度上簡化其開發。但是今天,Ceph 已經被整合到主線核心,使其更快速,因為使用者空間上下文交換器對檔案系統 I/O 已經不再需要。

因為 Linux 顯示檔案系統的一個公用介面(通過虛擬檔案系統交換器 [VFS]),Ceph 的使用者透視圖就是透明的。管理員的透視圖肯定是不同的,考慮到很多伺服器會包含儲存系統這一潛在因素(要查看更多建立 Ceph 叢集的資訊,見 參考資料 部分)。從使用者的角度看,他們訪問大容量的儲存系統,卻不知道下面彙總成一個大容量的儲存池的中繼資料服務器,監視器,還有獨立的Object Storage Service裝置。使用者只是簡單地看到一個安裝點,在這點上可以執行標準檔案 I/O。

Ceph 檔案系統 — 或者至少是用戶端介面 — 在 Linux 核心中實現。值得注意的是,在大多數檔案系統中,所有的控制和智能在核心的檔案系統源本身中執行。但是,在 Ceph 中,檔案系統的智能分布在節點上,這簡化了用戶端介面,並為 Ceph 提供了大規模(甚至動態)擴充能力。

Ceph 使用一個有趣的備選,而不是依賴分配列表(將磁碟上的區塊對應到指定檔案的中繼資料)。Linux 透視圖中的一個檔案會分配到一個來自中繼資料服務器的 inode number(INO),對於檔案這是一個唯一的標識符。然後檔案被推入一些對象中(根據檔案的大小)。使用 INO 和 object number(ONO),每個對象都分配到一個物件識別碼(OID)。在 OID 上使用一個簡單的雜湊,每個對象都被分配到一個放置組。放置組(標識為 PGID)是一個對象的概念容器。最後,放置組到Object Storage Service裝置的映射是一個偽隨機映射,使用一個叫做 Controlled Replication Under Scalable Hashing(CRUSH)的演算法。這樣一來,放置組(以及副本)到存放裝置的映射就不用依賴任何中繼資料,而是依賴一個偽隨機的映射函數。這種操作是理想的,因為它把儲存的開銷最小化,簡化了分配和資料查詢。

分配的最後組件是叢集映射。叢集映射 是裝置的有效表示,顯示了儲存叢集。有了 PGID 和叢集映射,您就可以定位任何對象。

Ceph 中繼資料服務器

中繼資料服務器(cmds)的工作就是管理檔案系統的名稱空間。雖然中繼資料和資料兩者都儲存在Object Storage Service叢集,但兩者分別管理,支援可擴充性。事實上,中繼資料在一個中繼資料服務器叢集上被進一步拆分,中繼資料服務器能夠自適應地複製和分配名稱空間,避免出現熱點。 4 所示,中繼資料服務器管理名稱空間部分,可以(為冗餘和效能)進行重疊。中繼資料服務器到名稱空間的映射在 Ceph 中使用動態子樹邏輯分區執行,它允許 Ceph 對變化的工作負載進行調整(在中繼資料服務器之間遷移名稱空間)同時保留效能的位置。


圖 4. 中繼資料服務器的 Ceph 名稱空間的分區

但是因為每個中繼資料服務器只是簡單地管理用戶端人口的名稱空間,它的主要應用就是一個智能中繼資料快取(因為實際的中繼資料最終儲存在Object Storage Service叢集中)。進行寫操作的中繼資料被緩衝在一個短期的日誌中,它最終還是被推入實體儲存體器中。這個動作允許中繼資料服務器將最近的中繼資料回饋給客戶(這在中繼資料操作中很常見)。這個日誌對故障恢複也很有用:如果中繼資料服務器發生故障,它的日誌就會被重放,保證中繼資料安全儲存在磁碟上。

中繼資料服務器管理 inode 空間,將檔案名稱轉變為中繼資料。中繼資料服務器將檔案名稱轉變為索引節點,檔案大小,和 Ceph 用戶端用於檔案 I/O 的分段資料(布局)。

Ceph 監視器

Ceph 包含實施叢集映射管理的監視器,但是故障管理的一些要素是在Object Storage Service本身中執行的。當Object Storage Service裝置發生故障或者新裝置添加時,監視器就檢測和維護一個有效叢集映射。這個功能按一種分布的方式執行,這種方式中映射升級可以和當前的流量通訊。Ceph 使用 Paxos,它是一系列分布式共識演算法。

Ceph Object Storage Service

和傳統的Object Storage Service類似,Ceph 儲存節點不僅包括儲存,還包括智能。傳統的驅動是只響應來自啟動者的命令的簡單目標。但是Object Storage Service裝置是智慧型裝置,它能作為目標和啟動者,支援與其他Object Storage Service裝置的通訊和合作。

從儲存角度來看,Ceph Object Storage Service裝置執行從對象到塊的映射(在用戶端的檔案系統層中常常執行的任務)。這個動作允許本地實體以最佳方式決定怎樣儲存一個對象。Ceph 的早期版本在一個名為 EBOFS 的本機存放區器上實現一個自訂低級檔案系統。這個系統實現一個到底層儲存的非標準介面,這個底層儲存已針對對象語義和其他特性(例如對磁碟提交的非同步通知)調優。今天,B-tree 檔案系統(BTRFS)可以被用於儲存節點,它已經實現了部分必要功能(例如嵌入式完整性)。

因為 Ceph 客戶實現 CRUSH,而且對磁碟上的檔案對應塊一無所知,下面的存放裝置就能安全地管理對象到塊的映射。這允許儲存節點複製資料(當發現一個裝置出現故障時)。分配故障恢複也允許儲存系統擴充,因為故障檢測和恢複跨生態系統分配。Ceph 稱其為 RADOS(見 圖 3)。

回頁首

其他有趣功能

如果檔案系統的動態和自適應特性不夠,Ceph 還執行一些使用者可視的有趣功能。使用者可以建立快照,例如,在 Ceph 的任何子目錄上(包括所有內容)。檔案和容量計算可以在子目錄層級上執行,它報告一個給定子目錄(以及其包含的內容)的儲存大小和檔案數量。

回頁首

Ceph 的地位和未來

雖然 Ceph 現在被整合在主線 Linux 核心中,但只是標識為實驗性的。在這種狀態下的檔案系統對測試是有用的,但是對生產環境沒有做好準備。但是考慮到 Ceph 加入到 Linux 核心的行列,還有其建立人想繼續研發的動機,不久之後它應該就能用於解決您的海量儲存需要了。

回頁首

其他Distributed File System

Ceph 在Distributed File System空間中並不是唯一的,但它在管理大型存放區生態環境的方法上是獨一無二的。Distributed File System的其他例子包括 Google File System(GFS),General Parallel File System(GPFS),還有 Lustre,這隻提到了一部分。Ceph 背後的想法為Distributed File System提供了一個有趣的未來,因為海量層級儲存導致了海量儲存問題的唯一挑戰。

回頁首

展望未來

Ceph 不只是一個檔案系統,還是一個有企業級功能的Object Storage Service生態環境。在 參考資料 部分中,您將會找到如何設定一個簡單 Ceph 叢集(包括中繼資料服務器,Object Storage Service伺服器和監視器)的資訊。Ceph 填補了分布式儲存中的空白,看到這個開源產品如何在未來演變也將會是很有趣的。

參考資料

學習

  • Ceph 建立者的論文 “Ceph: A Scalable, High-Performance Distributed File System”(PDF)以及 Sage Weil 的 PhD 論文, “Ceph: Reliable, Scalable, and High-Performance Distributed Storage”(PDF),揭示了 Ceph 背後的原始理念。

  • Storage Systems Research Center 的 PB 級儲存網站 提供關於 Ceph 的其他技術資訊。
  • 訪問 Ceph 首頁,瞭解最新資訊。
  • “CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data”(PDF)和 “RADOS: A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters”(PDF)討論了 Ceph 檔案系統中最有趣的兩個方面。
  • LWN.net 上的 “Ceph 檔案系統” 提供了 Ceph 檔案系統的試用(包括一系列有趣的評論)。
  • “Building a Small Ceph Cluster” 介紹了如何構建一個 Ceph 叢集,還有資產分配技巧。這篇文章讓您明白如何擷取 Ceph 資源,構建一個新的核心,然後部署 Ceph 生態環境的各種要素。
  • 在 Paxos Wikipedia 頁面,瞭解更多 Ceph 中繼資料服務器如何利用 Paxos 作為多個分布式實體間的一個共識協議的有關資訊。
  • 在 “Linux 虛擬系統檔案交換器剖析”(developerWorks,2009 年 9 月)中,瞭解更多關於 VFS 的資訊,VFS 是 Linux 包含的一個靈活機制,允許多個檔案系統並存。
  • 在 “下一代 Linux 檔案系統:NiLFS(2) 和 exofs”(developerWorks,2009 年 10 月)中,瞭解更多關於 exofs —— 另一個使用Object Storage Service的 Linux 檔案系統 —— 的資訊。exofs 將以Object Storage Service裝置為基礎的儲存映射到一個傳統的 Linux 檔案系統。
  • 在 BTRFS 的核心 wiki 網站 和 “Linux 核心的發展”(developerWorks,2008 年 3 月)中,您可以瞭解如何在獨立的Object Storage Service節點上使用 BTRFS。
  • 在 developerWorks Linux 專區 尋找為 Linux 開發人員(包括 Linux 新手入門)準備的更多參考資料,查閱我們 最受歡迎的文章和教程。
  • 在 developerWorks 上查閱所有 Linux 技巧 和 Linux 教程。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.