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模塊定義全局參數,即定義集羣範圍的參數。它一般包括如下配置設置:html

  • 帶有全部監視器列表的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
相關文章
相關標籤/搜索