Ubuntu 12.04 Ceph分佈式文件系統之概述

1、   ceph文件系統概述node

Ceph 最初是一項關於存儲系統的 PhD 研究項目,由 Sage Weil University of California, Santa CruzUCSC)實施。linux

Ceph 是開源分佈式存儲,也是主線 Linux 內核(2.6.34)的一部分。算法

1)          Ceph 架構

Ceph 生態系統能夠大體劃分爲四部分(見圖 1):客戶端(數據用戶),元數據服務器(緩存和同步分佈式元數據),一個對象存儲集羣(將數據和元數據做爲對象存儲,執行其餘關鍵職能),以及最後的集羣監視器(執行監視功能)。緩存

 

1 Ceph 生態系統安全

如圖 1 所示,客戶使用元數據服務器,執行元數據操做(來肯定數據位置)。元數據服務器管理數據位置,以及在何處存儲新數據。值得注意的是,元數據存儲在一個存儲 集羣(標爲元數據 I/O」)。實際的文件 I/O 發生在客戶和對象存儲集羣之間。這樣一來,更高層次的 POSIX 功能(例如,打開、關閉、重命名)就由元數據服務器管理,不過 POSIX 功能(例如讀和寫)則直接由對象存儲集羣管理。服務器

另外一個架構視圖由圖 2 提供。一系列服務器經過一個客戶界面訪問 Ceph 生態系統,這就明白了元數據服務器和對象級存儲器之間的關係。分佈式存儲系統能夠在一些層中查看,包括一個存儲設備的格式(Extent and B-tree-based Object File System [EBOFS] 或者一個備選),還有一個設計用於管理數據複製,故障檢測,恢復,以及隨後的數據遷移的覆蓋管理層,叫作 Reliable Autonomic Distributed Object StorageRADOS)。最後,監視器用於識別組件故障,包括隨後的通知。架構

 

2 ceph架構視圖app

2)          Ceph 組件

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

3 顯示了一個簡單的 Ceph 生態系統。Ceph Client Ceph 文件系統的用戶。Ceph Metadata Daemon 提供了元數據服務器,而 Ceph Object Storage Daemon 提供了實際存儲(對數據和元數據二者)。最後,Ceph Monitor 提供了集羣管理。要注意的是,Ceph 客戶,對象存儲端點,元數據服務器(根據文件系統的容量)能夠有許多,並且至少有一對冗餘的監視器。那麼,這個文件系統是如何分佈的呢?分佈式

 

3簡單的 Ceph 生態系統

3)           Ceph 客戶端

由於 Linux 顯示文件系統的一個公共界面(經過虛擬文件系統交換機 [VFS]),Ceph 的用戶透視圖就是透明的。管理員的透視圖確定是不一樣的,考慮到不少服務器會包含存儲系統這一潛在因素(要查看更多建立 Ceph 集羣的信息,見 參考資料 部分)。從用戶的角度看,他們訪問大容量的存儲系統,殊不知道下面聚合成一個大容量的存儲池的元數據服務器,監視器,還有獨立的對象存儲設備。用戶只是簡單地看到一個安裝點,在這點上能夠執行標準文件 I/O

Ceph 文件系統或者至少是客戶端接口 Linux 內核中實現。值得注意的是,在大多數文件系統中,全部的控制和智能在內核的文件系統源自己中執行。可是,在 Ceph 中,文件系統的智能分佈在節點上,這簡化了客戶端接口,併爲 Ceph 提供了大規模(甚至動態)擴展能力。

Ceph 使用一個有趣的備選,而不是依賴分配列表(將磁盤上的塊映射到指定文件的元數據)。Linux 透視圖中的一個文件會分配到一個來自元數據服務器的 inode numberINO),對於文件這是一個惟一的標識符。而後文件被推入一些對象中(根據文件的大小)。使用 INO object numberONO),每一個對象都分配到一個對象 IDOID)。在 OID 上使用一個簡單的哈希,每一個對象都被分配到一個放置組。放置組(標識爲 PGID)是一個對象的概念容器。最後,放置組到對象存儲設備的映射是一個僞隨機映射,使用一個叫作 Controlled Replication Under Scalable HashingCRUSH)的算法。這樣一來,放置組(以及副本)到存儲設備的映射就不用依賴任何元數據,而是依賴一個僞隨機的映射函數。這種操做是理想的,由於它把存儲的開銷最小化,簡化了分配和數據查詢。

分配的最後組件是集羣映射。集羣映射 是設備的有效表示,顯示了存儲集羣。有了 PGID 和集羣映射,您就能夠定位任何對象。

4)          Ceph 元數據服務器

元數據服務器(cmds)的工做就是管理文件系統的名稱空間。雖然元數據和數據二者都存儲在對象存儲集羣,但二者分別管理,支持可擴展性。事實上,元數據在一個元數據服務器集羣上被進一步拆分,元數據服務器可以自適應地複製和分配名稱空間,避免出現熱點。如圖 4 所示,元數據服務器管理名稱空間部分,能夠(爲冗餘和性能)進行重疊。元數據服務器到名稱空間的映射在 Ceph 中使用動態子樹邏輯分區執行,它容許 Ceph 對變化的工做負載進行調整(在元數據服務器之間遷移名稱空間)同時保留性能的位置。

 

4 元數據服務器的 Ceph 名稱空間的分區

     可是由於每一個元數據服務器只是簡單地管理客戶端人口的名稱空間,它的主要應用就是一個智能元數據緩存(由於實際的元數據最終存儲在對象存儲集羣中)。進行寫操做的元數據被緩存在一個短時間的日誌中,它最終仍是被推入物理存儲器中。這個動做容許元數據服務器將最近的元數據回饋給客戶(這在元數據操做中很常見)。這個日誌對故障恢復也頗有用:若是元數據服務器發生故障,它的日誌就會被重放,保證元數據安全存儲在磁盤上。

元數據服務器管理 inode 空間,將文件名轉變爲元數據。元數據服務器將文件名轉變爲索引節點,文件大小,和 Ceph 客戶端用於文件 I/O 的分段數據(佈局)。

5)          Ceph 監視器

Ceph 包含實施集羣映射管理的監視器,可是故障管理的一些要素是在對象存儲自己中執行的。當對象存儲設備發生故障或者新設備添加時,監視器就檢測和維護一個有效的集羣映射。這個功能按一種分佈的方式執行,這種方式中映射升級能夠和當前的流量通訊。Ceph 使用 Paxos,它是一系列分佈式共識算法。

6)          Ceph 對象存儲

和傳統的對象存儲相似,Ceph 存儲節點不只包括存儲,還包括智能。傳統的驅動是隻響應來自啓動者的命令的簡單目標。可是對象存儲設備是智能設備,它能做爲目標和啓動者,支持與其餘對象存儲設備的通訊和合做。

從存儲角度來看,Ceph 對象存儲設備執行從對象到塊的映射(在客戶端的文件系統層中經常執行的任務)。這個動做容許本地實體以最佳方式決定怎樣存儲一個對象。Ceph 的早期版本在一個名爲 EBOFS 的本地存儲器上實現一個自定義低級文件系統。這個系統實現一個到底層存儲的非標準接口,這個底層存儲已針對對象語義和其餘特性(例如對磁盤提交的異步通知)調優。今天,B-tree 文件系統(BTRFS)能夠被用於存儲節點,它已經實現了部分必要功能(例如嵌入式完整性)。

由於 Ceph 客戶實現 CRUSH,並且對磁盤上的文件映射塊一無所知,下面的存儲設備就能安全地管理對象到塊的映射。這容許存儲節點複製數據(當發現一個設備出現故障時)。分配故障恢復也容許存儲系統擴展,由於故障檢測和恢復跨生態系統分配。Ceph 稱其爲 RADOS

相關文章
相關標籤/搜索