Ceph 獨一無二地用統一的系統提供了對象、塊、和文件存儲功能,它可靠性高、管理簡便、並且是自由軟件。 Ceph 的強大足以改變公司的 IT 基礎架構、和管理海量數據。 Ceph 可提供極大的伸縮性——供成千用戶訪問 PB 乃至 EB 級的數據。 Ceph 節點以普通硬件和智能守護進程作為支撐點, Ceph 存儲集群組織起了大量節點,它們之間靠相互通訊來複制數據、並動態地重分佈數據。
如圖為應用場景示意圖,其核心是RADOS,也即高可用、自動化的分佈式對象存儲,該模塊負責對OSD的自動化運行,保證整個存儲系統的可用性。同時,該模塊通過一個名為librados的公共庫對外提供存儲服務,塊存儲和對象存儲都依賴該動態庫。
同時,Ceph本身封裝了對象存儲的接口和塊存儲的接口。對象存儲的接口包括對象網關和對象存儲訪問庫等。塊存儲接口包括塊存儲訪問動態庫、Python綁定庫和內核態的虛擬塊設備。
Ceph存儲系統的邏輯層次結構如下圖所示:
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 塊設備
Ceph 塊設備是精簡配置的、大小可調且將數據條帶化存儲到集群內的多個 OSD 。 Ceph 塊設備利用 RADOS 的多種能力,如快照、複製和一致性。 Ceph 的 RADOS 塊設備( RBD )使用內核模塊或 librbd 庫與 OSD 交互。
ceph安裝
配置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組件
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-deploy gatherkeys ceph2
ceph-deploy gatherkeys ceph3
查看磁盤
準備OSD
激活OSD
查看OSD節點
查看磁盤分區情況
分發key
查看集群狀態
Ceph存儲空間查看
查看OSD狀態
查看OSD dump
ceph rbd
client端配置
Ceph提供rbd命令來管理rados塊設備圖像。我們可以使用rbd命令創建新映像,調整大小,創建快照並導出我們的塊設備。
創建一個大小為40GB的新的rbd映像,然後在rbd列表中檢查’ disk01 ‘。
測試可用
到此ceph的RBD搭建完畢,ceph的RBD作為塊設備像硬盤一樣直接掛載,未來在容器平臺會有很大的應用場景。
閱讀更多 睿雲智合Wise2C 的文章