技術漫談|搭建自己的ceph RBD

Ceph 獨一無二地用統一的系統提供了對象、塊、和文件存儲功能,它可靠性高、管理簡便、並且是自由軟件。 Ceph 的強大足以改變公司的 IT 基礎架構、和管理海量數據。 Ceph 可提供極大的伸縮性——供成千用戶訪問 PB 乃至 EB 級的數據。 Ceph 節點以普通硬件和智能守護進程作為支撐點, Ceph 存儲集群組織起了大量節點,它們之間靠相互通訊來複制數據、並動態地重分佈數據。


如圖為應用場景示意圖,其核心是RADOS,也即高可用、自動化的分佈式對象存儲,該模塊負責對OSD的自動化運行,保證整個存儲系統的可用性。同時,該模塊通過一個名為librados的公共庫對外提供存儲服務,塊存儲和對象存儲都依賴該動態庫。

同時,Ceph本身封裝了對象存儲的接口和塊存儲的接口。對象存儲的接口包括對象網關和對象存儲訪問庫等。塊存儲接口包括塊存儲訪問動態庫、Python綁定庫和內核態的虛擬塊設備。

Ceph存儲系統的邏輯層次結構如下圖所示:

技術漫談|搭建自己的ceph RBD

Ceph存儲系統的組件

Ceph集群的核心組件是OSD和MON,其中OSD用於數據的具體存儲操作,MON用於一些“映射圖”,通過該“映射圖”客戶端可以計算出數據的存放位置,並將數據直接發送給相應的OSD處理。由於OSD和MON之間存在監控關係,並且通過相應的策略進行相關調度,保證自動故障處理和負載均衡等,因此將OSD、MON以及這些策略統稱為RADOS。

為了便於對RADOS的管理和使用,在RADOS之上實現了一套動態庫(librados),動態庫通常位於客戶端,通過網絡與RADOS交互命令和數據。

Ceph天生就是對象存儲,rados本身提供了一套以對象方式存儲和訪問Ceph集群數據的接口。而Ceph又同時提供了塊存儲和文件系統存儲的功能,該功能基於Ceph的對象存儲實現。

OSD

OSD的全稱是Object Storage Device,OSD通常是一個物理的存儲設備(例如磁盤),也可以是邏輯的存儲設備(例如磁盤上的某個文件夾)。當然,這裡的存儲設備不限於服務器上的本地硬盤,也可以是通過iSCSI協議或者FC協議映射的LUN。 有時候提及的OSD實際上是OSD守護進程,視語境而定。

OSD守護進程

OSD守護進程是OSD的軟件實現,OSD守護進程用來對OSD進行管理(數據讀寫等),客戶端數據交互的對象是OSD守護進程。

MON

MON是Ceph集群的監控軟件,一個守護進程,其中包含若干“映射圖”信息。客戶端向Ceph集群寫數據前通常要向MON請求,獲取最新的“映射圖”,並通過其計算出數據的存放位置。

librados

librados是一個動態庫程序,其提供了客戶端訪問Ceph集群的原生態統一接口。其它接口或者命令行工具都基於該動態庫實現。

在librados中實現了Crush算法和網絡通信等公共功能,數據請求操作在librados計算完成後可以直接與對應的OSD交互進行數據傳輸

技術漫談|搭建自己的ceph RBD

CEPH 塊設備

Ceph 塊設備是精簡配置的、大小可調且將數據條帶化存儲到集群內的多個 OSD 。 Ceph 塊設備利用 RADOS 的多種能力,如快照、複製和一致性。 Ceph 的 RADOS 塊設備( RBD )使用內核模塊或 librbd 庫與 OSD 交互。

技術漫談|搭建自己的ceph RBD

ceph安裝

技術漫談|搭建自己的ceph RBD

配置ceph yum源

vim /etc/yum.repos.d/ceph.repo

[ceph]

name=ceph

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/

gpgcheck=0

[ceph-noarch]

name=cephnoarch

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/

gpgcheck=0

升級系統

yum update -y && yum install ceph-deploy -y

安裝ntp

yum install -y ntp ntpdate ntp-doc

ntpdate 0.us.pool.ntp.org

hwclock –systohc

systemctl enable ntpd.service

systemctl start ntpd.service

vmware需要安裝的組件

yum install -y open-vm-tools

創建用戶

useradd -d /home/cephuser -m cephuser

passwd cephuser

用戶權限

echo “cephuser ALL = (root) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/cephuser

chmod 0440 /etc/sudoers.d/cephuser

sed -i s’/Defaults requiretty/#Defaults requiretty’/g /etc/sudoers

關閉selinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

關閉防火牆

systemctl enable firewalld

firewall-cmd –set-default-zone=trusted

firewall-cmd –complete-reload

firewall-cmd –list-all

安裝ceph(ceph節點)

yum -y install ceph

ceph –version

ceph version 10.2.9 (2ee413f77150c0f375ff6f10edd6c8f9c7d060d0)

格式化磁盤(ceph節點)

技術漫談|搭建自己的ceph RBD

配置免密鑰登陸

技術漫談|搭建自己的ceph RBD

創建集群配置

技術漫談|搭建自己的ceph RBD

修改集群配置文件

技術漫談|搭建自己的ceph RBD

安裝ceph組件

技術漫談|搭建自己的ceph RBD

ceph-deploy install –no-adjust-repos ceph2

ceph-deploy install –no-adjust-repos ceph3

查看密鑰

[cephuser@ceph1 cluster]$ ls

ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph-deploy-ceph.log

ceph.bootstrap-mgr.keyring ceph.client.admin.keyring ceph.mon.keyring

ceph.bootstrap-osd.keyring ceph.conf

該命令將創建監視器鍵,使用’ceph’命令檢查並獲取密鑰。

技術漫談|搭建自己的ceph RBD

ceph-deploy gatherkeys ceph2

ceph-deploy gatherkeys ceph3

查看磁盤

技術漫談|搭建自己的ceph RBD

準備OSD

技術漫談|搭建自己的ceph RBD

激活OSD

技術漫談|搭建自己的ceph RBD

查看OSD節點

技術漫談|搭建自己的ceph RBD

查看磁盤分區情況

技術漫談|搭建自己的ceph RBD

分發key

技術漫談|搭建自己的ceph RBD

技術漫談|搭建自己的ceph RBD

查看集群狀態

技術漫談|搭建自己的ceph RBD

Ceph存儲空間查看

技術漫談|搭建自己的ceph RBD

查看OSD狀態

技術漫談|搭建自己的ceph RBD

查看OSD dump

技術漫談|搭建自己的ceph RBD

ceph rbd

client端配置

技術漫談|搭建自己的ceph RBD

Ceph提供rbd命令來管理rados塊設備圖像。我們可以使用rbd命令創建新映像,調整大小,創建快照並導出我們的塊設備。

創建一個大小為40GB的新的rbd映像,然後在rbd列表中檢查’ disk01 ‘。

技術漫談|搭建自己的ceph RBD

測試可用

技術漫談|搭建自己的ceph RBD

到此ceph的RBD搭建完畢,ceph的RBD作為塊設備像硬盤一樣直接掛載,未來在容器平臺會有很大的應用場景。

技術漫談|搭建自己的ceph RBD


分享到:


相關文章: