002.RHCS-配置Ceph存儲集群


一 前期准備

  1 [kiosk@foundation0 ~]$ ssh ceph@serverc				#登錄Ceph集群節點
  2 [ceph@serverc ~]$ ceph health					#確保集群狀態正常
  3 HEALTH_OK
 
提示:相關部署參考《001.Ansible部署RHCS存儲集群 》。

二 存儲池概述

2.1 存儲池

Red Hat Ceph存儲池池是Red Hat Ceph存儲集群用於存儲對象的邏輯分區。
池有特定的屬性:池類型,它確定池用於確保數據持久性的保護機制。
replication類型在集群中分布每個對象的多個副本。
erasure coding類型將每個對象分割成塊,並將它們與其他擦除編碼塊一起分發,以使用自動糾錯機制保護對象。
池中存在一定的數量的PG,它們將它們的對象存儲在一組由CRUSH算法確定的osd中。
Ceph使用CRUSH規則集來標識哪個放置組應該包含它存儲的每個對象。
訪問級別用於確定不同用戶的訪問權限的訪問權限。
當Ceph在池中存儲對象時,它使用CRUSH算法將對象分配給池中的一個PG。根據池的配置和CRUSH算法,PG自動映射到一組OSDs。這決定了Ceph用來存儲對象的OSDs。池類型決定該對象如何在該集合的OSDS中復制或存儲。
存儲管理員可以配置CRUSH,以便Ceph存儲使用特定類型存儲設備(如ssd)或位於不同物理位置的設備上的osd來存儲對象。
提示:池中放置組的數量對性能有重要影響。如果在池中配置太少的放置組,那么需要在每個PG中存儲太多的數據,如果您在一個池中配置了太多的放置組,OSDs將需要大量的RAM和CPU資源。通常,一個池應該配置為每個OSD包含100-200個放置組。默認情況下,當您創建一個池時,Ceph會檢查每個OSD的pg數量是否已經超過200,如果是,Ceph將不會創建池。如果一個池已經達到了這個限制,ceph health命令還會顯示一個警告。這個限制由/etc/ceph/ceph conf配置文件中的mon_max_pg_per_osd參數控制。

三 存儲池常見操作

3.1 啟用存儲池

創建池之后,管理員必須顯式地配置能夠使用它的Ceph應用程序的類型:Ceph塊設備(也稱為RADOS塊設備或RBD)、Ceph對象網關(也稱為RADOS網關或RGW)、Ceph文件系統(CephFS)。
命令:ceph osd pool application enable pool-name app
解析:
app通常指:
cephfs:用於Ceph文件系統;
rbd:用於Ceph塊設備;
rgw:用於Ceph對象網關。

3.2 池相關命令

命令
含義
備注
ceph osd lspools
列出集群中的池
 
ceph osd pool ls detail
獲取更多池相關信息
 
ceph df
獲取池使用統計數據
 
ceph osd pool stats
獲取池性能統計數據
 
ceph osd df
顯示OSDs上的磁盤使用統計信息
 

3.3 池配額

管理員可以設置配額來限制可以存儲在池中的最大字節數或最大對象數。
命令:ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes
提示:當Ceph達到池配額時,操作將被無限期阻塞。

3.4 池快照操作

重命名池:ceph osd pool rename current-name new-name
提示:重命名不會影響存儲在池中的數據。
管理快照:ceph osd pool mksnap pool-name snap-name #創建快照
管理快照:ceph osd pool rmsnap pool-name snap-name #刪除快照
檢索快照:rados -p pool-name -s snap-name get object-name file
回滾快照:rados -p pool-name rollback object-name snap-name
注意:Ceph不支持對erasure類型池進行快照。

3.5 池的修改操作

設置池參數:ceph osd pool set pool-name parameter value
查看池參數:ceph osd pool get pool-name parameter
查看池所有參數:ceph osd pool get pool-name all
常見參數:size參數控制池的副本數量,並映射到osd_pool default_size配置文件參數(默認為3)。pg_num參數控制池的放置組的數量,並映射到osd_pool_default_pg_num配置文件參數(默認為8)。

3.6 刪除池

命令:ceph osd pool delete pool-name pool-name --yes-i-really-really-mean-it
注意:在Red Hat Ceph Storage 3中,為了提供更高的保護,Ceph將mon allow pool delete confiquration參數設置為false。當配置此參數后,使用--yes-i-really-really-mean-it選項,ceph osd池刪除命令不會導致池的刪除。您可以將mon允許池刪除參數設置為true,並重新啟動mon服務以允許池刪除。
在配置mon_alow_pool_delete為true后,仍然可以通過在池級別將no delete選項設置為ture來保護池不被刪除,命令:ceph osd pool set pool-name nodelete true。
提示:刪除池之后,應該刪除與該池相關的所有配置,包括專用於池的用戶和CRUSH map規則。

3.7 池的命名空間

在池中配置的命名空間是池中對象的邏輯組。限制用戶用戶對池的訪問,使用戶只能在該名稱空間中存儲或檢索對象。名稱空間的優點是可以使用它們來限制用戶對池的一部分的訪問,它們允許對池進行邏輯分區,並將應用程序限制在池中特定的名稱空間內。因此,幾個應用程序可以安全地共享一個池,並且不至於池的數量過多。
提示:名稱空間目前只支持直接使用librados的應用程序。
要將對象存儲在命名空間中,客戶機應用程序必須提供池和名稱空間名稱。默認情況下,每個池包含一個名稱空間,名稱為空,稱為defaul名稱空間。
例如,從池中存儲和檢索對象的rados命令接受-N name或--namespace=name選項來指定要使用的名稱空間。
命令:rados -p mytestpool -N system put srv /etc/services
解析:將/etc/services文件作為srv對象存儲在mytestpool池中的system命名空間中。
命令:rados -p mytestpool -N system ls
解析:在所有名稱空間中列出池中的所有對象。
提示:若需要以JSON格式返回結果,可添加--format=ison選項。

四 復制存儲池

4.1 創建復制存儲池

命令:ceph osd pool create pool-name pg-num [pgp-num] [replicated] [crush-ruleset-name] \ [expected-num-objects]
解析:
pool-name:池名稱;
pg-num:池中的pg總數;
pgp-num:池的有效放置組數。通常,這應該等於pg的總數。
duplicate:指定這是一個復制池,如果不包含在命令中,則通常是默認值。
crush-ruleset-name是:用於此池的CRUSH名稱。默認值為:osd_pool_default_crush_replicated_ruleset。
提示:一個OSD需要管理的PGs越多,它需要的資源就越多。同時配置紅帽Ceph存儲重要的創建池之后,不能減少池中放置組的數量。但是,可以增加放置組的數量。

五 糾刪碼池

5.1 糾刪碼池概述

糾刪碼池使用擦除糾刪碼而不是復制來保護對象數據。當將一個對象存儲在糾刪碼池中時,該對象被划分為許多數據塊,這些數據塊存儲在單獨的OSDs中。此外,還根據數據塊計算了大量的糾刪碼塊,並將其存儲在不同的osd中。如果包含塊的OSD失敗,可以使用糾刪碼塊來重構對象的數據。
糾刪碼池與復制池不同,它不依賴於存儲每個對象的多個完整副本。
每個對象的數據被分成k個數據塊。
計算了m個編碼塊大小與數據塊大小相同的糾刪碼塊。
對象存儲在總共k + m 個OSDS上。
提示:糾刪碼池比復制池需要更少的存儲空間來獲得類似級別的數據保護。可以降低存儲集群的成本和大小。然而,計算糾刪碼塊會增加CPU和內存開銷,從而降低糾刪碼池的性能。此外,在Red Hat Ceph Storage 3中,需要部分對象寫的操作不支持擦除編碼池。目前糾刪碼池的使用限制在執行完整對象寫入和追加的應用程序中,比如Ceph對象網關。即Red Hat Ceph存儲目前只支持通過Ceph對象網關訪問的糾刪碼池。

5.2 創建糾刪存儲池

命令:ceph osd pool create pool-name pg-num [pgp-num] erasure [erasure-code-profile] \[crush-ruleset-name] [expected-num-objects]
解析:
pool-name:池名稱;
pg-num:池中的pg總數;
pgp-num:池的有效放置組數。通常,這應該等於pg的總數。
erasure:指定這是一個糾刪碼池,如果不包含在命令中,則默認是復制池。
erasure-code-profile:指定是要使用的配置文件。可以使用ceph osd erasure-code-profile創建新的配置文件,配置文件定義要使用的k和m值以及erasure插件。
crush-ruleset-name是:用於此池的CRUSH名稱。如果沒有設置,Ceph將使用erasure-code-profile文件中定義。
提示:一個OSD需要管理的PGs越多,它需要的資源就越多。同時配置紅帽Ceph存儲重要的創建池之后,不能減少池中放置組的數量。但是,可以增加放置組的數量。

5.3 糾刪池配置文件

糾刪池配置文件配置糾刪池用於存儲對象的數據塊和糾刪塊的數量,以及要使用的擦除codinq插件和算法。可以創建新的配置文件來定義一組新的糾刪參數。Ceph在安裝期間創建名為default的配置文件。這個配置文件被配置為將對象分成兩個數據塊和一個編碼塊。Ceph有一個基於插件的系統來控制擦除編碼是如何實現的,並且已經創建了許多不同的插件,它們以不同的方式管理擦除編碼。默認配置文件使用Jerasure插件,這是最靈活和通用的選項。Red Hat Ceph Storage 3還支持本地可修復擦除代碼(LRC)插件。
提示:紅帽Ceph存儲只支持Jerasure和本地可修復擦除代碼(LRC)插件。
查看參數:ceph osd erasure-code-profile get default
設置參數:ceph osd erasure-code-profile set profile-name arguments

參數

含義

備注

k

跨osd分割的數據塊的數量,默認值是2。
 

m

數據變得不可用之前可能失敗的osd的數量,默認為1。
 

directory

默認值是/usr/1ib64/ceph/erasure-code,算法插件庫的路徑。
 

plugin

默認值是jerasure,通常有本地可修復擦除代碼(LRC)和ISA(僅限Intel)。
 

crush-failure-domain

定義CRUSH故障域,該域控制塊的位置。默認情況下,設置為host,這確保對象的塊被放置在不同的主機上。如果設置為osd,則對象的塊可以放在同一主機上的osd上。將故障域設置為osd的彈性較小,因為如果主機失敗,主機上的所有osd都將失敗。還可以定義其他故障域,並使用它們來確保將塊放在數據中心不同機架上的主機上的OSDs上,或者進行其他類型的定制。
 

crush-device-class

此可選參數僅為池選擇由該類設備支持的OSDs。典型的類可能包括hdd、ssd或nvme。
 

crush-root

這個可選參數設置壓碎規則集的根節點。
 

key=value

插件可能具有該插件特有的鍵值參數。
 

technique

technique為每個插件都提供了一組實現不同算法的不同技術。對於Jerasure插件,默認的技術是reed_sol_van。其他包括:reed_sol_r6_op、cauchy_orig、cauchy_good、liberation、blaum_roth和liber8tion。
 
命令:ceph osd erasure-code-profile set myprofile k=3 m=2 crush-failure-domain=rack
解析:創建一個概要文件,該概要文件將對象划分為三個數據塊(k=3),並用兩個編碼塊(m=2)保護它們,crush-failure-domain=rack參數確保Ceph不會在同一個機架中存儲兩個塊。
命令:
ceph osd erasure-code-profile ls #列出現有的配置文件
ceph osd erasure-code-profile rm profile-name #刪除現有配置文件
ceph osd erasure-code-profile get profile-name #查看現有配置文件
注意:不能修改或更改現有池的擦除代碼糾刪配置文件。

六 Ceph配置文件

6.1 Ceph配置文件介紹

默認情況下,Ceph守護進程和客戶機/etc/ceph/ceph.conf文件讀取配置。修改配置參數時,必須確保所有集群節點和客戶端/etc/ceph/ceph.conf文件一致。若使用Ansible來管理您的Red Hat Ceph存儲集群配置,它將使您的Ceph配置文件在其所有節點上保持同步。
ceph.conf文件使用基於ini的文件格式,包含幾個部分,其中包括與Ceph守護進程和客戶機相關的配置。
提示:參數名稱可以使用空格、下划線或破折號作為分隔符,例如osd journal size、osd_journal_size和osd-journal-size都是有效的等效參數名稱。
使用特定守護進程的設置進行分組:
  • [global]:存儲所有守護進程共有的一般配置和設置。任何進程都會讀取該配置,包括客戶機。在其他更具體的配置中會重寫global設置的參數。
  • [mon]:存儲與monitors(mon)相關的配置。
  • [osd]:存儲與osd守護進程相關的配置。
  • [mgr]:存儲與managers(MGR)相關的配置。
  • [mds]:存儲與元數據服務器(mds)相關的配置。
  • [client]:存儲應用於所有Ceph客戶機的配置。
提示:RHCS在/usr/share/doc/ceph/sample.ceph.conf中提供了一個配置示例文件。
注意:若需要針對某節點特定配置,可使用[daemon-type.instance-id]進行復寫,參考如下:
[mon]
#所有mon節點的配置;
[mon.serverc]
#serverc區別於mon的獨特配置。
對於客戶端instance-id為用戶名。

6.2 常見配置

模塊
參數
含義
元數據模塊
$cluster
定義RHCS集群的名稱。默認設置為ceph,並在/etc/sysconfig/ceph文件中定義。
$type
定義守護進程類型。對於監視器,將其設置為mon, OSDs使用osd,元數據服務器使用mds,管理器使用mgr,客戶機應用程序使用client。
$id
定義守護進程實例ID。對於客戶機應用程序,它是用戶名。
$name
定義守護進程名和實例ID。相當於$type.$ID的簡寫。
$host
定義守護進程所運行的主機名。

global模塊定義全局參數,即定義集群范圍的參數。它通常包括以下配置設置:

  • 帶有所有監視器列表的mon主機。
  • mon初始成員設置為必須在集群啟動時啟動的監視器列表,以建立仲裁。
  • 啟用或禁用Ceph組件之間使用cephx身份驗證的設置(默認啟用)。
  • Ceph環境中使用的網絡,通常一個用於OSDs(集群網絡),一個用於客戶機(公共網絡)。

6.3 查看配置

命令:ceph daemon type.id config show #查看所有參數和值
示例:ceph daemon osd.0 config show
命令:ceph daemon type.id config get parameter #查看指定參數
示例:ceph daemon type.id config get mds_data

6.4 Ansible Ceph配置文件

在部署節點上使用Ansible部署,調用/usr/share/ceph-ansible中的Ansible Playbook部署或更新Red Hat Ceph存儲集群時,它都會在每個節點上重新創建/etc/ceph/ceph.conf文件。
在/usr/share/ceph-ansible_group_vars/,編輯ceph_conf_overrides變量,以添加新的節或配置參數。Ansible將該變量轉換為INI格式,並將其添加到生成的ceph.conf文件。
提示:部署新的配置到節點時候,需要在/usr/share/ceph-ansible目錄使用ansibe-playbook site.yml命令。

七 啟動和停止Ceph

7.1 概述

使用systemct1命令管理Ceph服務。systemctl命令可用於管理Ceph服務。有一個systemd命令控制所有Ceph守護進程,也存在獨立的命令只控制特定類型的守護進程。
  • ceph.target:啟動或停止當前節點上的所有守護進程
  • ceph-type.target:啟動或停止特定類型的所有守護進程

7.2 常見命令

命令
含義
備注
systemctl stop ceph-$type@$id
停止特定守護進程。
 
systemctl stop ceph-osd.target
停止所有OSD守護進程。
 
systemctl stop ceph.target
停止所有ceph守護進程。
 
systemctl start ceph-$type@$id
啟動特定守護進程。
 
systemctl start ceph-osd.target
啟動所有OSD守護進程。
 
systemctl start ceph.target
啟動所有ceph守護進程。
 
systemctl restart ceph-$type@$id
重啟特定守護進程。
 
systemctl restart ceph-osd.target
重啟所有OSD守護進程。
 
systemctl restart ceph.target
重啟所有ceph守護進程。
 

八 管理Ceph認證

8.1 CephX認證

在RHCS集群中,用戶使用授權機制在客戶端、應用程序和守護進程之間通信。為了安全地對這些用戶進行身份驗證,Ceph使用基於共享密鑰的cephx身份驗證協議。
提示:默認情況下,安裝過程已啟用cephx,因此RHCS集群需要所有客戶機應用程序的身份驗證和適當授權。
Ceph守護進程使用的帳戶具有與關聯守護進程相匹配的名稱,如osd.1或mgr.serverc。Ansible Playbook在安裝期間已創建它們。
使用librados的客戶端應用程序使用的帳戶的名稱以client..開頭。
例如,當將OpenStack與Ceph集成時,通常創建一個名為client.openstack專用帳戶。此外,當Ansible部署Ceph對象網關時,它會創建一個名為client.rgw.hostname的專用帳戶。最后,如果您正在librados之上開發自定義軟件,還應該為它創建一個具有適當功能的特定帳戶。
管理員使用的帳戶也以client開頭的名稱。,當運行ceph和rados等命令時使用。通常創建一個名為client.admin超級賬戶,具有允許它訪問所有內容和修改集群配置的功能。默認情況下,在運行管理命令時,不使用--name或--id選項顯式指定用戶名。

8.2 key-ring密鑰環

密鑰環文件對於身份驗證,必須使用Ceph用戶名和包含用戶密鑰的密匙環文件配置客戶機。Ceph用戶需要這個key-ring文件來訪問Red Hat Ceph存儲集群。
Ceph會自動創建的每個用戶帳戶生成密匙環文件。若相應的客戶端需要訪問Ceph,需要將該文件復制到需要它的客戶機系統或應用程序服務器。
在這些客戶機系統上,librados使用/etc/ceph/ceph.conf配置文件中的keyring參數來定位key-ring文件。它的默認值是/etc/ceph/$cluster.$name。keyring。
提示:當使用ceph,rados,rbd等命令的時候,可通過--id和--keyring指定相應的用戶和密鑰環,默認使用client.admin用戶。若keyring保存在默認路徑,可省略--keyring選項。
注意:指定用戶的時候,不需要帶client,只需要帶name即可。ceph會自動加上client。

8.3 權限管理

當創建一個新的用戶帳戶時,需要授予它權限來控制該用戶在RHCS集群中被授權做什么。cephx中的權限稱為功能,可以根據守護程序類型(mon、osd、mgr或mds)授予它們。
功能的作用:
  • 限制對池、池的名稱空間或一組基於應用程序標記的池中的數據的訪問。
  • 授權RHCS集群中的守護進程彼此交互。
常見權限:
  • r:授予讀權限。每個用戶帳戶應該至少具有對監視器的讀訪問權,以便能夠檢索粉碎地圖。
  • w:授予寫權限。客戶端需要寫訪問來存儲和修改OSDs上的對象。對於manager(MGRs),w授予啟用或禁用模塊的權利。
  • x:授予執行擴展對象類的授權。這允許客戶端對對象執行額外的操作,例如使用rados lock get設置鎖或使用RBD list列出RBD映像。
  • *:授予完全訪問。
  • class-read和class-write:是x的子集,主要在用於RBD的池中使用它們。

8.4 常見授權操作

  • 授予權限
命令示例:ceph auth get-or-create client.formyapp1 \
mon 'allow r' \
osd 'allow w'
解釋:創建formyapp1用戶,並授予mon的讀權限,osd的寫權限。
cephx支持使用功能配置文件定義相關用戶權限。
  • 限定權限
命令示例:ceph auth get-or-create client.forrbd \
mon 'profile rbd' \
osd 'profile rbd'
解釋:使用rbd配置文件定義新的forrbd用戶帳戶的訪問權限。客戶機應用程序可以使用這個帳戶使用RADOS塊設備基於塊訪問Ceph存儲。
  • 特定池權限限定
限制訪問您應該限制用戶OSD權限,以便用戶只能訪問他們需要的池。
命令示例:ceph auth get-or-create client.formyapp2 \
mon 'allow r' \
osd 'allow rw pool=myapp'
解釋:創建formyapp2用戶,並限制僅對myapp池的讀寫訪問,如果在配置功能時沒有指定池,Ceph將在所有現有池上設置它們。
  • 特定對象限定
cephx還可以通過對象名稱前綴來限制對obiects的訪問。
命令示例:ceph auth get-or-create client.formyapp3 \
mon 'allow r' \
osd 'allow rw object_prefix pref'
解釋:限制只能訪問名稱以pref開頭的對象。
  • 特定命名空間限定
通過名稱空間。應用程序可以使用名稱空間對池中的對象進行邏輯分組,然后可以將用戶帳戶限制為屬於特定名稱空間的對象。
命令示例:ceph auth get-or-create client.designer \
mon 'allow r' \
osd 'allow rw namespace=photos'
  • 特定路徑限定
在Ceph文件系統(CephFS)中使用此方法限制對特定目錄的訪問。
命令示例:
ceph fs authorize cephfs client.wegdesigner /webcontent rw
ceph auth get client.wegdesigner
  • 特定命令限定
通過監控命令,將管理員限制為特定的命令列表。
命令示例:ceph auth qet-or-create client.operator1 \
mon 'allow r,allow command "auth get-or-create",allow command "auth list"'
解釋:創建operator1用戶帳戶,並將其訪問權限限制為兩個命令。

8.5 常見用戶管理

命令
含義
備注
ceph auth list
列出用戶及其功能
 
ceph auth get client.admin
列出特定帳戶的詳細信息。
 
ceph auth print-key client.admin
列出特定用戶的密鑰環信息。
 
ceph auth export client.operator1 > ~/operator1.export
導出和導入用戶帳戶。
 
ceph auth import -i ~/operator1.export
 
ceph auth get-or-create client.application1 \
mon 'allow r' \
osd 'allow rw' \
- o /etc/ceph/ceph.client.application1.keyring
創建一個新用戶帳戶並生成其密鑰。
創建用戶默認情況下將此鍵輸出到stdout,因此建議加-o輸入到具體文件,以便保存。
ceph auth caps client.application1 \
mon 'allow r' \
osd 'allow rw pool=mypool'
修改用戶功能。
ceph auth caps命令覆蓋所有現有功能,因此在使用此命令時,必須為所有守護進程指定完整的功能集,而不僅僅是要修改的守護進程。
ceph auth caps client,application1 osd ''
刪除所有功能。
使用一個空字符串刪除所有功能。
ceph auth del client.application1
刪除用戶。
建議同時手動刪除key密鑰環。

九 創建replicated類型池

9.1 創建復制存儲池

  1 [ceph@serverc ~]$ ceph osd pool create mytestpool 64	#CRUSH默認使用replicated_rule

9.2 開啟rbd

  1 [ceph@serverc ~]$ ceph osd pool application enable mytestpool rbd

9.3 確認驗證

  1 [ceph@serverc ~]$ ceph osd pool ls
  2 [ceph@serverc ~]$ ceph df
 
001

9.4 改名並查看

  1 [ceph@serverc ~]$ ceph osd pool rename mytestpool mypool
  2 [ceph@serverc ~]$ ceph osd pool ls detail
 

9.5 其他參數調整

  1 [ceph@serverc ~]$ ceph osd pool set mypool size 3		#修改size為3
  2 [ceph@serverc ~]$ ceph osd pool ls detail
 
002

9.6 上傳文件測試

  1 [ceph@serverc ~]$ rados -p mypool -N system put testconf /etc/ceph/ceph.conf	#上傳至mypool池的system命名空間
  2 [ceph@serverc ~]$ rados -p mypool put testkey /etc/ceph/ceph.client.admin.keyring
  3 [ceph@serverc ~]$ rados -p mypool -N system ls
  4 [ceph@serverc ~]$ rados -p mypool ls
  5 [ceph@serverc ~]$ rados -p mypool --all ls
 
003

9.7 刪除池

  1 [ceph@serverc ~]$ ceph osd pool delete mypool
  2 [ceph@serverc ~]$ ceph osd pool delete mypool --yes-i-really-really-mean-it
 
提示:見2.8。

十 創建糾刪碼池

10.1 創建糾刪存儲池配置文件

  1 [ceph@serverc ~]$ ceph osd erasure-code-profile ls		        #查看現有配置文件
  2 [ceph@serverc ~]$ ceph osd erasure-code-profile get default	        #查看默認配置文件相關參數
 
004
  1 [ceph@serverc ~]$ ceph osd erasure-code-profile set ceph125 k=3 m=2 crush-failure-domain=osd		#創建新的配置文件ceph125
  2 [ceph@serverc ~]$ ceph osd erasure-code-profile get ceph125
 
005

10.2 創建糾刪存儲池

  1 [ceph@serverc ~]$ ceph osd pool create myecpool 64 64 erasure ceph125	#指定配置文件創建糾刪碼存儲池

10.3 開啟rgw

  1 [ceph@serverc ~]$ ceph osd pool application enable myecpool rgw

10.4 確認驗證

  1 [ceph@serverc ~]$ ceph osd pool ls
  2 [ceph@serverc ~]$ ceph df
  3 [ceph@serverc ~]$ ceph osd pool ls detail
 
006

10.5 上傳文件測試

  1 [ceph@serverc ~]$ rados -p myecpool put mytest /usr/share/dict/words	#作為mytest對象上傳
  2 [ceph@serverc ~]$ ceph df
  3 [ceph@serverc ~]$ rados -p myecpool get mytest /tmp/words		        #下載上傳的mytest
  4 [ceph@serverc ~]$ diff /tmp/words /usr/share/dict/words			#對比
 
007

十一 修改Ceph配置

11.1 查看當前特定參數

  1 [ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
  2 [ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd		#查看osd debug輸出
 
008
解釋:第一個值1是/var/log/cephin中的日志文件的日志級別。第二個值5是內存日志的日志級別。

11.2 部署節點修改相關配置

  1 [ceph@servera ~]$ sudo cp /usr/share/ceph-ansible/group_vars/all.yml /usr/share/ceph-ansible/group_vars/all.yml.bak						#建議備份一次
  2 [ceph@servera ~]$ sudo vi /usr/share/ceph-ansible/group_vars/all.yml
  3 ceph_conf_overrides:
  4   global:
  5     mon_osd_allow_primary_affinity: 1
  6     mon_clock_drift_allowed: 0.5
  7     osd_pool_default_size: 2
  8     osd_pool_default_min_size: 1
  9     mon_pg_warn_min_per_osd: 0
 10     mon_pg_warn_max_per_osd: 0
 11     mon_pg_warn_max_object_skew: 0
 12     mon_allow_pool_delete: true					#追加
 13   osd:
 14     debug_osd: 10							#追加
 15   client:
 16     rbd_default_features: 1
 17     debug_ms: 1							#追加
 
解析:mon_allow_pool_delete: true允許刪除pool,debug_osd: 10表示將OSD輸入日志級別都設置為10,debug_ms: 1表示增加client操作日志的輸出。

11.3 重新刷新配置

  1 [student@servera ~]$ cd /usr/share/ceph-ansible/
  2 [student@servera ceph-ansible]$ ansible-playbook site.yml
 
提示:若部署成功,則對於每個節點,前面的命令輸出應該顯示failed=0。在playbook執行過程中,可能會有許多非致命的警告,它們不會被當做“失敗”任務,可以忽略。

11.4 查看修改后的參數

  1 [ceph@serverc ~]$ sudo systemctl restart ceph-mon.target
  2 [ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
  3 [ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd		#查看osd debug輸出
 
009

11.5 刪除池測試

  1 [ceph@serverc ~]$ ceph osd pool delete myecpool
  2 [ceph@serverc ~]$ ceph osd pool delete myecpool myecpool --yes-i-really-really-mean-it
 
010
提示:測試完畢后建議刪除debug_osd: 10和debug_ms: 1配置(即還原),避免冗長不必要的日志輸出。

十二 Ceph用戶及授權

12.1 創建用戶

  1 [ceph@serverc ~]$ ceph auth get-or-create client.docedit \
  2 mon 'allow r' \
  3 osd 'allow rw pool=mypool namespace=docs' \
  4 -o /etc/ceph/ceph.client.docedit.keyring
 
提示:定義池和命名空間的時候,必須將pool寫在前面。
  1 [ceph@serverc ~]$ ceph auth get-or-create client.docget \
  2 mon 'allow r' \
  3 osd 'allow r pool=mypool namespace=docs' \
  4 -o /etc/ceph/ceph.client.docget.keyring
 

12.2 確認驗證

  1 [ceph@serverc ~]$ ceph auth list
011

12.3 復制相關key密鑰環

  1 [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docedit.keyring servera:/etc/ceph/
  2 [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docget.keyring servera:/etc/ceph/
 

12.4 servera節點上傳文件進行驗證

  1 [ceph@servera ~]$ rados --id docedit -p mypool -N docs put testdoc /etc/services
  2 [ceph@servera ~]$ rados --id docget -p mypool -N docs get testdoc /tmp/test
  3 [ceph@servera ~]$ diff /etc/services /tmp/test
 

12.5 驗證權限

  1 [ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services    #驗證docget用戶對docs命名空間權限
 
012

12.6 修改授權

  1 [ceph@serverc ~]$ ceph auth caps client.docget \
  2 mon 'allow r' \
  3 osd 'allow rw pool=mypool namespace=docs,allow rw pool=docarchive'   #修改docget用戶對mypool池中的docs名稱空間和docarchive池進行寫訪問。
 
提示:ceph auth caps命令覆蓋所有現有功能,因此在使用此命令時,必須為所有守護進程指定完整的功能集,而不僅僅是要修改的守護進程。同時該命令可以授權當前還未創建的池的權限。

12.7 再次測試

  1 [ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services
  2 [ceph@servera ~]$ rados -p mypool -N docs ls
 
013

12.8 刪除用戶及密鑰環

  1 [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docedit.keyring
  2 [ceph@serverc ~]$ ceph auth del client.docedit
  3 [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docget.keyring
  4 [ceph@serverc ~]$ ceph auth del client.docget
  5 [ceph@servera ~]$ rm /etc/ceph/ceph.client.docedit.keyring
  6 [ceph@servera ~]$ rm /etc/ceph/ceph.client.docget.keyring
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM