1. Ceph 概述
1.1 背景
Ceph 是一個(gè)去中心化的分布式存儲(chǔ)系統(tǒng), 提供較好的性能、可靠性和可擴(kuò)展性。Ceph 項(xiàng)目最早起源于 Sage 就讀博士期間的工作(最早的成果于 2004 年發(fā)表),并隨后貢獻(xiàn)給開(kāi)源社區(qū), 遵循 LGPL 協(xié)議(LESSER GENERAL PUBLIC LICENSE 的簡(jiǎn)寫(xiě),中文譯為 “較寬松公共許可證”)。在經(jīng)過(guò)了數(shù)年的發(fā)展之后,目前已得到眾多云計(jì)算廠(chǎng)商(OpenStack、CloudStack、OpenNebula、Hadoop)的支持并被廣泛應(yīng)用。
1.2 介紹
Ceph 是一個(gè)可靠、自動(dòng)重均衡、自動(dòng)恢復(fù)的分布式存儲(chǔ)系統(tǒng),根據(jù)場(chǎng)景劃分可以將 Ceph 分為三大塊,分別是對(duì)象存儲(chǔ)、塊設(shè)備和文件系統(tǒng)服務(wù)。 Ceph 的主要優(yōu)點(diǎn)是分布式存儲(chǔ),在存儲(chǔ)每一個(gè)數(shù)據(jù)時(shí),都會(huì)通過(guò)計(jì)算得出該數(shù)據(jù)存儲(chǔ)的位置,盡量將數(shù)據(jù)分布均衡,不存在傳統(tǒng)的單點(diǎn)故障的問(wèn)題,可以水平擴(kuò)展。 Ceph 存儲(chǔ)集群至少需要一個(gè) Ceph Monitor 和兩個(gè) OSD 守護(hù)進(jìn)程。而運(yùn)行 Ceph 文件系統(tǒng)客戶(hù)端時(shí),則必須要有元數(shù)據(jù)服務(wù)器(Metadata Server)。
1.3 特點(diǎn)
Ceph 適合跨集群的小文件存儲(chǔ), 擁有以下特點(diǎn):
高性能
Client 和 Server 直接通信, 不需要代理和轉(zhuǎn)發(fā);
Client 不需要負(fù)責(zé)副本的復(fù)制, 有 Primary 主節(jié)點(diǎn)負(fù)責(zé), 這樣可以有效降低 clien 網(wǎng)絡(luò)的消耗;
采用 CRUSH 算法,數(shù)據(jù)分布均衡,并行度高,支持上千個(gè)存儲(chǔ)節(jié)點(diǎn), 支持 TB 及 PB 級(jí)數(shù)據(jù)。
高可用性
數(shù)據(jù)多副本, 支持故障域分隔,數(shù)據(jù)強(qiáng)一致性;
沒(méi)有單點(diǎn)故障,較好的容錯(cuò)性, 有效支撐各種故障場(chǎng)景;
支持所有故障的檢測(cè)和自動(dòng)恢復(fù),可以做到自動(dòng)化管理;
支持并行恢復(fù),能夠極大的降低數(shù)據(jù)恢復(fù)時(shí)間, 提高數(shù)據(jù)的可靠性。
高擴(kuò)展性
高度并行化設(shè)計(jì),沒(méi)有單個(gè)中心控制組件,所有負(fù)載都能動(dòng)態(tài)的劃分到各個(gè)服務(wù)器上。
去中心化、靈活、隨節(jié)點(diǎn)增加線(xiàn)性增長(zhǎng)。
場(chǎng)景豐富
支持三種存儲(chǔ)接口類(lèi)型:塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)。同時(shí)支持自定義接口,C++ 為底層實(shí)現(xiàn), 兼容多種語(yǔ)言。
塊存儲(chǔ):將磁盤(pán)空間映射給主機(jī)使用, 適用 docker 容器、虛擬機(jī)磁盤(pán)存儲(chǔ)分配;日志存儲(chǔ), 文件存儲(chǔ)。
文件存儲(chǔ):解決塊存儲(chǔ)無(wú)法共享問(wèn)題, 在服務(wù)器架設(shè) FTP 和 NFS 服務(wù)器,適用目錄結(jié)構(gòu)的存儲(chǔ)、日志存儲(chǔ)等。
對(duì)象存儲(chǔ):大容量硬盤(pán), 安裝存儲(chǔ)管理軟件, 對(duì)外提供讀寫(xiě)訪(fǎng)問(wèn)能力, 具備塊存儲(chǔ)的高速讀寫(xiě)能力, 也具備文件存儲(chǔ)共享的特性;適用圖片存儲(chǔ)或視頻存儲(chǔ)。
1.4 分布式存儲(chǔ)系統(tǒng)橫縱對(duì)比
對(duì)比說(shuō)明 | TFS | FASTDFS | MooseFS | GlusterFS | CEPH |
---|---|---|---|---|---|
開(kāi)發(fā)語(yǔ)言 | C++ | C | C | C | C++ |
數(shù)據(jù)存儲(chǔ)方式 | 塊 | 文件 / Trunk | 塊 | 文件 / 塊 | 對(duì)象 / 文件 / 塊 |
在線(xiàn)擴(kuò)容 | 支持 | 支持 | 支持 | 支持 | 支持 |
冗余備份 | 支持 | 支持 | 支持 | 支持 | 支持 |
單點(diǎn)故障 | 存在 | 不存在 | 存在 | 不存在 | 不存在 |
易用性 | 安裝復(fù)雜,官方文檔少 | 安裝簡(jiǎn)單,社區(qū)相對(duì)活躍 | 安裝簡(jiǎn)單,官方文檔多 | 安裝簡(jiǎn)單,官方文檔專(zhuān)業(yè)化 | 安裝簡(jiǎn)單,官方文檔專(zhuān)業(yè)化 |
適用場(chǎng)景 | 跨集群的小文件 | 單集群的中小文件 | 單集群的大中文件 | 跨集群云存儲(chǔ) | 單集群的大中小文件 |
2. Ceph 架構(gòu)設(shè)計(jì)
2.1 Ceph 整體設(shè)計(jì)
基礎(chǔ)存儲(chǔ)系統(tǒng) RADOS
Reliable, Autonomic,Distributed Object Store,即可靠的、自動(dòng)化的、分布式的對(duì)象存儲(chǔ)
這就是一個(gè)完整的對(duì)象存儲(chǔ)系統(tǒng),所有存儲(chǔ)在 Ceph 系統(tǒng)中的用戶(hù)數(shù)據(jù)事實(shí)上最終都是由這一層來(lái)存儲(chǔ)的。而 Ceph 的高可靠、高可擴(kuò)展、高性能、高自動(dòng)化等等特性本質(zhì)上也是由這一層所提供的。
基礎(chǔ)庫(kù) librados
這層的功能是對(duì) RADOS 進(jìn)行抽象和封裝,并向上層提供 API,以便直接基于 RADOS(而不是整個(gè) Ceph)進(jìn)行應(yīng)用開(kāi)發(fā)。特別要注意的是,RADOS 是一個(gè)對(duì)象存儲(chǔ)系統(tǒng),因此,librados 實(shí)現(xiàn)的 API 也只是針對(duì)對(duì)象存儲(chǔ)功能的。RADOS 采用 C++ 開(kāi)發(fā),所提供的原生 librados API 包括 C 和 C++ 兩種。
高層應(yīng)用接口
這層包括了三個(gè)部分:RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和 Ceph FS(Ceph File System),其作用是在 librados 庫(kù)的基礎(chǔ)上提供抽象層次更高、更便于應(yīng)用或客戶(hù)端使用的上層接口。其中,RADOS GW 是一個(gè)提供與 Amazon S3 和 Swift 兼容的 RESTful API 的 gateway,以供相應(yīng)的對(duì)象存儲(chǔ)應(yīng)用開(kāi)發(fā)使用。RADOS GW 提供的 API 抽象層次更高,但功能則不如 librados 強(qiáng)大。
應(yīng)用層
這層是不同場(chǎng)景下對(duì)于 Ceph 各個(gè)應(yīng)用接口的各種應(yīng)用方式,例如基于 librados 直接開(kāi)發(fā)的對(duì)象存儲(chǔ)應(yīng)用,基于 RADOS GW 開(kāi)發(fā)的對(duì)象存儲(chǔ)應(yīng)用,基于 RBD 實(shí)現(xiàn)的云硬盤(pán)等等。librados 和 RADOS GW 的區(qū)別在于,librados 提供的是本地 API,而 RADOS GW 提供的則是 RESTfulAPI。
由于 Swift 和 S3 支持的 API 功能近似,這里以 Swift 舉例說(shuō)明。Swift 提供的 API 功能主要包括:
用戶(hù)管理操作:用戶(hù)認(rèn)證、獲取賬戶(hù)信息、列出容器列表等;
容器管理操作:創(chuàng)建 / 刪除容器、讀取容器信息、列出容器內(nèi)對(duì)象列表等;
對(duì)象管理操作:對(duì)象的寫(xiě)入、讀取、復(fù)制、更新、刪除、訪(fǎng)問(wèn)許可設(shè)置、元數(shù)據(jù)讀取或更新等。
2.2 邏輯架構(gòu)
2.3 Ceph 專(zhuān)業(yè)術(shù)語(yǔ)
OSD: Ceph 的對(duì)象存儲(chǔ)設(shè)備,OSD 守護(hù)進(jìn)程的功能是存儲(chǔ)數(shù)據(jù),處理數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡,并通過(guò)檢查其他 OSD 守護(hù)進(jìn)程的心跳來(lái)向 Ceph Monitors 提供一些監(jiān)控信息。
Monitors: Ceph 監(jiān)視器,Monitor 維護(hù)著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、OSD 圖、歸置組(PG)圖、和 CRUSH 圖。
PG:Ceph 歸置組,每個(gè) Object 最后都會(huì)通過(guò) CRUSH 計(jì)算映射到某個(gè) PG 中,一個(gè) PG 可以包含多個(gè) Object。
MDS: Ceph 元數(shù)據(jù)服務(wù)器(MDS),為 Ceph 文件系統(tǒng)存儲(chǔ)元數(shù)據(jù)。
CephFS: Ceph 文件系統(tǒng),CephFS 提供了一個(gè)任意大小且兼容 POSIX 的分布式文件系統(tǒng)。
RADOS: Reliable Autonomic Distributed Object Store,表示可靠、自動(dòng)、分布式的對(duì)象存儲(chǔ)。Ceph 中的一切都是以對(duì)象形式存儲(chǔ),RADOS 就負(fù)責(zé)存儲(chǔ)這些對(duì)象,RADOS 層確保數(shù)據(jù)一致性和可靠性。
Librados:librados 庫(kù)是一種用來(lái)簡(jiǎn)化訪(fǎng)問(wèn) RADOS 的方法,目前支持 PHP、Python、Ruby、Java、C 和 C++ 語(yǔ)言。
RBD:Ceph 的塊設(shè)備,它對(duì)外提供塊存儲(chǔ),可以被映射、格式化進(jìn)而像其他磁盤(pán)一樣掛載到服務(wù)器。
RGW/RADOSGW:Ceph 對(duì)象網(wǎng)關(guān),它提供了一個(gè)兼容 S3 和 Swift 的 restful API 接口。
3. Ceph 集群部署配置
3.1 部署結(jié)構(gòu)
虛擬機(jī)創(chuàng)建三臺(tái)服務(wù)器,CENTOS 版本為 7.6, IP 網(wǎng)段 192.168.116.0/24。三臺(tái)主機(jī)名稱(chēng)為:
CENTOS7-1: IP 為 192.168.116.141, 既做管理節(jié)點(diǎn), 又做子節(jié)點(diǎn)。
CENTOS7-2: IP 為 192.168.116.142, 子節(jié)點(diǎn)。
CENTOS7-3: IP 為 192.168.116.143, 子節(jié)點(diǎn)。
3.2 系統(tǒng)配置
系統(tǒng)配置工作, 三臺(tái)節(jié)點(diǎn)依次執(zhí)行:
修改主機(jī)名稱(chēng) [root@CENTOS7-1 ~]# vi /etc/hostname
CENTOS7-1
編輯 hosts 文件
192.168.116.141 CENTOS7-1 192.168.116.142 CENTOS7-2 192.168.116.143 CENTOS7-3
注意, 這里面的主機(jī)名稱(chēng)要和節(jié)點(diǎn)名稱(chēng)保持一致, 否則安裝的時(shí)候會(huì)出現(xiàn)問(wèn)題
修改 yum 源 vi /etc/yum.repos.d/ceph.repo, 為避免網(wǎng)速過(guò)慢問(wèn)題, 這里采用的是清華鏡像源:
[Ceph] name=Ceph packages for $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [Ceph-noarch] name=Ceph noarch packages # 官方源 #baseurl=http://download.ceph.com/rpm-mimic/el7/noarch # 清華源 baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/ enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
安裝 ceph 與 ceph-deploy 組件
yum update && yum -y install ceph ceph-deploy安裝完成, 如果執(zhí)行 ceph-deploy 出現(xiàn) ImportError: No module named pkg_resources 安裝 python2-pip:yum -y install python2-pip yum install epel-release -y
安裝 NTP 時(shí)間同步工具
yum install ntp ntpdate ntp-doc -y
確保時(shí)區(qū)是正確, 設(shè)置開(kāi)機(jī)啟動(dòng):
systemctl enable ntpd
并將時(shí)間每隔 1 小時(shí)自動(dòng)校準(zhǔn)同步。編輯 vi /etc/rc.d/rc.local 追加:
/usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
配置定時(shí)任務(wù),執(zhí)行 crontab -e 加入:
0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
3.3 免密碼 SSH 登陸
官方建議不用系統(tǒng)內(nèi)置用戶(hù), 創(chuàng)建名為 ceph_user 用戶(hù), 密碼也設(shè)為 ceph_user:
useradd -d /home/ceph_user -m ceph_user passwd ceph_user
設(shè)置 sudo 權(quán)限
echo "ceph_user ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph_user sudo chmod 0440 /etc/sudoers.d/ceph_user
1、2 兩個(gè)步驟依次在三臺(tái)機(jī)器上執(zhí)行。
接下來(lái)在主節(jié)點(diǎn), 繼續(xù)執(zhí)行:
生成密鑰:
切換用戶(hù):su ceph_user
執(zhí)行 ssh-keygen,一直按默認(rèn)提示點(diǎn)擊生成 RSA 密鑰信息。
分發(fā)密鑰至各機(jī)器節(jié)點(diǎn)
ssh-copy-id ceph_user@CENTOS7-1 ssh-copy-id ceph_user@CENTOS7-2 ssh-copy-id ceph_user@CENTOS7-3
修改管理節(jié)點(diǎn)上的~/.ssh/config文件, 簡(jiǎn)化 SSH 遠(yuǎn)程連接時(shí)的輸入信息:
管理節(jié)點(diǎn)是會(huì)有 root 和 ceph_user 多個(gè)用戶(hù), ssh 遠(yuǎn)程連接默認(rèn)會(huì)以當(dāng)前用戶(hù)身份進(jìn)行登陸,
如果我們是 root 身份進(jìn)行遠(yuǎn)程連接, 還是需要輸入密碼, 我們想簡(jiǎn)化, 該怎么處理?
切換 root 身份,
su root
修改~/.ssh/config 文件
Host CENTOS7-1 Hostname CENTOS7-1 User ceph_user Host CENTOS7-2 Hostname CENTOS7-2 User ceph_user Host CENTOS7-3 Hostname CENTOS7-3 User ceph_user
注意修改文件權(quán)限, 不能采用 777 最大權(quán)限:
chmod 600 ~/.ssh/config
進(jìn)行 ssh 遠(yuǎn)程連接時(shí), Host 的主機(jī)名稱(chēng)是區(qū)分大小寫(xiě)的, 所以要注意配置文件的主機(jī)名稱(chēng)。
開(kāi)放端口, 非生產(chǎn)環(huán)境, 可以直接禁用防火墻:
systemctl stop firewalld.service systemctl disable firewalld.service
SELINUX 設(shè)置
SELinux 設(shè)為禁用:
setenforce 0
永久生效:編輯 vi /etc/selinux/config 修改:
SELINUX=disabled
3.4 集群搭建配置
采用 root 身份進(jìn)行安裝
在管理節(jié)點(diǎn)創(chuàng)建集群配置目錄,cd /usr/local:
mkdir ceph-cluster cd ceph-cluster
注意:此目錄作為 ceph 操作命令的基準(zhǔn)目錄, 會(huì)存儲(chǔ)處理配置信息。
創(chuàng)建集群, 包含三臺(tái)機(jī)器節(jié)點(diǎn):
ceph-deploy new CENTOS7-1 CENTOS7-2 CENTOS7-3
創(chuàng)建成功后, 會(huì)生一個(gè)配置文件。
如果接下來(lái)集群的安裝配置出現(xiàn)問(wèn)題, 可以執(zhí)行以下命令清除, 再重新安裝:
ceph-deploy purge CENTOS7-1 CENTOS7-2 CENTOS7-3 ceph-deploy purgedata CENTOS7-1 CENTOS7-2 CENTOS7-3 ceph-deploy forgetkeys
將三臺(tái)節(jié)點(diǎn)的 mon 信息也刪除
rm -rf /var/run/ceph/
修改配置文件, 有些配置后面需用到:
vi /usr/local/ceph-cluster/ceph.conf
加入:
[global] # 公網(wǎng)網(wǎng)絡(luò) public network = 192.168.116.0/24 # 設(shè)置pool池默認(rèn)分配數(shù)量 默認(rèn)副本數(shù)為3 osd pool default size = 2 # 容忍更多的時(shí)鐘誤差 mon clock drift allowed = 2 mon clock drift warn backoff = 30 # 允許刪除pool mon_allow_pool_delete = true [mgr] # 開(kāi)啟WEB儀表盤(pán) mgr modules = dashboard
第一項(xiàng)為副本數(shù), 設(shè)為 2 份。
第二項(xiàng)為對(duì)外 IP 訪(fǎng)問(wèn)網(wǎng)段,注意根據(jù)實(shí)際 IP 修改網(wǎng)段。
第三、四項(xiàng)為允許一定時(shí)間的漂移誤差。
執(zhí)行安裝:
ceph-deploy install CENTOS7-1 CENTOS7-2 CENTOS7-3
如果出現(xiàn)錯(cuò)誤:
ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph --version
可以在各節(jié)點(diǎn)上單獨(dú)進(jìn)行安裝:
yum -y install ceph
如果沒(méi)有倉(cāng)庫(kù)文件 ceph.repo, 按上面的步驟手工創(chuàng)建。
初始 monitor 信息:
ceph-deploy mon create-initial ## ceph-deploy --overwrite-conf mon create-initial
執(zhí)行完成后, 會(huì)生成以下文件:
同步管理信息:
下發(fā)配置文件和管理信息至各節(jié)點(diǎn):
ceph-deploy admin CENTOS7-1 CENTOS7-2 CENTOS7-3
安裝 mgr (管理守護(hù)進(jìn)程), 大于 12.x 版本需安裝, 我們裝的是最新版,需執(zhí)行:
ceph-deploy mgr create CENTOS7-1 CENTOS7-2 CENTOS7-3
安裝 OSD (對(duì)象存儲(chǔ)設(shè)備)
注意:新版本的 OSD 沒(méi)有 prepare 與 activate 命令。
這里需要新的硬盤(pán)作為 OSD 存儲(chǔ)設(shè)備, 關(guān)閉虛擬機(jī), 增加一塊硬盤(pán), 不用格式化。
重啟, fdisk -l 查看新磁盤(pán)名稱(chēng):
執(zhí)行創(chuàng)建 OSD 命令:
ceph-deploy osd create --data /dev/sdb CENTOS7-2
三臺(tái)節(jié)點(diǎn)都需分別依次執(zhí)行。
ceph-deploy gatherkeys CENTOS7-1
驗(yàn)證節(jié)點(diǎn):
輸入 ceph health 或 ceph -s 查看, 出現(xiàn) HEALTH_OK 代表正常。
通過(guò)虛擬機(jī)啟動(dòng),如果出現(xiàn)錯(cuò)誤:
[root@CENTOS7-1 ~]# ceph -s cluster: id: 0ec99aa9-e97e-43d3-b5b9-90eb21c4abff health: HEALTH_WARN 1 filesystem is degraded 1 osds down 1 host (1 osds) down Reduced data availability: 41 pgs inactive Degraded data redundancy: 134/268 objects degraded (50.000%), 22 pgs degraded, 87 pgs undersized 39 slow ops, oldest one blocked for 2286 sec, daemons [osd.0,mon.CENTOS7-2,mon.CENTOS7-3] have slow ops. clock skew detected on mon.CENTOS7-2, mon.CENTOS7-3 services: mon: 3 daemons, quorum CENTOS7-1,CENTOS7-2,CENTOS7-3 mgr: centos7-1(active), standbys: centos7-3, centos7-2 mds: fs_test-1/1/1 up {0=centos7-1=up:replay} osd: 3 osds: 1 up, 2 in data: pools: 9 pools, 128 pgs objects: 134 objects, 64 KiB usage: 1.0 GiB used, 19 GiB / 20 GiB avail pgs: 32.031% pgs unknown 134/268 objects degraded (50.000%) 65 active+undersized 41 unknown 22 active+undersized+degraded
在各節(jié)點(diǎn)執(zhí)行命令,確保時(shí)間同步一致:
ntpdate ntp1.aliyun.com
3.5 安裝管理后臺(tái)
開(kāi)啟 dashboard 模塊
ceph mgr module enable dashboard
生成簽名
ceph dashboard create-self-signed-cert
創(chuàng)建目錄
mkdir mgr-dashboard
[root@CENTOS7-1 mgr-dashboard]# pwd /usr/local/ceph-cluster/mgr-dashboard
生成密鑰對(duì)
cd /usr/local/ceph-cluster/mgr-dashboard
openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
[root@CENTOS7-1 mgr-dashboard]# ll total 8 -rw-rw-r-- 1 ceph_user ceph_user 1155 Jul 14 02:26 dashboard.crt -rw-rw-r-- 1 ceph_user ceph_user 1704 Jul 14 02:26 dashboard.key
啟動(dòng) dashboard
ceph mgr module disable dashboard ceph mgr module enable dashboard
設(shè)置 IP 與 PORT
ceph config set mgr mgr/dashboard/server_addr 192.168.116.141 ceph config set mgr mgr/dashboard/server_port 18843
關(guān)閉 HTTPS
ceph config set mgr mgr/dashboard/ssl false
查看服務(wù)信息
[root@CENTOS7-1 ceph-cluster]# ceph mgr services { "dashboard": "http://192.168.116.142:18843/" }
設(shè)置管理用戶(hù)與密碼
ceph dashboard set-login-credentials admin admin
訪(fǎng)問(wèn)
3.6 創(chuàng)建 Cephfs
集群創(chuàng)建完后, 默認(rèn)沒(méi)有文件系統(tǒng), 我們創(chuàng)建一個(gè) Cephfs 可以支持對(duì)外訪(fǎng)問(wèn)的文件系統(tǒng)。
ceph-deploy --overwrite-conf mds create CENTOS7-1 CENTOS7-2 CENTOS7-3
創(chuàng)建兩個(gè)存儲(chǔ)池,執(zhí)行兩條命令:
ceph osd pool create cephfs_data 128 ceph osd pool create cephfs_metadata 64
少于 5 個(gè) OSD 可把 pg_num 設(shè)置為 128
OSD 數(shù)量在 5 到 10,可以設(shè)置 pg_num 為 512
OSD 數(shù)量在 10 到 50,可以設(shè)置 pg_num 為 4096
OSD 數(shù)量大于 50,需要計(jì)算 pg_num 的值
通過(guò)下面命令可以列出當(dāng)前創(chuàng)建的存儲(chǔ)池:
ceph osd lspools
創(chuàng)建 fs, 名稱(chēng)為 fs_test:
ceph fs new fs_test cephfs_metadata cephfs_data
狀態(tài)查看, 以下信息代表正常:
[root@CENTOS7-1 mgr-dashboard]# ceph fs ls name: fs_test, metadata pool: cephfs_metadata, data pools: [cephfs_data ] [root@CENTOS7-1 mgr-dashboard]# ceph mds stat fs_test-1/1/1 up {0=centos7-1=up:active}
附:如果創(chuàng)建錯(cuò)誤, 需要?jiǎng)h除, 執(zhí)行:
ceph fs rm fs_test --yes-i-really-mean-it ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
確保在 ceph.conf 中開(kāi)啟以下配置:
[mon] mon allow pool delete = true
采用 fuse 掛載
先確定 ceph-fuse 命令能執(zhí)行, 如果沒(méi)有, 則安裝:
yum -y install ceph-fuse
創(chuàng)建掛載目錄
mkdir -p /usr/local/cephfs_directory
掛載 cephfs
[root@node3 ~]# ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.116.141:6789 /usr/local/cephfs_directory ceph-fuse[6687]: starting ceph client 2019-07-14 2109.644181 7fa5be56e040 -1 init, newargv = 0x7fa5c940b500 newargc=9 ceph-fuse[6687]: starting fuse
查看磁盤(pán)掛載信息
[root@CENTOS7-1 mgr-dashboard]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 38G 3.0G 35G 8% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 20M 1.9G 2% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 197M 167M 31M 85% /boot tmpfs 378M 0 378M 0% /run/user/0 tmpfs 1.9G 24K 1.9G 1% /var/lib/ceph/osd/ceph-0 ceph-fuse 27G 0 27G 0% /usr/local/cephfs_directory tmpfs 378M 0 378M 0% /run/user/1000
/usr/local/cephfs_directory 目錄已成功掛載。
3.7 客戶(hù)端連接驗(yàn)證 (Rados Java)
安裝好 JDK、GIT 和 MAVEN。
下載 rados java 客戶(hù)端源碼
git clone https://github.com/ceph/rados-java.git
下載目錄位置:
[root@CENTOS7-1 rados-java]# pwd /usr/local/sources/rados-java
執(zhí)行 MAVEN 安裝,忽略測(cè)試用例:
[root@CENTOS7-1 rados-java]# mvn install -Dmaven.test.skip=true
生成 jar 包, rados-0.7.0.jar
[root@CENTOS7-1 target]# ll 總用量 104 drwxr-xr-x 3 root root 17 8月 11 18:32 classes drwxr-xr-x 2 root root 27 8月 11 18:32 dependencies drwxr-xr-x 3 root root 25 8月 11 18:32 generated-sources drwxr-xr-x 2 root root 28 8月 11 18:32 maven-archiver drwxr-xr-x 3 root root 35 8月 11 18:32 maven-status -rw-r--r-- 1 root root 105701 8月 11 18:32 rados-0.7.0.jar
創(chuàng)建軟鏈接, 加入 CLASSPATH
ln -s /usr/local/sources/rados-java/target/rados-0.7.0.jar /opt/jdk1.8.0_301/jre/lib/ext/rados-0.7.0.jar
安裝 jna
yum -y install jna
創(chuàng)建軟鏈接
ln -s /usr/share/java/jna.jar /opt/jdk1.8.0_301/jre/lib/ext/jna.jar
查看
[root@CENTOS7-1 target]# ll /opt/jdk1.8.0_301/jre/lib/ext/jna.jar lrwxrwxrwx 1 root root 23 8月 11 19:00 /opt/jdk1.8.0_301/jre/lib/ext/jna.jar -> /usr/share/java/jna.jar
[root@CENTOS7-1 target]# ll /opt/jdk1.8.0_301/jre/lib/ext/jna.jar lrwxrwxrwx 1 root root 23 8月 11 19:00 /opt/jdk1.8.0_301/jre/lib/ext/jna.jar -> /usr/share/java/jna.jar
創(chuàng)建 JAVA 測(cè)試類(lèi)
CephClient 類(lèi),注意, 最新版 0.6 的異常處理包位置已發(fā)生變化。
import com.ceph.rados.Rados; import com.ceph.rados.exceptions.*; import java.io.File; public class CephClient { public static void main (String args[]){ try { Rados cluster = new Rados("admin"); System.out.println("Created cluster handle."); File f = new File("/etc/ceph/ceph.conf"); cluster.confReadFile(f); System.out.println("Read the configuration file."); cluster.connect(); System.out.println("Connected to the cluster."); } catch (RadosException e) { System.out.println(e.getMessage() + ": " + e.getReturnValue()); } } }
運(yùn)行驗(yàn)證
需要在 linux 環(huán)境下運(yùn)行,且要在 client 節(jié)點(diǎn)。
編譯并運(yùn)行:
[root@CENTOS7-1 sources]# javac CephClient.java [root@CENTOS7-1 sources]# java CephClient Created cluster handle. Read the configuration file. Connected to the cluster.
成功與 ceph 建立連接。
注意:如果 java 和 javac 版本不同,可以使用 rpm -qa |grep java 進(jìn)行查找, rpm -e --nodeps jdk 進(jìn)行刪除,source /etc/profile 進(jìn)行生效
jdk 的位數(shù)為 64 位
作者 |博學(xué)谷狂野架構(gòu)師
審核編輯:湯梓紅
-
存儲(chǔ)系統(tǒng)
+關(guān)注
關(guān)注
2文章
422瀏覽量
41234 -
分布式存儲(chǔ)
+關(guān)注
關(guān)注
4文章
178瀏覽量
19779 -
Ceph
+關(guān)注
關(guān)注
1文章
23瀏覽量
9510
原文標(biāo)題:一文參透分布式存儲(chǔ)系統(tǒng)Ceph的架構(gòu)設(shè)計(jì)、集群搭建
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

分布式存儲(chǔ)架構(gòu):第三節(jié) 分布式文件模型?#分布式架構(gòu)??#分布式存儲(chǔ)系統(tǒng)?#分布式系統(tǒng)?#硬聲創(chuàng)作季
Ceph是什么?Ceph的統(tǒng)一存儲(chǔ)方案簡(jiǎn)析
還在用Ceph嗎?不如試試性能更好的碧海存儲(chǔ)
盤(pán)點(diǎn)分布式存儲(chǔ)系統(tǒng)的主流框架
分布式文件存儲(chǔ)系統(tǒng)GFS的基礎(chǔ)知識(shí)

常見(jiàn)的分布式存儲(chǔ)系統(tǒng)有哪些類(lèi)型
常見(jiàn)的分布式文件存儲(chǔ)系統(tǒng)的優(yōu)缺點(diǎn)

云存儲(chǔ)中的Ceph分布式文件系統(tǒng)及節(jié)點(diǎn)選擇

一種可行的分布式存儲(chǔ)系統(tǒng)安全構(gòu)造方法

Ceph分布式存儲(chǔ)系統(tǒng)性能優(yōu)化研究綜述

一個(gè)去中心化的分布式存儲(chǔ)系統(tǒng)Ceph概述
Ceph分布式存儲(chǔ)簡(jiǎn)介&Ceph數(shù)據(jù)恢復(fù)流程
基于分布式存儲(chǔ)系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲(chǔ)解決方案

WDS分布式存儲(chǔ)系統(tǒng)軟件助力電信工程海量數(shù)據(jù)存儲(chǔ)項(xiàng)目

評(píng)論