Ceph概述
[toc]
分布式文件系統(tǒng)
- 分布式文件系統(tǒng)( Distributed File Syste ) 是指文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上,而是通過計算機網(wǎng)絡(luò)與節(jié)點相連
- 分布式文件系統(tǒng)的設(shè)計基于客戶機/服務器模式
常用分布式文件系統(tǒng)
- Lustre
- Hadoop
- FastDFS
- Ceph
- GlusterFS
什么是 Ceph
- Ceph 是一個分布式文件系統(tǒng)
- 具有 高擴展 高可用 高性能 的特點
- Ceph 可以提供 塊存儲 文件系統(tǒng)存儲 對象存儲
- Ceph 可以提供 PB 級別的存儲空間
- 軟件定義存儲作為存儲行業(yè)的一大發(fā)展趨勢,已經(jīng)越來越受到市場的認可.
Ceph 組件

OSDs
存儲設(shè)備,真正存儲數(shù)據(jù)的組件.一般來說,每塊參與存儲的磁盤都需要一個 OSD 進程
Ceph OSD 守護進程( Ceph OSD )的功能是存儲數(shù)據(jù),處理數(shù)據(jù)的復制、恢復、回填、再均衡,并通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息。當 Ceph 存儲集群設(shè)定為有2個副本時,至少需要2個 OSD 守護進程,集群才能達到 active+clean 狀態(tài)( Ceph 默認有3個副本,但你可以調(diào)整副本數(shù))。
Monitor
集群監(jiān)控組件,因為保存集群狀態(tài),要放置單點故障所以需要多臺.另外,MON 需要是奇數(shù),如果出現(xiàn)意見分歧,采用投票機制,少數(shù)服從多數(shù)
Ceph Monitor維護著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存著發(fā)生在Monitors 、 OSD 和 PG上的每一次狀態(tài)變更的歷史信息(稱為 epoch )。
MDS
文件系統(tǒng)元數(shù)據(jù),只有 CephFS 需要它.元數(shù)據(jù): metadata,存儲數(shù)據(jù)的各種信息,例如權(quán)限路徑位置.
Ceph 元數(shù)據(jù)服務器( MDS )為 Ceph 文件系統(tǒng)存儲元數(shù)據(jù)(也就是說,Ceph 塊設(shè)備和 Ceph 對象存儲不使用MDS )。元數(shù)據(jù)服務器使得 POSIX 文件系統(tǒng)的用戶們,可以在不對 Ceph 存儲集群造成負擔的前提下,執(zhí)行諸如 ls、find 等基本命令。
RADOS
可靠自主分布式對象存儲.它是 ceph 存儲的基礎(chǔ),保證一切都以對象形式存儲.
RBD
RADOS block device 塊設(shè)備,提供塊存儲
CephFS
提供文件提醒級別存儲
RGW
RADOS 網(wǎng)關(guān),提供對象存儲
準備階段
拓撲圖配置

| 主機 | 主機名 | 角色 |
|---|---|---|
| test7 | admin-node | ceph-deploy |
| test8 | node1 | mon.node1 osd.0 |
| test9 | node2 | osd.1 |
| test10 | node3 | osd.2 |
基礎(chǔ)環(huán)境
| 名稱 | 版本 |
|---|---|
| Linux OS | CentOS Linux release 7.6.1810 (Core) |
| ceph-deploy | 2.0.1 |
| ceph | mimic 13.2.4 |
所有節(jié)點準備環(huán)境
配置 hosts
為方便部署,hosts中根據(jù)服務器 配置 test 主機別名
tee > /etc/hosts <<EOF
192.168.1.107 admin-node test7
192.168.1.108 node1 test8
192.168.1.109 node2 test9
192.168.1.110 node3 test10
192.168.1.111 client1 test11
192.168.1.112 client2 test12
EOF
將 hosts 文件同步到集群其他服務器
for i in {8..12};do scp /etc/hosts root@test$i:/etc/;done
根據(jù) hosts 修改對應主機 hostname
hostnamectl set-hostname admin-node
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname client1
hostnamectl set-hostname client2
添加用戶
添加用戶,授權(quán) sudo
useradd -d /home/cephuser -m cephuser
echo "cephuser:123123" | chpasswd
echo "cephuser ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
為集群所有節(jié)點添加用戶,授權(quán) sudo
for i in {7..10}
do
ssh test$i 'useradd -d /home/cephuser -m cephuser && echo "cephuser:123123" | chpasswd && echo "cephuser ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/cephuser && chmod 0440 /etc/sudoers.d/cephuser && hostname'
done
配置 ssh
配置集群內(nèi) server 通過 以上添加的用戶 ( cephuser ) 互相免密登陸.
切換至 cephuser 用戶
su - cephuser
集群內(nèi)所有節(jié)點生成 cephuser 用戶的公鑰
for i in {7..10}
do
ssh cephuser@test$i 'ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa'
done
將所有節(jié)點公鑰 寫入 .ssh/authorized_keys
cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+pG3aeCPBAO8XTasqKKz/P0MhHEyXfjHRZ79MLEraSHOAkxCX6DoOM37tT6eAHADrGNgLOqYdDVxG2K/+VQ0AlqBe4jg1vWMutXr9wWQuBTvbejowfH6u5u7b5duuCuQr6fnW5ClTe0S5Au4X8/iwEtpK3JvCCZSb4os1OWt0fPEj2z+sQAuvsNNGXxcRD0HAevi82p8SqR9vQLtWaY5dKsnDUror9ry3ECwa2nPj2mlgCjV3NkLW1dgsNsOtmKjhvLRh7VWZHy/yaxBh1U1N2/EdIZVomhU+BpSwTbS9Msfbbjvg3oEAon8kEEp45K/Hbv5gJft7mEreVgmRGvy1 cephuser@test7
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzLvy20vvbGe8pG0EbCDgfOIyFWWGjz6JbeFB0/kvNentaMl6QSYXjZvbNAXirfWKFuALlrAaBks7dMTup/3xwUm0yfs5VpolO3OYPI1jPrx1GKbmJZJRMJIn7hOJnM5K2vH/NqZkcgLkcqcqW9xLADf+FZ0bDFfAyZPg+V8ZHDNvvKnPPX6UhNCgzGpxHrGrF3DT8TDmxfU6hGmlWwHRzs8wgZNUKZqt9tp+qXTF8X2HzHbKTsT3j17B1wNrMXiNP5Sgvf+BpdXmI3NVnxQUn1vA5nIrB3VXNSuDe21PfvM9s5Cvpiaoq3tMfiqfIS55GgaHmS9HVoVC3GL+O2WZN cephuser@test8
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdx8igKmEeGNQUafXVMgelumbC3dL0oiYPtu8zjCL/IZBWBMq9+78lQ73x2/tE9DtWJShx2iZ9xDcL+QCNV/fiCnd9PCP6mdUGo9HxoC0Bw2dd1L4cDtYZ6UZ8iOWCrYGf8lAP1Q05eTUMvYd2R9PyJmhIAwxgr9CVG1uwEsi+uDV8QXSTK8z+VCGMpFouDaflZjjOb/tsIHcMQWB5B98MF6wY0/pObwXbm8pZfDUr8hkfbbCYkI7H1qYomk4CsOf4wveUKzppInZEqrv2YYe04am98CuIuWU5s3WQ+MuG9jS1rhdIrzz81k7y6KWJuK4UIl50XP3NbMLLIjWCEUvT cephuser@test9
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9Z3Q0UuQ16Wpu8mrW9TFg4EXXzbkoMiWT8E3gy5VRItcK4VcYHqXAYpxNlt4iaSZLcX+s1QQ2L0A8ohWXOGerGpAu4Ac7XhPSv0R44ihcIP+FTR8X9UWmjYCUJzKCjzCyCK1SOV47cEzfLPRjtLHoKToqAFqW55KU4tZItwJI94HfZ0+dsA6PLk9H3Cnsl0RV9ZV4Zb0C4u5nZ8+71qe2r4FcNg/65Vniezd4NuwIW9/gpdLM3csyu7ukxaXgz7D7CLVJBskgzo25IXKBs2mwLMaHuUSFzs/fECXsY5FvPDzG2LbHvqIoml1jruk0nDMRC4JZN7E+0EZg9K0lvwIn cephuser@test10
此文件權(quán)限必須為 600 用戶用戶組為 cephuser,否則 ssh免密失敗
chown cephuser.cephuser ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ll ~/.ssh/authorized_keys
-rw------- 1 cephuser cephuser 1585 Feb 17 21:24 /home/cephuser/.ssh/authorized_keys
將 授權(quán)密鑰文件 authorized_keys 同步到所有節(jié)點,則所有節(jié)點可以互相免密登陸.
for i in {8..10};do scp .ssh/authorized_keys cephuser@test$i:~/.ssh/;done
驗證免密登陸
for i in {7..10};do ssh test$i "id; hostname"; done
第一次登陸需要手動輸入yes,可同步 known_hosts 文件到所有節(jié)點解決
for i in {8..10};do scp .ssh/known_hosts test$i:~/.ssh/;done
修改deploy主機上的~/.ssh/config文件,此步只需修改deploy節(jié)點
tee ~/.ssh/config <<EOF
#關(guān)鍵詞
Host ceph-deploy
#主機名
Hostname admin-node
User cephuser
Host osd0
Hostname node1
User cephuser
Host osd1
Hostname node2
User cephuser
Host osd2
Hostname nde3
User cephuser
EOF
修改權(quán)限
chmod 644 ~/.ssh/config
YUM配置
rpm-mimic 為對應 ceph 版本,可替換成自己需要的
# 保留文本內(nèi)的 $變量 EOF 前加轉(zhuǎn)義符 或者 EOF添加雙引號 "EOF"
tee /etc/yum.repos.d/ceph.repo <<\EOF
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF
將 yum 倉庫同步到所有節(jié)點
for i in {7..10};do sudo scp /etc/yum.repos.d/ceph.repo test$i:/etc/yum.repos.d/ceph.repo;done
時間同步
ceph集群強依賴時間同步,否則會告警出錯,將所有節(jié)點指向時間同步服務器.推薦chrony內(nèi)網(wǎng)搭建.具體步驟略
存儲集群

重新開始
如果您遇到麻煩并且想要重新開始,請執(zhí)行以下操作以清除Ceph軟件包,并清除其所有數(shù)據(jù)和配置:
# 清除ceph安裝包
ceph-deploy purge {ceph-node} [{ceph-node}]
# 清除ceph安裝數(shù)據(jù)
ceph-deploy purgedata {ceph-node} [{ceph-node}]
# 清除ceph生成kyes
ceph-deploy forgetkeys
rm ceph.*
創(chuàng)建集群
使用 ceph-deploy 創(chuàng)建一個集群,先在deploy節(jié)點,安裝 ceph-deploy
sudo yum install ceph-deploy
創(chuàng)建一個文件夾,用來存放部署生成的各種信息
mkdir my-cluster
cd my-cluster
- 創(chuàng)建集群,指定monitor 節(jié)點
ceph-deploy new node1
檢查ceph-deploywith ls和cat當前目錄中的輸出。您應該看到Ceph配置文件(ceph.conf),監(jiān)視器密鑰密鑰環(huán)(ceph.mon.keyring)和新集群的日志文件
-rw-rw-r-- 1 cephuser cephuser 252 Feb 18 13:50 ceph.conf
-rw-rw-r-- 1 cephuser cephuser 319194 Feb 19 21:48 ceph-deploy-ceph.log
-rw------- 1 cephuser cephuser 73 Feb 18 13:49 ceph.mon.keyring
- 如果有多個網(wǎng)絡(luò)接口,可在Ceph配置文件 的部分下添加該設(shè)置。
tee >>ceph.conf <<EOF
public network = 192.168.1.0/24
EOF
- 如果要在IPv6環(huán)境中部署,請
ceph.conf在本地目錄中添加以下內(nèi)容 :
echo ms bind ipv6 = true >> ceph.conf
- 安裝Ceph包,默認會更新使用官方y(tǒng)um源,但是國內(nèi)會超時.使用 --no-adjust-repo 參數(shù)不調(diào)整源
ceph-deploy install --no-adjust-repos node{1..3}
- 初始化監(jiān)控服務并手機密鑰
ceph-deploy mon create-initial
完成此過程后,您的本地目錄應具有以下密鑰環(huán)
ceph.client.admin.keyringceph.bootstrap-mgr.keyringceph.bootstrap-osd.keyringceph.bootstrap-mds.keyringceph.bootstrap-rgw.keyringceph.bootstrap-rbd.keyringceph.bootstrap-rbd-mirror.keyring
注意: 如果此過程失敗并顯示類似于“無法找到/etc/ceph/ceph.client.admin.keyring”的消息,請確保ceph.conf中為監(jiān)控節(jié)點列出的IP是公共IP,而不是私有IP 。
- 使用
ceph-deploy復制配置文件和管理密鑰到您的管理節(jié)點和你的Ceph的節(jié)點,以便您可以使用cephCLI,而無需指定監(jiān)視地址和ceph.client.admin.keyring每次執(zhí)行命令
ceph-deploy admin node{1..3}
? 修改所有節(jié)點key文件權(quán)限,否則無法正確識別
for i in {8..10};do ssh test$i 'sudo chmod a+r /etc/ceph/ceph.client.admin.keyring';done
- 部署管理器守護程序。( 僅適用于 luminious + 版本 >= 12.x)
ceph-deploy mgr create node1
- 添加三個OSD。每個節(jié)點中已有一個未使用的磁盤
/dev/sdb。
ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3
注意: 如果要在LVM卷上創(chuàng)建OSD,則參數(shù)
--data必須是volume_group/lv_name,而不是卷的塊設(shè)備的路徑。
- 檢查群集的運行狀況。
ssh node1 sudo ceph health
您的群集應該報告HEALTH_OK。您可以使用以下命令查看更完整的群集狀態(tài):
ssh node1 sudo ceph -s
擴展集群
啟動并運行基本群集后,下一步是展開群集。添加Ceph元數(shù)據(jù)服務器node1。然后添加Ceph Monitor和Ceph Manager node2,node3以提高可靠性和可用性。

添加元數(shù)據(jù)服務器
要使用CephFS,您至少需要一個元數(shù)據(jù)服務器。執(zhí)行以下操作以創(chuàng)建元數(shù)據(jù)服務器:
ceph-deploy mds create node1
添加監(jiān)視器
Ceph存儲集群需要至少運行一個Ceph Monitor和Ceph Manager。為了實現(xiàn)高可用性,Ceph存儲集群通常運行多個Ceph監(jiān)視器,因此單個Ceph監(jiān)視器的故障不會導致Ceph存儲集群崩潰。Ceph使用Paxos算法,該算法需要大多數(shù)監(jiān)視器(即大于N / 2,其中N是監(jiān)視器的數(shù)量)才能形成法定數(shù)量。雖然這不是必需的,但監(jiān)視器的數(shù)量往往更好。
將兩個Ceph監(jiān)視器添加到您的群集:
# 官方文檔顯示可以一次添加多個節(jié)點 ceph-deploy mon add node2 node3,這里測試需要分開添加,寫多個時會提示第二個節(jié)點參數(shù)報錯
ceph-deploy mon add node2
ceph-deploy mon add node3
一旦你添加了新的Ceph監(jiān)視器,Ceph將開始同步監(jiān)視器并形成一個法定人數(shù)。您可以通過執(zhí)行以下操作來檢查仲裁狀態(tài):
ceph quorum_status --format json-pretty
添加管理進程
Ceph Manager守護進程以活動/備用模式運行。部署其他管理器守護程序可確保在一個守護程序或主機發(fā)生故障時,另一個守護程序或主機可以在不中斷服務的情況下接管。
要部署其他管理器守護程序
ceph-deploy mgr create node2 node3
您應該在以下輸出中看到備用管理器:
ssh node1 sudo ceph -s
添加RGW實例
要使用Ceph的Ceph對象網(wǎng)關(guān)組件,必須部署RGW實例。執(zhí)行以下命令以創(chuàng)建RGW的新實例:
ceph-deploy rgw create node1
默認情況下,RGW實例將偵聽端口7480.可以通過在運行RGW的節(jié)點上編輯ceph.conf來更改此設(shè)置,如下所示:
# IPv4
[client]
rgw frontends = civetweb port=80
# IPv6
[client]
rgw frontends = civetweb port=[::]:80
修改配置后重啟生效
systemctl restart ceph-radosgw.target
netstat -nltp|grep radosgw
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6269/radosgw
訪問 radowgw 網(wǎng)關(guān)節(jié)點,對應端口得到以下返回說明已經(jīng)完成.

存儲/檢索對象數(shù)據(jù)
要將對象數(shù)據(jù)存儲在Ceph存儲集群中,Ceph客戶端必須:
- 設(shè)置對象名稱
- 指定一個池
Ceph客戶端檢索最新的集群映射,CRUSH算法計算如何將對象映射到放置組,然后計算如何動態(tài)地將放置組分配給Ceph OSD守護進程。要查找對象位置,您只需要對象名稱和池名稱。例如:
ceph osd map {poolname} {object-name}
練習:找到一個對象
作為練習,讓我們創(chuàng)建一個對象。使用命令行上的命令指定對象名稱,包含某些對象數(shù)據(jù)的測試文件的路徑和池名稱 。例如:rados put
echo "hello" > 1.txt
#創(chuàng)建池 mytest
ceph osd pool create mytest 8
rados put {object-name} {file-path} --pool=mytest
#存儲文件 testfile.txt 指定對象 test-object-1 池 mytest
rados put test-object-1 1.txt --pool=mytest
要驗證Ceph存儲集群是否存儲了該對象,請執(zhí)行以下命令:
rados -p mytest ls
現(xiàn)在,確定對象位置:
ceph osd map {pool-name} {object-name}
ceph osd map mytest test-object-1
Ceph應該輸出對象的位置。例如:
osdmap e58 pool 'mytest' (6) object 'test-object-1' -> pg 6.74dc35e2 (6.2) -> up ([1,0,2], p1) acting ([1,0,2], p1)
要刪除測試對象,只需使用該 命令將其刪除即可。rados rm
rados rm test-object-1 --pool=mytest
要刪除mytest池,則需要先添加配置允許監(jiān)控刪除池,然后重啟mon進程
echo "mon_allow_pool_delete = true" >> /etc/ceph/ceph.conf
systemctl restart ceph-mon.target
刪除時,需要輸入兩遍池名稱和--yes-i-really-really-mean-it參數(shù)
ceph osd pool rm mytest mytest --yes-i-really-really-mean-it
隨著集群的發(fā)展,對象位置可能會動態(tài)變化。Ceph動態(tài)重新平衡的一個好處是Ceph使您不必手動執(zhí)行數(shù)據(jù)遷移或平衡。
塊存儲

可以為ceph-client節(jié)點使用虛擬機,但不要在與Ceph存儲群集節(jié)點相同的物理節(jié)點上執(zhí)行以下過程
| 主機 | 主機名 | 角色 |
|---|---|---|
| test11 | client1 | clientt ( RBD ) |
| test12 | client2 | clien2 ( CephFS ) |
安裝 CEPH
需要提前在admin節(jié)點的hosts文件中寫入此客戶端,在客戶端上配置cephuser用戶,時間同步,admin對此服務器的免密登陸,ceph 的yum源.
- 在admin節(jié)點上,用于
ceph-deploy在ceph-client節(jié)點上安裝Ceph.
ceph-deploy install client1
- 在管理節(jié)點上,使用
ceph-deploy復制Ceph的配置文件和ceph.client.admin.keyring到ceph-client。
ceph-deploy admin client1
- 該
ceph-deploy實用程序?qū)⒚荑€環(huán)復制到/etc/ceph目錄。確保密鑰環(huán)文件具有適當?shù)淖x取權(quán)限
chmod a+r /etc/ceph/ceph.client.admin.keyring
創(chuàng)建塊設(shè)備
- 在管理節(jié)點上,使用該
ceph工具創(chuàng)建池 (建議使用名稱'rbd')
ceph osd pool create rbd 0
ceph osd lspools
1 .rgw.root
2 default.rgw.control
3 default.rgw.meta
4 default.rgw.log
7 cephfs_data
8 cephfs_metadata
9 rbd
- 在管理節(jié)點上,使用該
rbd工具初始化池以供RBD使用:
rbd pool init rbd
配置塊設(shè)備
- 在
ceph-client節(jié)點上,創(chuàng)建塊設(shè)備映像。foo 為 imagename 即映像名.
rbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
? 例如
rbd create foo --size 4096 --image-feature layering -m 192.168.1.108 -k /etc/ceph/ceph.client.admin.keyring -p rbd
- 在
ceph-client節(jié)點上,將圖像映射到塊設(shè)備
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
? 例如
rbd map foo --name client.admin -m 192.168.1.108 -k /etc/ceph/ceph.client.admin.keyring -p rbd
? 得到結(jié)果 /dev/rbd1
- 通過在
ceph-client節(jié)點上創(chuàng)建文件系統(tǒng)來使用塊設(shè)備。
sudo mkfs.ext4 -m0 /dev/rbd/{pool-name}/foo
- 在
ceph-client節(jié)點上掛載文件系統(tǒng)。
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/{pool-name}/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device
- (可選)將塊設(shè)備配置為自動映射并在引導時掛載(并在關(guān)閉時卸載/取消映射) - 請參閱rbdmap聯(lián)機幫助頁。
示例
編輯 /etc/ceph/rbdmap 文件,rbd map POOLNAME/IMAGENAME --PARAM1 VAL1 --PARAM2 VAL2
POOLNAME為 rbd, IMAGENAME為 foo
rbd/foo id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
文件中的每一行都包含兩個字符串,這兩行轉(zhuǎn)換為以下命令:rbdmap
rbd map rbd/foo --id admin --keyring /etc/ceph/ceph.client.admin.keyring
rbd unmap rbd/foo --id admin --keyring /etc/ceph/ceph.client.admin.keyring
如果是XFS文件系統(tǒng),則相應的/etc/fstab 條目可能如下所示:
/dev/rbd/rbd/foo /mnt/ceph-block-device xfs noauto 0 0
創(chuàng)建映像并填充/etc/ceph/rbdmap文件后,使映像自動映射并在啟動時掛載只需啟用該單元:
systemctl enable rbdmap.service
文件存儲
先決條件
-
驗證您是否具有適當版本的Linux內(nèi)核。有關(guān)詳細信息,請參閱OS建議
lsb_release -a uname -r -
在admin節(jié)點上,用于
ceph-deploy在ceph-client節(jié)點上安裝Ceph 。ceph-deploy install ceph-client -
確保Ceph存儲群集正在運行且處于某種 狀態(tài)。此外,請確保至少運行一個Ceph元數(shù)據(jù)服務器。
active + cleanceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]
創(chuàng)建文件系統(tǒng)
您已經(jīng)創(chuàng)建了MDS(存儲群集快速入門),但在創(chuàng)建某些池和文件系統(tǒng)之前它不會變?yōu)榛顒訝顟B(tài)。請參閱創(chuàng)建Ceph文件系統(tǒng)。
Ceph文件系統(tǒng)至少需要兩個RADOS池,一個用于數(shù)據(jù),一個用于元數(shù)據(jù)。配置這些池時,您可能會考慮:
- 對元數(shù)據(jù)池使用更高的復制級別,因為此池中的任何數(shù)據(jù)丟失都可能導致整個文件系統(tǒng)無法訪問。
- 使用較低延遲的存儲(如SSD)作為元數(shù)據(jù)池,因為這將直接影響客戶端上文件系統(tǒng)操作的觀察延遲。
請參閱池以了解有關(guān)管理池的更多信息。例如,要創(chuàng)建兩個具有默認設(shè)置以用于文件系統(tǒng)的池,您可以運行以下命令:
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
ceph fs new <fs_name> cephfs_metadata cephfs_data
例如
ceph osd pool create cephfs_data 9
pool 'cephfs_data' created
ceph osd pool create cephfs_metadata 10
pool 'cephfs_metadata' created
ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 8 and data pool 7
創(chuàng)建加密文件
Ceph存儲集群在默認情況下啟用身份驗證的情況下運行。您應該有一個包含密鑰的文件(即,不是密鑰環(huán)本身)。要獲取特定用戶的密鑰,請執(zhí)行以下過程:
-
在密鑰環(huán)文件中標識用戶的密鑰。例如:
cat ceph.client.admin.keyring -
復制將使用已安裝的CephFS文件系統(tǒng)的用戶的密鑰。它應該看起來像這樣:
[client.admin] key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 打開文本編輯器。
-
將密鑰粘貼到空文件中。它應該看起來像這樣:
AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w== 使用用戶
name作為屬性保存文件(例如,admin.secret)。確保文件權(quán)限適合用戶,但對其他用戶不可見。
內(nèi)核驅(qū)動程序
將CephFS掛載為內(nèi)核驅(qū)動程序。
sudo mkdir /mnt/mycephfs
sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs
Ceph存儲集群默認使用身份驗證。指定用戶name 和secretfile您在“ 創(chuàng)建加密文件”部分中創(chuàng)建的用戶。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
注意: 在管理節(jié)點上安裝CephFS文件系統(tǒng),而不是服務器節(jié)點。
例如
sudo mount -t ceph 192.168.1.108:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
用戶空間文件系統(tǒng)(FUSE)
將CephFS掛載為用戶空間(FUSE)中的文件系統(tǒng)。
yum install ceph-fuse -y
sudo mkdir ~/mycephfs
sudo ceph-fuse -m {ip-address-of-monitor}:6789 ~/mycephfs
Ceph存儲集群默認使用身份驗證。如果密鑰環(huán)不在默認位置(即),請指定密鑰環(huán)/etc/ceph:
sudo ceph-fuse -k ./ceph.client.admin.keyring -m 5
例如
yum install ceph-fuse
sudo mkdir /mnt/mycephfs
ceph-fuse -m 192.168.1.108:6789 /mnt/mycephfs/
附加信息
有關(guān)其他信息,請參閱CephFS。CephFS不如Ceph Block Device和Ceph Object Storage穩(wěn)定。 如果遇到問題,請參閱故障排除
對象存儲
安裝CEPH對象網(wǎng)關(guān)
執(zhí)行您的預安裝步驟
client-node。如果你打算使用Civetweb的默認端口7480,則必須使用開它firewall-cmd或iptables。有關(guān)更多信息,請參閱操作前檢查清單。-
從管理服務器的工作目錄中,在
client-node節(jié)點上安裝Ceph對象網(wǎng)關(guān)包。例如:ceph-deploy install --rgw <client-node> [<client-node> ...]
創(chuàng)建CEPH對象網(wǎng)關(guān)實例
從管理服務器的工作目錄中,在上創(chuàng)建Ceph對象網(wǎng)關(guān)的實例client-node。例如:
ceph-deploy rgw create <client-node>
網(wǎng)關(guān)運行后,您應該能夠在端口上訪問它7480。(例如,http://client-node:7480)。
配置CEPH對象網(wǎng)關(guān)實例
-
要更改默認端口(例如,更改為端口
80),請修改Ceph配置文件。[client.rgw.client-node] rgw_frontends = "civetweb port=80"注意: 確保
port=<port-number>在rgw_frontends鍵/值對之間不留空格。
-
要使新端口設(shè)置生效,請重新啟動Ceph對象網(wǎng)關(guān)。在Red Hat Enterprise Linux 7和Fedora上,運行以下命令:
sudo systemctl restart ceph-radosgw.service
-
應該能夠進行未經(jīng)身份驗證的請求,并收到回復
http://<client-node>:80應該得到這樣的回應:
<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>anonymous</ID> <DisplayName></DisplayName> </Owner> <Buckets> </Buckets> </ListAllMyBucketsResult>有關(guān)其他管理和API詳細信息,請參閱配置Ceph對象網(wǎng)關(guān)指南。