91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ceph架構和組件

發布時間:2020-06-20 22:52:05 來源:網絡 閱讀:1524 作者:酥心糖 欄目:云計算

Ceph 存儲的體系結構

Ceph 存儲由幾個不同的守護進程組成,這些守護進程彼此之間是相互獨立的,每一個組件提供特定的功能。

Ceph架構和組件

Ceph核心組件
  • RADOS(Reliable Autonomic Distributed Object Store 可靠、自動,分布式對象存儲) 是ceph存儲組件的基礎。ceph 將一切都以對象的方式存儲,RADOS就負責存儲這些對象,而不考慮他們的數據類型。RADOS層組件確保數據的一致性,和可靠性。包括數據的復制,故障檢測和恢復,數據在節點之間的遷移和再平衡。RADOS由大量的存儲設備和節點集群組成。RADOS采用C++開發。

  • LIBRADOS(基礎庫,又叫做RADOS庫) 主要功能是對RADOS進行抽象和封裝,并向上提供API,以便直接基于RADOS進行應用開發。RADOS是一個對象存儲系統,LIBRADOS實現的是API是針對對象存儲的功能。支持C,C++, Java, Python, Ruby 和PHP。同時,LIBRADOS還是RBD,RGW等服務的基礎。
  • RADOSGW(CEPH對象網關,也叫做RADOS網關RGW) 它提供了S3和Swift兼容的RESTful API的網關,支持多租戶和openstack的身份驗證。相對于LIBRADOS它提供的API抽象層次更高,能在使用類S3和Swift場景下進行更加便捷的管理。
  • RDB(Reliable Block Device) 提供了一個標準的塊設備接口,對外提供塊存儲,它可以被映射,格式化,像其他磁盤一樣掛載到服務器。常用于虛擬化場景下創建volume,云硬盤等。目前red Hat已經將RBD的驅動集成到KVM/QEMU中。

  • CephFS (Ceph 文件系統) 是一個兼容POSIX的分布式文件系統。它使用MDS作為守護進程。libcephfs擁有本地Linux內核驅動程序支持,可以使用mount命令進行掛載操作。能與支持CIFS和SMB協議。

Ceph RADOS

RADOS是ceph 存儲系統的核心,也稱為ceph存儲集群。ceph的所有優秀的特性都是由RADOS提供的,包括分布式對象存儲,高可用性,自我修復和自我管理等。

RADOS 組件架構圖:

Ceph架構和組件

RADOS 包含兩個核心組件:Ceph Monitor 和Ceph OSD。

Ceph Monitor

Ceph Monitor 是負責監視整個集群的運行狀態的, 為了實現高可用性,通常配置為一個小型的集群(一般是3個節點,集群通常是有一個leader和兩個slave,當leader故障后集群通過選舉產生新的leader,來保障系統的高可用性。)。
Monitor中的信息都是集群成員中的守護程序來提供的,包含了各個節點之間的狀態,集群的配置信息。主要用于管理Cluster Map,Cluster Map是整個RADOS系統的關鍵數據結構,類似元數據信息。Mon中的Cluster Map 包含 Mon Map、OSD Map、PG Map、MDS Map和CRUSH等。

  • mon Map: 記錄了mon集群的信息和集群的ID. 命令ceph mon dump
  • OSD Map: 記錄了osd集群的信息和集群的ID. 命令ceph osd dump
  • PG Map: pg的全稱是placement group,中文譯為放置組,是用于存放object的一個載體,pg的創建是在創建ceph存儲池的時候指定的,同時跟指定的副本數也有關系,比如是3副本的則會有3個相同的pg存在于3個不同的osd上,pg其實在osd的存在形式就是一個目錄,pg作為存儲單元,pg的使用情況也反應了當前集群的存儲狀態。在集群中,PG有多種狀態,不同的狀態反應了集群當前的健康狀態。 命令 ceph pg dump
  • CRUSH Map: 包含集群存儲設備的信息,故障層次結構和存儲數據是定義失敗域規則信息。 命令 ceph osd crush dump
  • MDS map: 只有在使用Ceph FS時才會使用MDS,MDS是Ceph FS的元數據服務。集群中至少需要一個MDS的服務。

Ceph Monitor集群維護著各類Map數據,它本身并不提供客戶端數據的存儲服務,客戶端和其他集群節點會定期的檢查并更新Monintor維護的Map,在客戶端進行讀寫數據時,都會請求Monitor提供Map數據,之后直接與OSD進行數據操作。

Ceph Monitor是一個輕量級的守護進程,通常情況下不需要消耗大量資源,通常會需要幾個GB的磁盤空間來存放日志。

Ceph OSD

OSD是Ceph 存儲的重要組件。OSD將數據以對象的方式存儲到集群中各個節點的磁盤上,完成數據存儲的絕大部分工作是由OSD 守護進程來實現的。

Ceph 集群中通常包含有多個OSD,對于任何讀寫操作,客戶端從Ceph Monitor獲取Cluster Map之后,客戶端將直接與OSD進行I/O操作,而不再需要Monitor干預。這使得數據讀寫過程更加迅速,不需要其他額外層級的數據處理來增加開銷。

OSD通常有多個相同的副本,每個數據對象都有一個主副本和若干個從副本,這些副本默認情況下分布在不同的節點上,當主副本出現故障時(磁盤故障或者節點故障),Ceph OSD Deamon 會選取一個從副本提升為主副本,同時,會產生以一個新的副本,這樣就保證了數據的可靠性。

Ceph OSD 操作必須 在一個有效的Linux 分區上,文件系統可以是BTRFS,XFS或EXT4,推薦選擇XFS。

journal 緩沖區

Ceph 在寫入數據時,會先將數據寫入一個單獨的換成存儲區域,再寫到備用存儲。該緩沖區域被稱為journal,這個緩沖區可以在相同或單獨磁盤作為OSD,或者不同的SSD磁盤上。默認情況下每隔5秒日志會向備用存儲刷新數據,常見的日志大小是10G,但是分區越大越好。
當為journal提供一個高速緩存的SSD磁盤時,會顯著提高CEPH 寫入數據的性能。每個SSD磁盤最多給4個到5個OSD做日志,一旦超過這個限制將會出現性能瓶頸。

Ceph CRUSH 算法

CRUSH算法是Ceph 讀寫文件的核心,下圖展示了使用CRUSH算法實現的數據讀寫和再平衡的流程:

Ceph架構和組件

Ceph 存儲數據的流程
  1. 客戶端通過調用API(librados,RGW,RBD,或者libcephfs)向Monitor 獲取集群Map副本.
  2. 客戶端通過集群Map得到Ceph集群的狀態和配置信息,然后將客戶端數據按照固定大小進行切割編號,形成多個對象。
  3. 通過一些列算法,對象會被確定寫入哪個PG,以及對應的存儲池pool,一個pool中含有多個PG,然后通過CRUSH規則獲取所需的主OSD的位置。
  4. 一旦確定OSD的位置,客戶端直接將數據寫入主OSD.
  5. 數據被寫入主OSD后,將執行數據復制,會在副本OSD中同步PG數據。

Pool是一個邏輯分區,包含了多個PG,同時,每一個Pool都是交叉分布在多個主機節點上的。

存儲池的操作

存儲池(POOL)是管理PG的邏輯分區,pool可以通過創建需要的副本數來保障數據的高可用性,在新的版本中,默認的副本數是3.
除此之外,我們可以還可以同使用SSD硬盤來創建faster池,使用pool來進行快照功能,還可以為訪問pool的用戶分配權限。

  1. 創建pool
 ceph osd pool create {pool-name} {pg-number} {pgp-number} [replicated] [crush-ruleset-name] [expected-num-objects]
 ceph osd pool create test-pool 9  # 創建一個名為test-pool的池,包含的gp數量為9
  1. 查看當前的存儲池信息
ceph osd lspools
rados lspools
ceph osd dump | grep -i pool   # 查看副本以及詳細信息
  1. 設置副本數目(在早期版本中副本數目默認是2,在Firefly之后的版本中,副本數默認為3)
ceph osd pool set test-pool size 3    # 設置副本數目為3
ceph osd dump | grep -i pool  # 查看副本數目詳情
  1. 給pool重命名
ceph osd pool rename test-pool  pool-1     # 當前名稱  目標名稱
ceph osd lspools  # 查看命名已經修改
  1. Ceph 池做數據快照
rados -p pool-1 put obj-1 /etc/hosts    # 像池中添加對象obj-1和 文件 /etc/hosts
rados -p pool-1 ls    # 查看池中的對象

# 給pool-1 池創建快照,命名為snapshot01
rados mksnap snapshot01 -p pool-1

# 插卡快照信息
rados lssnap -p pool-1

# 刪除pool-1存儲池中obj-test對象
rados -p pool-1 rm obj-test

# 查看對象的快照信息
# rados -p pool-1 listsnaps obj-test
obj-test:
cloneid snaps   size    overlap
1   1   5   []

# 恢復快照,指定存儲池,對象名稱,快照名
rados rollback -p pool-1 obj-test snapshot01
  1. 獲取pool相關參數,size 或其他參數
ceph osd pool get pool-1 size
ceph osd pool get pool-1 {value}
  1. 設置存儲池的配置參數
ceph osd pool set pool-1 size 3
  1. 刪除池(刪除池的時候將會刪除快照),刪除使用兩次確認的方式
ceph osd pool delete pool-1 pool-1  --yes-i-really-really-mean-it

Ceph 數據管理

這里通過示例,展示ceph 管理數據的方式。

PG 的副本存儲

創建一個存儲池pool-1:

ceph osd pool create pool-1 8 8    # 創建存儲池 pool-1,指定pg 和pgp的數量為 8 

查看pool的ID:

[root@local-node-1 ~]# ceph osd lspools
1 .rgw.root
2 default.rgw.control
3 default.rgw.meta
4 default.rgw.log
8 pool-1

查看pg分配所屬的OSD:

[root@local-node-1 ~]# ceph pg dump|grep ^8|awk '{print $1 "\t" $17}'
dumped all
8.7 [0,2,1]
8.6 [2,1,0]
8.5 [2,1,0]
8.4 [1,2,0]
8.3 [2,0,1]
8.2 [2,0,1]
8.1 [0,2,1]
8.0 [0,1,2]

表明 0-7的pg都存為了3副本,分到不同的副本中。

文件存儲

我們將hosts文件加入存儲(這里已經添加pool):

[root@local-node-1 ~]# rados -p pool-1 put obj1 /etc/hosts
[root@local-node-1 ~]# rados -p pool-1 ls
obj1

查看對象obj1和OSD的映射關系:

[root@local-node-1 ~]# ceph osd map pool-1 obj1
osdmap e72 pool 'pool-1' (8) object 'obj1' -> pg 8.6cf8deff (8.7) -> up ([0,2,1], p0) acting ([0,2,1], p0)

上述輸出的含義:

  • osdmap e72: OSD map的版本號 72 表示版本
  • pool 'pool-1' (8): 池的名字為pool-1, ID 為8
  • object 'obj1' : 對象名稱
  • pg 8.6cf8deff (8.7): pg 的編號,表示obj1 屬于PG 8.7
  • up ([0,2,1], p0): 表示PG的up 集合,包含osd 0,2,1
  • acting ([0,2,1], p0): 表明osd 0,2,1 都在acting集合中,其中osd.0是主副本,OSD.2是第二副本,OSD.1是第三副本。

默認情況下,存放相同PG的副本會分布在不同的物理節點上。

恢復和動態平衡

默認設置下,當集群中有節點出現故障時,Ceph 會將故障節點的OSD標記為down,如果在300s內未恢復,集群就開始進行恢復狀態。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

化州市| 平邑县| 天全县| 辉南县| 巨野县| 黄梅县| 三江| 九江市| 象州县| 哈密市| 得荣县| 昆山市| 望谟县| 茶陵县| 嘉祥县| 资源县| 延安市| 洛宁县| 青川县| 新宾| 泰州市| 濮阳县| 石棉县| 托克托县| 南和县| 虎林市| 岳阳市| 项城市| 静安区| 扬州市| 房产| 辽源市| 新泰市| 隆回县| 农安县| 如东县| 遵化市| 吉木乃县| 平利县| 岑巩县| 宁明县|