導航:首頁 > 程序命令 > 命令ceph

命令ceph

發布時間:2023-05-31 13:12:44

① CentOS 7部署 Ceph分布式存儲架構

隨著OpenStack日漸成為開源雲計算的標准軟體棧,Ceph也已經成為OpenStack的首選後端存儲。Ceph是一種為優秀的性能、可靠性和可擴展性而設計的統一的、分布式文件系統。

Ceph是一個開源的分布式文件系統。因為它還支持塊存儲、對象存儲,所以很自然的被用做雲計算框架openstack或cloudstack整個存儲後端。當然也可以單獨作為存儲,例如部署一套集群作為對象存儲、SAN存儲、NAS存儲等。

前三台伺服器增加一塊硬碟/dev/sdb實驗, 創建目錄並掛載到/var/local/osd{1,2,3};

規范系統主機名添加hosts文件實現集群主機名與主機名之間相互能夠解析(host 文件添加主機名不要使用fqdn方式)可用 hostnamectl set-hostname [name] 設置分別打開各節點的 /etc/hosts 文件,加入這四個節點ip與名稱的對應關系:

在管理節點使用ssh-keygen 生成ssh keys 發布到各節點

第一步:增加 yum配置文件(各個節點都需要增加yum源) vim /etc/yum.repos.d/ceph.repo

或阿里的ceph源

復制配置文件到其它節點和客戶端

在ceph1更新軟體源並安裝ceph-deploy 管理工具

配置文件的默認副本數從3改成2,這樣只有兩個osd也能達到 active+clean 狀態,添加行 osd_pool_default_size = 2

(如果網路源安裝失敗,手工安裝epel-release 然後安裝yum –yinstall cep-release再yum –y install ceph ceph-radosgw)
錯誤參考: https://blog.csdn.net/yenai2008/article/details/72457463

添加osd節點 (所有osd節點執行)
我們實驗准備時已經創建目錄/var/local/osd{id}

(用ceph-deploy把配置文件和admin密鑰拷貝到所有節點,這樣每次執行Ceph命令行時就無需指定monitor地址和ceph.client.admin.keyring了)

以上基本上完成了ceph存儲集群的搭建。

其中: <pg_num> = 128 ,
關於創建存儲池
確定 pg_num 取值是強制性的,因為不能自動計算。下面是幾個常用的值:

隨著 OSD 數量的增加,正確的 pg_num 取值變得更加重要,因為它顯著地影響著集群的行為、以及出錯時的數據持久性(即災難性事件導致數據丟失的概率)。

創建好存儲池後,你就可以用 fs new 命令創建文件系統了
ceph fs new <fs_name> cephfs_metadata cephfs_data
其中: <fs_name> = cephfs 可自定義

在這里想起沒在/etc/fstab配置ceph1、ceph2、ceph3的sdb自動掛載。

ceph在開源社區還是比較熱門的,但是更多的是應用於雲計算的後端存儲。所以大多數在生產環境中使用ceph的公司都會有專門的團隊對ceph進行二次開發,ceph的運維難度也比較大。但是經過合理的優化之後,ceph的性能和穩定性都是值得期待的。

清理機器上的ceph相關配置

可以參考內容: http://blog.51cto.com/12270625/1887648

② ceph(第三步) 基本使用

系統的開始使用一個 ceph 集群。

本文將系統的介紹如何使用一個 ceph 集群。

涉及: crush、osd、pool、cache

ceph 版本:nautilus
ceph-deploy 版本:2.0.1

在基本使用需求下,一般需要存儲集群提供高性能存儲(SSD)和普通存儲(hdd)。

在 ceph 中,具體表現為某些池使用高性能存儲,某些池使用普通存儲。而這種需求在 ceph 中由 crush 規則實現。

ceph 提供了緩存的概念。在普通的存儲池之上架設一層高性能的緩存池,外部訪問首先到達緩存池,如果發生未命中等情況再去訪問存儲池。這里需要提一點,並不是任何情況都需要緩存。

針對不同的場景,ceph 的使用方式多種多樣,這里的介紹只能一切從簡,但是會盡量全面。

一個標準的場景:一個存儲池加一個緩存池,存儲池使用普通設備,緩存池使用高性能設備。

首先添加一塊高性能硬碟(我這里是虛擬環境,只能用普通硬碟充數)

然後需要利用 crush 讓不同池使用不同的存儲設備

這里只能拿普通的虛擬硬碟來做測試。

在 ceph02 虛擬機上增加一塊 30G 的虛擬硬碟弊罩。
在 ceph03 虛擬機上增加一塊 30G 的虛擬硬碟。

現在到部署節點進行操作:

如圖 ceph02 出現了 osd.6,ceph03 出現了 osd.7。

這里涉及到 root (根)的概念,在文章末尾【擴展】中會介紹。這里可以直接先使用。

將 osd.6 osd.7 加入名稱為 cache 的根中(根名稱會自動創建,注意,由於默認情況下 osd 在啟動時讀取的是 hostname,因此該方法只是臨時生效,在文章末尾【擴展】中會介紹永久生效辦法)

「高性能」存儲盤現在已經有了,並且將其置於 cache 根下,這么做的意義在下一步中有體現。

現在可以進行下一步了。

當前環境下已經有一個默認的 crush 規則。

具體屬性解釋參考:
https://docs.ceph.com/docs/mimic/rados/operations/crush-map-edits/#crush-map-rules

如上圖劃線處,當前規則只會使用 default 根的 osd。

前面創建高性能設備時,將其設帆卜稿置根為 cache。我們現在就可以創建一個只使用 cache 根中的 osd 的規則,從而實現緩存池和存儲池使用不同的設備。

創建緩存池使用的規則:

其中:
replicated_cache 指該規則的名字。
cache 指該規則使用的根。
host 指故障域級別。

再次查看所有規則:

現在我們有了一個只使用高性能存儲設備的規則了。接下來就可以開始創建使用不同規則的池了。

創建存儲池:

查看池:

查看該池的規則:

存儲池至此已經好了。

緩存池在 ceph 中常以 hot 標識。
普通存儲池在 ceph 中常以 cold 標識。

緩存有多種形式(官方文檔列出以下幾種,實際更多):

緩存參考:
https://docs.ceph.com/docs/master/rados/operations/cache-tiering/

創建緩存池

緩存池創建好以後,要將這個緩存池與對應存儲池聯系起來。這個聯系的概念叫做 cache tiering,可以稱之為緩存態孝層,緩存代理。

參考:
https://docs.ceph.com/docs/master/rados/operations/cache-tiering/

對於 test_storage 池,我們有一個只讀的緩存池了。只要我們讀取 test_storage 中的某個對象,這個對象就應該自動的置於緩存池中一段時間。

可以發現,將對象上傳回寫模式的緩存池,存儲池中也出現了對應的數據。

osd 的大小可能不相同,因此其上的數據量也不應該相同,因此引入權重來影響數據分布。
比如100G的 osd 權重為1,則200G的 osd 權重就應設置為2。

ceph osd tree 命令可以看到存儲結構。可以結合自己機器執行的結果往下閱讀。

一張官方圖:

這是描述 ceph 存儲結構的一張圖。

首先這是一個樹形結構。

其中最上層的 root default :root 是根的意思,default 就是這個根的名字。

中間 host foo :host 是主機的意思,foo 就是這個主機的名字。這里的主機名僅僅是個別稱,不代表實際的主機,可以隨意更改。

最下面的就是葉子節點了,具體指向 osd。

劃分這三層結構的意義(不完全):

本文使用 ceph-deploy 添加 osd 時,並沒有直接將其設置到最終根下,後續還需要手動配置。這么操作是不合理的,暫時未找到 ceph-deploy 指定根的參數。

當前文章配置的緩存池是2副本的。

某些時候,緩存數據是允許丟失的,比如只讀的緩存。這種緩存池單副本即可,但是經測試,單副本池在 ceph 中似乎困難重重。

可以通過修改該機器的 hostname ,一勞永逸

這個時候,當機器重啟後,該機器的所有 osd 的 host 名稱都一樣了,導致 osd tree 混亂。這個時候可以在 ceph.conf 中具體配置某塊盤的信息。

當前環境配置參考:

增加如下內容:

重啟後,一切正常。

在 osd 的啟動上做文章。
比如,配置 osd 的啟動方式,容器化 osd,容器會記住某些信息,因此可以實現永久生效 hostname。

osd 上的 pg 數量會對整體集群性能造成影響,並不是越多越好,也不是越少越好。

由於池有副本的概念,因此產生了如下的計算方式:

官方建議每個 osd 上的 pg 數為 100。實際測試每個 osd 上的 pg 數到達 250 時開始告警,因此該集群的總 pg 數不應超過:

因此出現此問題的原因:
所有池的 pg 數加起來超過了設定的 總 pg 數 。但集群依然可正常使用,因此只是一個警告。

解決該問題的手段:

目前個人經驗來說,不要使用單副本。

crush 規則參考:
https://docs.ceph.com/docs/master/rados/operations/crush-map/

③ ceph相關命令

Ceph 存儲集群包含兩種類型的守護進程:  Ceph 監視器  Ceph OSD 守護進程

RBD是Ceph對外提供的基於塊的存儲介面

 ceph常用命令 

集群狀態監控 

ceph -s #顯示ceph集群狀態

 ceph osd tree #顯示當前osd樹結構 

ceph osd pool ls  顯示所有資源池

ceph -w #動態顯示ceph當前動態,主要可以觀察讀寫流量 

ceph df #集群的數據用量及其在存儲池內的分布情況 

ceph osd df # 查看所有osd使用情況 

ceph osd perf #顯示各個osd響應時間,個別響應慢的osd可以考慮踢出集群(慎用) 

 設置pool副本數

 ceph osd pool get <pool-name> size #查看pool副本數 

ceph osd pool set <pool-name> size *** #設襲明置pool副本數 

 設置pg和pgp數(一磨培般pg=pgp) 

ceph osd pool get <pool-name> pg_num #查看pool pg_num

ceph osd pool set <pool-name> pg_num *** #設置pool pg_num 

ceph osd pool get <pool-name> pgp_num #查看pool pgp_num 

ceph osd pool set <pool-name> pgp_num *** #設置pool pgp_num

查看當前ceph配置 ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show

rbd常用命令

rbd –p <pool-name> create <rbd-name> --size 1G #創建 

rbd –p <pool-name> list #查看pool下所有塊 

rbd –p <pool-name> info <rbd-name> #查看塊詳情 

rbd –p <pool-name> resize --size *G <rbd-name> #擴拍游告容大小至*G 

rbd –p <pool-name> resize –size *G <rbd-name> --allow-shrink #縮容至*G 

rbd –p <pool-name> rm <rbd-name> #刪除 

 快照操作 

rbd –p <pool-name> snap create <rbd-name> --snap <snap-name> #創建快照 

rbd –p <pool-name> snap ls <rbd-name> #列出卷的所有快照 

rbd –p <pool-name> snap rollback <rbd-name> --snap <snap-name> #回滾快照 

rbd –p <pool-name> snap rm <rbd-name> --snap <snap-name> #刪除快照 

rbd –p <pool-name> snap protect <rbd-name> --snap <snap-name> #保護快照,此時無法刪除

 rbd –p <pool-name> snap unprotect <rbd-name> --snap <snap-name> #解除保護 

rbd –p <pool-name> import <file-name> #導入文件 

 krbd使用

 rbd –p <pool-name> create <rbd-name> --size *G –image-feature layering #創建krbd塊

 rbd map <pool-name>/<rbd-name> #映射到本地 

rbd –p <pool-name> showmapped #查看映射關系 

rbd unmap <pool-name>/<rbd-name> #解除本地映射

閱讀全文

與命令ceph相關的資料

熱點內容
單片機定時電路 瀏覽:672
山西平台伺服器雲主機 瀏覽:700
按摩肚臍解壓視頻 瀏覽:989
php55安裝教程 瀏覽:137
雲伺服器怎麼查找本機域名 瀏覽:22
qd123y壓縮機參數 瀏覽:385
程序員媽媽懷孕 瀏覽:490
金普國際編程 瀏覽:537
java什麼是引用類型 瀏覽:944
這是命令嗎txt 瀏覽:314
支付寶android包名 瀏覽:154
eclipsemaven命令 瀏覽:68
24路伺服器配什麼cpu 瀏覽:466
壓縮文件和解壓文件哪個快 瀏覽:675
亞馬遜雲伺服器視頻通話 瀏覽:912
金融知識app哪個好 瀏覽:978
農行理財app收益在哪裡 瀏覽:969
暗淡的命令名項目表示該命令 瀏覽:212
串口轉乙太網程序源碼 瀏覽:970
兩位數乘兩位數的快速運演算法 瀏覽:907