1. 程式人生 > 其它 >基於Ubuntu 18.04.5 LTS 部署Ceph叢集測試及Ceph RDB的使用。

基於Ubuntu 18.04.5 LTS 部署Ceph叢集測試及Ceph RDB的使用。

1.ceph簡介

Ceph在一個統一的系統中獨特地提供物件、塊和檔案儲存

1.1 ceph官網架構圖

1.2 架構解釋

CEPH 物件儲存

CEPH 塊裝置

CEPH 檔案系統

  • RESTful 介面

  • S3 和 Swift 相容的 API

  • S3 風格的子域

  • 統一的 S3/Swift 名稱空間

  • 使用者管理

  • 使用跟蹤

  • 條紋物件

  • 雲解決方案整合

  • 多站點部署

  • 多站點複製

  • 精簡配置

  • 影象高達 16 艾位元組

  • 可配置的條帶化

  • 記憶體快取

  • 快照

  • 寫時複製克隆

  • 核心驅動支援

  • KVM/libvirt 支援

  • 雲解決方案的後端

  • 增量備份

  • 災難恢復(多站點非同步複製)

  • 符合 POSIX 的語義

  • 將元資料與資料分離

  • 動態再平衡

  • 子目錄快照

  • 可配置的條帶化

  • 核心驅動支援

  • 保險絲支援

  • NFS/CIFS 可部署

  • 與 Hadoop 一起使用(替換 HDFS)

2.ceph的元件和功能

Ceph 提供了一個基於RADOS 的可無限擴充套件的Ceph 儲存叢集,Ceph 儲存叢集由多種型別的守護程序組成:
  • Monitors:Ceph Monitor
    (ceph-mon) 維護叢集狀態的對映,包括監視器對映、管理器對映、OSD 對映、MDS 對映和 CRUSH 對映。這些對映是 Ceph 守護程序相互協調所需的關鍵叢集狀態。監視器還負責管理守護程序和客戶端之間的身份驗證。通常至少需要三個監視器才能實現冗餘和高可用性。
  • 管理器:Ceph 管理器守護程序 (ceph-mgr) 負責跟蹤執行時指標和 Ceph 叢集的當前狀態,包括儲存利用率、當前效能指標和系統負載。Ceph 管理器守護程序還託管基於 Python 的模組來管理和公開 Ceph 叢集資訊,包括基於 Web 的Ceph 儀表板REST API。高可用性通常至少需要兩個管理器。
  • Ceph OSD:
    Ceph OSD
    (物件儲存守護程序ceph-osd)儲存資料,處理資料複製、恢復、重新平衡,並通過檢查其他 Ceph OSD 守護程序的心跳來向 Ceph 監視器和管理器提供一些監控資訊。通常至少需要 3 個 Ceph OSD 來實現冗餘和高可用性。
  • MDS:Ceph 元資料伺服器(MDS,ceph-mds)代表Ceph 檔案系統儲存元資料(即 Ceph 塊裝置和 Ceph 物件儲存不使用 MDS)。Ceph的元資料伺服器允許POSIX檔案系統的使用者來執行基本的命令(如ls,find沒有放置在一個Ceph儲存叢集的巨大負擔,等等)。

3.ceph的資料讀寫流程

轉發自 關於cephCRUSH演算法的文章 https://zhuanlan.zhihu.com/p/63725901 主要分四層,File->Objects->PGs->OSDs。
  • File: 就是我們想要儲存和訪問的檔案,這個是面向我們使用者的,是我們直觀操作的物件。
  • Object:object就是Ceph底層RADOS所看到的物件,也就是在Ceph中儲存的基本單位。object的大小由RADOS限定(通常為2m或者4m)。就跟HDFS抽象一個數據塊一樣,這裡也是為了方便底層儲存的組織管理。當File過大時,需要將File切分成大小統一的objects進行儲存。
  • PG (Placement Group): PG是一個邏輯的概念,它的用途是對object的儲存進行組織和位置的對映,通過它可以更好的分配資料和定位資料。
  • OSD (Object Storage Device): 它就是真正負責資料存取的服務。
PG和object是一對多的關係,一個PG裡面組織若干個object,但是一個object只能被對映到一個PG中。 PG和OSD是多對多的關係,一個PG會對映到多個OSD上(大於等於2,此處即為副本機制),每個OSD也會承載大量的PG。 通過定址流程圖我們可以看到,Ceph中的定址需要經歷三次對映,分別是File->Object,Object->PG,PG->OSD。我們重點提到的CRUSH就是在第三步對映PG->OSD出現的。我們依次看一下。 File->Object 這一步就是將file切分成多個object。每個object都有唯一的id即oid。這個oid是怎樣產生的呢,就是根據檔名稱得到的。 圖中的ino為檔案唯一id(比如filename+timestamp),ono則為切分後某個object的序號(比如0,1,2,3,4,5等),根據該檔案的大小我們就會得到一系列的oid。 注:將檔案切分為大小一致的object可以被RADOS高效管理,而且可以將對單一file的處理變成並行化處理提高處理效率。 Object -> PG 這裡需要做的工作就是將每個object對映到一個PG中去,實現方式也很簡單就是對oid進行hash然後進行按位與計算得到某一個PG的id。圖中的mask為PG的數量減1。這裡我們認為得到的pgid是隨機的,這與PG的數量和檔案的數量有關係。在足夠量級的程度上資料是均勻分佈的。 PG -> OSD 最後一次對映就是將object所在的PG對映到實際的儲存位置OSD上。這裡應用的就是CRUSH演算法了,通過CRUSH演算法可以通過pgid得到多個osd(跟配置有關)。 crush演算法流程

4.Ceph叢集部署

4.1 伺服器硬體配置及IP規劃

OS:Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-153-generic x86_64) 硬體配置: 4核CPU/8GB記憶體/200G磁碟/2千兆網絡卡 4個osd節點各額外增加5塊100G的磁碟 伺服器列表
hostname public-net cluster-net
ceph-deploy 192.168.2.2 172.1.0.2
mon1 192.168.2.21 172.1.0.21
mon2 192.168.2.22 172.1.0.22
mon3 192.168.2.23 172.1.0.23
mgr1 192.168.2.31 172.1.0.31
mgr2 192.168.2.32 172.1.0.32
osd1 192.168.2.41 172.1.0.41
osd2 192.168.2.42 172.1.0.42
osd3 192.168.2.43 172.1.0.43
osd4 192.168.2.44 172.1.0.44
client1 192.168.2.50 172.1.0.50

4.2 伺服器初始化配置及優化

4.2.1 關閉ssh登入dns域名查詢,加速遠端登入

pssh -i -h /data/host_list/ceph 'sed -i "s/^#UseDNS no/UseDNS no/g" /etc/ssh/sshd_config' pssh -i -h /data/host_list/ceph 'service sshd restart'

4.2.2 關閉防火牆

pssh -i -h /data/host_list/ceph 'ufw disable'

4.2.3 配置定時時間同步

#pssh -i -h /data/host_list/ceph 'echo "*/30 * * * * root /usr/sbin/ntpdate 192.168.1.20 && hwclock -w > /dev/null 2>& 1" >> /var/spool/cron/crontabs/root ' pssh -i -h /data/host_list/ceph ' crontab -l|tail -n 1'

4.2.4 ceph安裝的版本

Pacific 2021-03-31 16.2.5 2023-06-01

4.25 .將Ubuntu的apt-get 源改為清華源

Ubuntu 的軟體源配置檔案是/etc/apt/sources.list。將系統自帶的該檔案做個備份,將該檔案替換為下面內容,即可使用 TUNA 的軟體源映象 # mv /etc/apt/sources.list /etc/apt/sources.list.bak vim /etc/apt/sources.list # 預設註釋了原始碼映象以提高 apt update 速度,如有需要可自行取消註釋 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

4.2. 6 各節點配置ceph yum 倉庫

匯入key 檔案: wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add - 新增清華源ceph源: echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list 執行系統更新 apt-get update

4.2.7 配置hosts,新增各節點hostname

vim /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.1.0.2 ceph-deploy 172.1.0.21 mon1 172.1.0.22 mon2 172.1.0.23 mon3 172.1.0.31 mgr1 172.1.0.32 mgr2 172.1.0.41 osd1 172.1.0.42 osd2 172.1.0.43 osd3 172.1.0.44 osd4 172.1.0.50 client1

4.2.8 Ubuntu 各伺服器需要單獨安裝Python2

# apt install python2.7 -y # ln -sv /usr/bin/python2.7 /usr/bin/python2

4.3 安裝系統常用工具

aptinstalliproute2ntpdatetcpdumptelnettraceroutenfs-kernel-servernfs-commonlrzsztreeopenssllibssl-devlibpcre3libpcre3-devzlib1g-devntpdatetcpdumptelnettraceroutegccopenssh-serverlrzsztreeopenssllibssl-devlibpcre3libpcre3-devzlib1g-devntpdatetcpdumptelnettracerouteiotopunzipzip -y

4.4 建立普通使用者cephuser

4.4.1 建立cephuser普通使用者

groupadd -r -g 2023 cephuser && useradd -r -m -s /bin/bash -u 2023 -g 2023 cephuser && echo cephuser:sa@123.. | chpasswd

4.4.2 各伺服器允許ceph 使用者以sudo 執行特權命

echo "cephuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

4.4.3 配置免祕鑰登入

在ceph-deploy 節點配置允許以非互動的方式登入到各ceph osd/mon/mgr 節點,即在ceph-deploy 節點生成祕鑰對,然後分發公鑰到各被管理節點: ssh-keygen ssh-keygen ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected]

4.5.deploy節點部署

4.5.1 在ceph 部署伺服器(192.168.2.2)安裝部署工具ceph-deploy

root@ceph-deploy:~# apt install ceph-deploy

4.5.2 ceph-deploy 管理ceph 叢集

在ceph-deploy 節點配置一下系統環境,以方便後期可以執行ceph 管理命令。 # apt install ceph-common

4.5.3 推送正證書給自己

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-deploy

4.5.4 證書檔案授權

root@ceph-deploy:/data/ceph-cluste# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring

4.6 配置mon節點

4.6.1 在管理節點ceph-depoly上初始化mon節點

root@ceph-deploy:~# mkdir ceph-cluste -p #儲存當前叢集的初始化配置資訊 root@ceph-deploy:~# cd ceph-cluste/ cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy new --cluster-network 172.1.0.0/24 --public-network 192.168.2.0/24 mon1 mon2 mon3 生成如下檔案: -rw-rw-r-- 1 cephuser cephuser 295 Aug 19 11:23 ceph.conf -rw-rw-r-- 1 cephuser cephuser 11492 Aug 19 11:23 ceph-deploy-ceph.log -rw------- 1 cephuser cephuser 73 Aug 19 11:23 ceph.mon.keyring ceph.conf #自動生成的配置檔案 ceph-deploy-ceph.log #初始化日誌 #用於ceph mon 節點內部通訊認證的祕鑰環檔案

4.6.2 配置mon 節點並生成及同步祕鑰

4.6.2.1 在各mon節點安裝元件ceph-mon,並通過初始化mon 節點,mon 節點ha 還可以後期橫向擴容

apt install ceph-mon

4.6.2.2 在ceph-deploy 初始化mon節點

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy mon create-initial

4.6.2.3 驗證mon 節點

ps -ef |grep mon ceph 20082 1 1 12:00 ? 00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id mon1 --setuser ceph --setgroup ceph

4.7 配置manager 節點

4.7.1 mgr節點安裝ceph-mgr安裝包

apt install ceph-mgr

4.7.2 ceph-deploy節點cephuser賬號執行初始化mgr節點

ceph-deploy mgr create mgr1 mgr2

4.7.3 驗證ceph-mgr 節點

root@mgr1:~# ps -ef |grep mgr ceph 20913 1 40 12:54 ? 00:00:12 /usr/bin/ceph-mgr -f --cluster ceph --id mgr1 --setuser ceph --setgroup ceph

4.8 mon、mgr初始化安裝後集群狀態查詢

測試ceph 命令: root@ceph-deploy:/data/ceph-cluste# su - cephuser cephuser@ceph-deploy:~$ ceph -s
  cluster:
    id:     d623cb9e-74c4-44ec-ba47-a49272ddd76e
    health: HEALTH_WARN
            mons are allowing insecure global_id reclaim
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 3 daemons, quorum mon1,mon2,mon3 (age 59m)
    mgr: mgr1(active, since 5m), standbys: mgr2
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs: 
mon is allowing insecure global_id reclaim #需要禁用非安全模式通訊 OSD count 0 < osd_pool_default_size 3 #叢集的OSD 數量小於3 配置優化 cephuser@ceph-deploy:~$ ceph config set mon auth_allow_insecure_global_id_reclaim false mon is allowing insecure global_id reclaim 警告消失了

4.9 準備OSD 節點

4.9.1 初始化ceph 儲存節點

初始化儲存節點等於在儲存節點安裝了ceph 及ceph-rodsgw 安裝包,但是使用預設的官方倉庫會因為網路原因導致初始化超時,因此各儲存節點推薦修改ceph 倉庫為阿里或者清華等國內的映象源。 修改ceph 映象源,之前步驟已經配置過,此步忽略。 初始化node 節點過程,此過程會在指定的ceph node 節點按照序列的方式逐個伺服器安裝epel 源和ceph 源,並按安裝ceph ceph-radosgw ceph-deploy install --no-adjust-repos --nogpgcheck osd1 osd2 osd3 osd4

4.9.1 分發admin 祕鑰

root@ceph-deploy:/data/ceph-cluste# apt install ceph-common -y root@ceph-deploy:/data/ceph-cluste# su - cephuser cephuser@ceph-deploy:~$ cd ceph-cluster/ cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy admin osd1 osd2 osd3 osd4

4.9.3 ceph 節點(osd)驗證祕鑰

root@osd1:~# ll /etc/ceph/ total 24 drwxr-xr-x 2 root root 87 Aug 19 12:06 ./ drwxr-xr-x 95 root root 8192 Aug 19 11:41 ../ -rw------- 1 root root 151 Aug 19 12:06 ceph.client.admin.keyring -rw-r--r-- 1 root root 295 Aug 19 12:06 ceph.conf -rw-r--r-- 1 root root 92 Jul 8 22:17 rbdmap -rw------- 1 root root 0 Aug 19 12:06 tmpSJF5Yk

4.9.4 認證檔案的屬主和屬組的修改

為了安全考慮,預設設定為了root 使用者和root 組,如果需要ceph使用者也能執行ceph 命令,那麼就需要對ceph 使用者進行授權 root@osd1:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring root@osd2:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring root@osd3:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring root@osd4:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring

4.9.5 擦除磁碟之前通過deploy 節點對node(osd) 節點執行安裝ceph 基本執行環境

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd1 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd2 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd3 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd4

4.9.6 列出ceph node 節點磁碟

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd1 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd2 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd3 cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd4

4.9.7 使用ceph-deploy disk zap 擦除各ceph node 的ceph 資料磁碟

cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd1 /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd2 /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd3 /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd4 /dev/vd$i;done

4.9.8 新增OSD

資料分類儲存方式: Data:即ceph 儲存的物件資料 Block: rocks DB 資料即元資料 block-wal:資料庫的wal 日誌 cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd1 --data /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd2 --data /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd3 --data /dev/vd$i;done cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd4 --data /dev/vd$i;done

4.9.10 驗證osd新增後集群狀態

cephuser@ceph-deploy:~/ceph-cluster$ ceph -s cluster: id: d623cb9e-74c4-44ec-ba47-a49272ddd76e health: HEALTH_OK services: mon: 3 daemons, quorum mon1,mon2,mon3 (age 86m) mgr: mgr1(active, since 32m), standbys: mgr2 osd: 20 osds: 20 up (since 42s), 20 in (since 53s) data: pools: 1 pools, 1 pgs objects: 0 objects, 0 B usage: 152 MiB used, 2.0 TiB / 2.0 TiB avail pgs: 1 active+clean

5. Ceph塊裝置RBD

5.1 RBD簡介

RBD(RADOS Block Devices)即為塊儲存的一種,RBD 通過librbd 庫與OSD 進行互動,RBD為KVM 等虛擬化技術和雲服務(如OpenStack 和CloudStack)提供高效能和無限可擴充套件性的儲存後端,這些系統依賴於libvirt 和QEMU 實用程式與RBD 進行整合,客戶端基於librbd 庫即可將RADOS 儲存叢集用作塊裝置,不過,用於rbd 的儲存池需要事先啟用rbd功能並進行初始化。例如,下面的命令建立一個名為myrbd1 的儲存池,並在啟用rbd 功能後對其進行初始化

5.2 RBD建立

5.2.1 建立RBD

建立儲存池命令格式: $ceph osd pool create <poolname> pg_num pgp_num {replicated|erasure} #建立儲存池,指定pg 和pgp 的數量,pgp 是對存在於pg 的資料進行組合儲存,pgp 通常等於pg 的值 cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool create rbd-test1 64 64 $ ceph osd pool --help cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool application enable rbd-test1 rbd

5.2.2 通過RBD 命令對儲存池初始化

$ rbd -h

rbd pool init -p rbd-test1

5.2.3 建立並驗證img

不過,rbd 儲存池並不能直接用於塊裝置,而是需要事先在其中按需建立映像(image),並把映像檔案作為塊裝置使用,rbd 命令可用於建立、檢視及刪除塊裝置相在的映像(image),以及克隆映像、建立快照、將映像回滾到快照和檢視快照等管理操作,例如,下面的命令能夠建立一個名為img-test1 的映像: cephuser@ceph-deploy:~/ceph-cluster$ rbd create img-test1 --size 5G --pool rbd-test1 cephuser@ceph-deploy:~/ceph-cluster$ rbd create img-test2 --size 3G --pool rbd-test1 --image-format 2 --image-feature layering #後續步驟會使用 img-test2,由於系統核心較低無法掛載使用,因此只開啟部分特性。 除了layering 其他特性需要高版本核心支援 列出img: cephuser@ceph-deploy:~/ceph-cluster$ rbd ls --pool rbd-test1 img-test1 img-test2

5.2.4 檢視指定rdb 的資訊

cephuser@ceph-deploy:~/ceph-cluster$ rbd --image img-test1 --pool rbd-test1 info rbd image 'img-test1': size 5 GiB in 1280 objects order 22 (4 MiB objects) snapshot_count: 0

id: 1295c66bf942

block_name_prefix: rbd_data.1295c66bf942 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

op_features:

flags: create_timestamp: Thu Aug 19 13:42:45 2021

access_timestamp: Thu Aug 19 13:42:45 2021

modify_timestamp: Thu Aug 19 13:42:45 2021

cephuser@ceph-deploy:~/ceph-cluster$ rbd --image img-test2 --pool rbd-test1 info

rbd image 'img-test2':

size 3 GiB in 768 objects

order 22 (4 MiB objects)

snapshot_count: 0 id: 129e31139198 block_name_prefix: rbd_data.129e31139198

format: 2

features: layering op_features: flags:

create_timestamp: Thu Aug 19 13:44:39 2021

access_timestamp: Thu Aug 19 13:44:39 2021

modify_timestamp: Thu Aug 19 13:44:39 2021

5.3 客戶端使用塊儲存

5.3.1 檢視當前ceph 狀態

cephuser@ceph-deploy:~/ceph-cluster$ ceph df --- RAW STORAGE --- CLASS SIZE AVAIL USED RAW USED %RAW USED hdd 2.0 TiB 2.0 TiB 162 MiB 162 MiB 0 TOTAL 2.0 TiB 2.0 TiB 162 MiB 162 MiB 0 --- POOLS --- POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL device_health_metrics 1 1 0 B 0 0 B 0 633 GiB rbd-test1 2 64 405 B 7 48 KiB 0 633 GiB

5.3.2 在客戶端安裝ceph-common

root@client1:~# apt install ceph-common

5.3.3 從ceph-deploy伺服器同步認證檔案

cephuser@ceph-deploy:~/ceph-cluster$ scp ceph.conf ceph.client.admin.keyring [email protected]:/etc/ceph/

5.3.4 客戶端對映img

root@client1:/etc/ceph# rbd -p rbd-test1 map img-test1 rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd-test1/img-test1 object-map fast-diff deep-flatten". In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (6) No such device or address root@client1:/etc/ceph# rbd -p rbd-test1 map img-test2 /dev/rbd0

5.3.5 客戶端驗證RBD

root@client1:/etc/ceph# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom rbd0 251:0 0 3G 0 disk vda 252:0 0 200G 0 disk ├─vda1 252:1 0 4.7G 0 part /boot └─vda2 252:2 0 195.4G 0 part /

5.3.6 客戶端格式化磁碟並掛載使用

root@client1:/etc/ceph# fdisk /dev/rbd0 root@client1:/etc/ceph# mkfs.xfs /dev/rbd0p1 root@client1:/etc/ceph# mkdir /mnt/rbd0 root@client1:/etc/ceph# mount /dev/rbd0p1 /mnt/rbd0/ root@client1:/etc/ceph# df -h Filesystem Size Used Avail Use% Mounted on ... /dev/rbd0p1 3.0G 36M 3.0G 2% /mnt/rbd0

5.3.7 客戶端驗證

root@client1:/etc/ceph# dd if=/dev/zero of=/mnt/rbd0/ceph-test-file bs=1MB count=300 300+0 records in 300+0 records out 300000000 bytes (300 MB, 286 MiB) copied, 0.537179 s, 558 MB/s ceph 驗證資料 root@client1:/etc/ceph# df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 5.9M 792M 1% /run /dev/vda2 196G 4.7G 191G 3% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda1 4.7G 183M 4.5G 4% /boot tmpfs 798M 0 798M 0% /run/user/0 /dev/rbd0p1 3.0G 323M 2.7G 11% /mnt/rbd0

6.ceph radosgw(RGW)物件儲存

6.1 RGW簡介

RGW 提供的是REST 介面,客戶端通過http 與其進行互動,完成資料的增刪改查等管理操。

radosgw 用在需要使用RESTful API 介面訪問ceph 資料的場合,因此在使用RBD 即塊儲存得場合或者使用cephFS 的場合可以不用啟用radosgw 功能。

6.2 部署radosgw 服務

如果是在使用radosgw 的場合,則以下命令以mgr1 節點為例部署為RGW 主機: 首先在需要安裝radosgwf服務的伺服器上,比如mgr1上安裝radosgw安裝包 root@mgr1:~# apt install radosgw=16.2.5-1bionic

6.3 radosgw節點的初始化

在ceph-deploy節點用cephuser賬號執行radosgw節點的初始化命令

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy --overwrite-conf rgw create mgr1

6.4 驗證mgr1 上radosgw 服務

root@mgr1:~# ps -ef |grep radosgw

root 22253 1 2 15:41 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.mgr1 --setuser ceph --setgroup ceph

6.5 檢視radosgw服務的監聽埠

root@mgr1:~# netstat -ntlp |grep radosgw

tcp 0 0 0.0.0.0:7480 0.0.0.0:* LISTEN 22253/radosgw

tcp6 0 0 :::7480 :::* LISTEN 22253/radosgw

6.6 訪問測試

cephuser@ceph-deploy:~/ceph-cluster$ curl "http://mgr1:7480" <?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>

驗證ceph 狀態 cephuser@ceph-deploy:~/ceph-cluster$ ceph -s cluster: id: d623cb9e-74c4-44ec-ba47-a49272ddd76e

health: HEALTH_OK

services:

mon: 3 daemons, quorum mon1,mon2,mon3 (age 3h)

mgr: mgr1(active, since 2h), standbys: mgr2

osd: 20 osds: 20 up (since 2h), 20 in (since 2h)

rgw: 1 daemon active (1 hosts, 1 zones)

data: pools: 6 pools, 169 pgs objects: 282 objects, 300 MiB usage: 2.0 GiB used, 2.0 TiB / 2.0 TiB avail pgs: 169 active+clean

6.7 驗證radosgw 儲存池

初始化完成radosgw 之後,會初始化預設的儲存池如下:

cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool ls

device_health_metrics

rbd-test1

.rgw.root

default.rgw.log

default.rgw.control

default.rgw.meta