使用docker快速部署Ceph集群 arm64 or x86

  • Ceph是一個開源的分布式文件系統(tǒng)。使用Ceph可以輕松地將存儲容量擴(kuò)展到PB以上并擁有不錯的性能。Ceph提供對象存儲、塊存儲和文件系統(tǒng)三種存儲方式。如果要直接在物理機(jī)或者虛擬機(jī)上部署Ceph集群,可以使用ceph-deploy工具,也可以使用ceph-ansible。如果不想花時間安裝ceph,可以通過ceph-docker來部署Ceph集群。使用Docker部署Ceph集群的一大好處就是不用為升級而煩惱,但是,如果使用yum或者apt-get的方式來升級ceph就需要解決很多依賴包的問題。

  • 一個Ceph存儲集群至少需要一個Ceph Monitor和兩個OSD守護(hù)進(jìn)程。但是,如果要運行Ceph文件系統(tǒng)客戶端,那就還需要部署一個元數(shù)據(jù)服務(wù)器Metadata Server.

  • Ceph OSDs 負(fù)責(zé)存儲數(shù)據(jù),處理數(shù)據(jù)的的復(fù)制、恢復(fù)、回填、再均衡,并通過檢查其他OSD守護(hù)進(jìn)程的心跳來向Ceph Monitors提供一些監(jiān)控信息。

  • Ceph Monitors 維護(hù)者展示集群狀態(tài)的各種圖表

  • MDSs 元數(shù)據(jù)服務(wù)器,為Ceph文件系統(tǒng)存儲元數(shù)據(jù)。Ceph塊存儲和Ceph對象存儲不需要MDS。

Ceph把客戶端的數(shù)據(jù)保存為存儲池內(nèi)的對象,通過CRUSH算法,Ceph可以計算出哪個PG應(yīng)該持有的對象,然后進(jìn)一步計算出哪個OSD守護(hù)進(jìn)程持有該P(yáng)G。CRUSH算法使得Ceph存儲集群可以動態(tài)地伸縮、再均衡和修復(fù)。

線上環(huán)境最好不要將多個OSD守護(hù)進(jìn)程部署在同一臺服務(wù)器上的同一個磁盤上,也不要將Monitor或者M(jìn)DS與OSD守護(hù)進(jìn)程部署在同一臺服務(wù)器上的同一個磁盤上。最佳的辦法是將操作系統(tǒng)、OSD數(shù)據(jù)和OSD日志分別放在不同的磁盤上。例如,一臺服務(wù)器操作系統(tǒng)運行在/dev/sda,OSD數(shù)據(jù)運行在/dev/sdb, OSD日志運行在/dev/sdc。

二 操作步驟

本文測試環(huán)境:

Ubuntu 18.04.1 LTS

Docker version 18.06.1-ce

ceph version 14.2.9 (581f22da52345dba46ee232b73b990f06029a2a0) nautilus (stable)

測試使用三臺服務(wù)器:

172.30.30.215
172.30.30.217
172.30.30.219

操作系統(tǒng)使用磁盤/dev/sda, Ceph OSD使用磁盤/dev/sdb

在3臺服務(wù)器上執(zhí)行:

apt install docker
apt install docker.io
systemctl start docker 
x86: docker pull ceph/daemon:master-22b99b7-nautilus-centos-7-x86_64
arm: docker pull ceph/daemon:master-59450b6-nautilus-centos-7-aarch64

mkdir -p  /etc/ceph/  /var/lib/ceph/

關(guān)掉selinux

vi /etc/selinux/config
SELINUX=disabled
重啟

部署mon

在215上部署Monitor:

sudo docker run -d --net=host  --name=mon \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-e MON_IP=172.30.30.215 \
-e CEPH_PUBLIC_NETWORK=172.30.30.0/24 \
ceph/daemon mon

驗證

[root@node70~]# docker exec mon ceph -s
  cluster:
    id:     f1182348-e4c8-411e-ab4d-96b3e3769c70
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum node70 (age 4m)
    mgr: no daemons active
    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:
  • Monitor不能通過NAT網(wǎng)絡(luò)通信,使用--net=host 暴露Docker主機(jī)網(wǎng)絡(luò);
  • MON_IP 是Monitor的IP地址, 寫宿主機(jī)的ip;
  • MON_NAME 是Monitor的名稱,默認(rèn)是主機(jī)名;
  • CEPH_PUBLIC_NETWORK 這個是Monitor所在網(wǎng)絡(luò)的CIDR ,這里也寫宿主機(jī)的;
  • CEPH_CLUSTER_NETWORK 這個OSD之間復(fù)制數(shù)據(jù)用到的網(wǎng)絡(luò),默認(rèn)和CEPH_PUBLIC_NETWORK相同;
  • ceph/daemon mon 這個ceph/daemon是images;
  • 這些參數(shù)都是在鏡像內(nèi)部的variables_entrypoint.sh中定義的
  • 如果要增加同一個集群的Monitor的數(shù)量,需要將/etc/ceph/和/var/lib/ceph/bootstrap-* 這些目錄下的文件復(fù)制到其他主機(jī)上,記得不要保留文件的屬主權(quán)限。使用rsync -r 或者scp -r遠(yuǎn)程復(fù)制就行
rsync -avz /etc/ceph/   root@172.30.30.217:/etc/ceph/
rsync -avz /etc/ceph/   root@172.30.30.219:/etc/ceph/


rsync -r /var/lib/ceph/bootstrap-*  root@172.30.30.217:/var/lib/ceph/
rsync -r /var/lib/ceph/bootstrap-*  root@172.30.30.219:/var/lib/ceph/

在217上部署Monitor:

sudo docker run -d --net=host  --name=mon \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-e MON_IP=172.30.30.217 \
-e CEPH_PUBLIC_NETWORK=172.30.30.0/24 \
ceph/daemon mon

在219上部署Monitor:

sudo docker run -d --net=host  --name=mon \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-e MON_IP=172.30.30.219 \
-e CEPH_PUBLIC_NETWORK=172.30.30.0/24 \
ceph/daemon mon

部署OSD

ceph 10.2 之前版本

按照ceph-docker git 視頻中的方法使用osd_ceph_disk作為ceph/daemon參數(shù)啟動OSD會失敗
所以為了解決這個問題,可以先手動磁盤進(jìn)行格式化并掛載后,使用osd_directory作為ceph/daemon的參數(shù)來啟動OSD

mkdir -p /ceph-osd/
mkfs.xfs /dev/sdb -f
mount /dev/sdb /ceph-osd/

創(chuàng)建osd

sudo docker run -d --net=host --name=osd \
--privileged=true \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-v /dev/:/dev/ \
-v /ceph-osd:/var/lib/ceph/osd \
ceph/daemon osd_directory

ceph12.2.x之后版本,這里用的是 ceph 13.2

sudo docker run -d --net=host --name=myosd1 \
--privileged=true \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-v /dev/:/dev/ \
-e OSD_DEVICE=/dev/sdb \
ceph/daemon osd_ceph_disk
  • OSD_DEVICE=/dev/sdb 根據(jù)實際情況寫空磁盤的位置.
    都執(zhí)行這些操作過后查看Docker進(jìn)程

Ceph RGW節(jié)點安裝

說明
RGW為Rados Gateway的縮寫,ceph通過RGW為互聯(lián)網(wǎng)云服務(wù)提供商提供對象存儲服務(wù)。RGW在librados之上向應(yīng)用提供訪問ceph集群的RestAPI, 支持Amazon S3和openstack swift兩種接口。對RGW最直接的理解就是一個協(xié)議轉(zhuǎn)換層,把從上層應(yīng)用符合S3或Swift協(xié)議的請求轉(zhuǎn)換成rados的請求, 將數(shù)據(jù)保存在rados集群中。
命令

 docker run \
-d --net=host \
--name=rgw \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph  \
ceph/daemon rgw  
docker exec rgw ss -ntul

[root@node /data]# curl http://127.0.0.1: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 Mgr節(jié)點安裝

說明
ceph-mgr 作為 Ceph 集群的管理進(jìn)程,未來會負(fù)責(zé)整個集群的管理操作和監(jiān)控?,F(xiàn)在的部分 Monitor 功能會遷移到 ceph-mgr 中,使得 Monitor 更專注于集群的數(shù)據(jù)面控制,降低集群對于 Monitor 的要求。
在12.2版本以后的版本,mgr已成為標(biāo)配,不安裝成功的話,集群狀態(tài)會WARN。

命令
在所有mon安裝過的節(jié)點上運行以下命令:

docker run \
-d --net=host  \
--name=mgr \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
ceph/daemon mgr

檢查Mgr是否成功啟動

 docker ps -a|grep mgr

docker exec -it mon ceph -s
  cluster:
    id:     67dac7c2-a620-4e9a-bf06-d0b13a1f2b55
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum node
    mgr: node(active)
    osd: 1 osds: 1 up, 1 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   2.0 GiB used, 17 GiB / 19 GiB avail
    pgs:

注意細(xì)節(jié)
一,如果這里安裝異常,或是7000端口未啟用,要啟用dashboard組件功能。

docker exec mon ceph mgr dump
 

docker exec mgr ceph mgr module enable dashboard
docker ps |grep ceph
e76f92c38da8        ceph/daemon         "/entrypoint.sh osd_…"   4 minutes ago       Up 4 minutes                            myosd1
77396ce279f3        ceph/daemon         "/entrypoint.sh mon"     About an hour ago   Up 15 minutes

mimic版 (nautilus版) dashboard 安裝




1、開啟dashboard 功能

docker exec mgr ceph mgr module enable dashboard

2、創(chuàng)建證書

docker exec mgr ceph dashboard create-self-signed-cert

3、創(chuàng)建 web 登錄用戶密碼

docker exec mgr ceph dashboard set-login-credentials {user-name} {password}

4 配置端口:mgr dashboard
ceph config set mgr mgr/dashboard/server_addr $IP
ceph config set mgr mgr/dashboard/server_port $PORT

5 關(guān)閉https
docker exec mgr ceph config set mgr mgr/dashboard/ssl false

6 重啟
docker restart mgr

7、查看服務(wù)訪問方式

docker exec mgr ceph mgr services

訪問:
curl  http://$ip:$prot

查看日志

docker logs -f mon

docker logs -f osd

檢查Ceph集群監(jiān)控狀況

在3臺服務(wù)器上都查看下

 docker exec mon ceph -s
    cluster 96f3568a-4e57-4b5e-bf47-bea1b930dfe3
     health HEALTH_OK
     monmap e4: 3 mons at {ceph-mon215=172.30.30.215:6789/0,ceph-osd217=172.30.30.217:6789/0,ceph-osd219=172.30.30.219:6789/0}
            election epoch 12, quorum 0,1,2 ceph-mon215,ceph-osd217,ceph-osd219
        mgr no daemons active 
     osdmap e18: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds,require_kraken_osds
      pgmap v36: 64 pgs, 1 pools, 0 bytes data, 0 objects
            399 MB used, 61010 MB / 61410 MB avail
                  64 active+clean

可以看到整個Ceph集群為HEALTH_OK

部署完成

碰上問題想修改image
我們看下我們運行的docker

[root@lab8106 ceph]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
874d78ccae55        ceph/daemon         "/entrypoint.sh osd_c"   14 hours ago        Up 14 hours                             myosd1
86ed05173432        ceph/daemon         "/entrypoint.sh mon"     15 hours ago        Up 15 hours                             mon

COMMAND這里有個/entrypoint.sh

如果存在ENTRYPOINT和CMD,那么CMD就是ENTRYPOINT的參數(shù),如果沒有ENTRYPOINT,則CMD就是默認(rèn)執(zhí)行指令
也就是容器啟動的時候默認(rèn)是會去執(zhí)行/entrypoint.sh 這個了

我們不需要他執(zhí)行這個,就需要加參數(shù)了

[root@lab8106 ceph]# docker run -i -t --entrypoint /bin/bash ceph/daemon

比如我上次做的一個操作,把ceph用戶綁定到root的id

root@9b269bf751f9:/# cat /etc/passwd|grep ceph
ceph:x:64045:64045:Ceph storage service:/var/lib/ceph:/bin/false
root@9b269bf751f9:/# sed -i 's/64045/0/g' /etc/passwd
root@9b269bf751f9:/# cat /etc/passwd|grep ceph
ceph:x:0:0:Ceph storage service:/var/lib/ceph:/bin/false

退出容器

root@9b269bf751f9:/# exit

查詢我們最后運行的容器,修改回entrypoint我們再把容器修改提交到基礎(chǔ)image

[root@lab8106 ceph]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
9b269bf751f9        ceph/daemon         "/bin/bash"         2 minutes ago       Exited (0) 15 seconds ago                       angry_hawking

[root@lab8106 ~]# docker run -i -t --entrypoint /entrypoint.sh ceph/daemon
[root@lab8106 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
c2ea602c18ac        ceph/daemon         "/entrypoint.sh"    10 seconds ago      Exited (1) 7 seconds ago                       ecstatic_bartik

[root@lab8106 ceph]# docker commit c2ea602c18ac ceph/daemon

再次啟動容器,并且檢查內(nèi)容,可以看到已經(jīng)修改好了

[root@lab8106 ceph]# docker run -i -t --entrypoint /bin/bash ceph/daemon
root@65b538fdc61e:/# cat /etc/passwd|grep ceph
ceph:x:0:0:Ceph storage service:/var/lib/ceph:/bin/false

如果需要做其他的改動,這樣改下就行

三 Ceph常用操作

檢查集群監(jiān)控狀況

 docker exec mon ceph health
HEALTH_OK

觀察集群內(nèi)正發(fā)生的事件

 docker exec mon  ceph -w

檢查集群的使用情況

 docker exec mon  ceph df 
GLOBAL:
    SIZE       AVAIL      RAW USED     %RAW USED 
    61410M     61010M         399M          0.65 
POOLS:
    NAME     ID     USED     %USED     MAX AVAIL     OBJECTS 
    rbd      0         0         0        20336M           0

檢查OSD狀態(tài)

 docker exec mon  ceph  osd stat
     osdmap e18: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds,require_kraken_osds

或者

 docker exec mon  ceph  osd dump


  

 docker exec mon  ceph  osd tree
ID WEIGHT  TYPE NAME            UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 0.05997 root default                                           
-2 0.01999     host ceph-mon215                                   
 0 0.01999         osd.0             up  1.00000          1.00000 
-3 0.01999     host ceph-osd217                                   
 1 0.01999         osd.1             up  1.00000          1.00000 
-4 0.01999     host ceph-osd219                                   
 2 0.01999         osd.2             up  1.00000          1.00000
 

查看PG

 docker exec mon  ceph  pg dump
docker exec mon  ceph  pg stat
v190: 64 pgs: 64 active+clean; 0 bytes data, 399 MB used, 61010 MB / 61410 MB avail

列出存儲池

 docker exec mon  ceph osd lspools
0 rbd,

創(chuàng)建存儲池

 docker exec mon  ceph osd pool create data 200
pool 'data' created
   data 是存儲池的名稱

   200 是設(shè)置的PG數(shù)量

設(shè)置PG值:

少于5個OSD可把pg_num設(shè)置為128

OSD數(shù)量在5到10,可以設(shè)置pg_num為512

OSD數(shù)量在10到50,可以設(shè)置pg_num為4096

OSD數(shù)量大于50,需要計算pg_num的值

設(shè)置存儲池最大對象數(shù)

 docker exec mon  ceph osd pool set-quota data max_objects 10000
set-quota max_objects = 10000 for pool data

刪除存儲池

 docker exec mon  ceph osd pool delete data data  --yes-i-really-really-mean-it
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool

如果確定要刪除存儲,需要將pg_name 輸入兩次,然后寫上--yes-i-really-really-mean-it

這里有個提示,修改當(dāng)前的Monitor配置文件/etc/ceph/ceph.conf

添加參數(shù): mon_allow_pool_delete = true

然后執(zhí)行 docker restart mon

 docker exec mon  ceph osd pool delete data data  --yes-i-really-really-mean-it
pool 'data' removed

重命名存儲池

 docker exec mon  ceph osd pool rename data datanew
pool 'data' renamed to 'datanew'

查看存儲池統(tǒng)計信息

 docker exec mon  rados df 
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRAED RD_OPS RD WR_OPS WR 
datanew      0       0      0      0                  0       0       0      0  0      0  0 
rbd          0       0      0      0                  0       0       0      0  0      0  0 

total_objects    0
total_used       420M
total_avail      60989M
total_space      61410M

拍下存儲池快照

 docker exec mon  ceph osd pool mksnap datanew data_snap2017
created pool datanew snap data_snap2017

刪除存儲池快照

 docker exec mon  ceph osd pool rmsnap datanew data_snap2017
removed pool datanew snap data_snap2017

設(shè)置對象副本數(shù)

 docker exec mon  ceph osd pool set datanew size  5

需要注意一下,一個處于降級模式的對象其副本數(shù)小于規(guī)定值的pool_size, 仍然可以接收I/O請求。為了保證I/O正常,可以設(shè)置min_size, 確保數(shù)據(jù)存儲池里任何對象的副本數(shù)小于min_size都不接收I/O

 docker exec mon  ceph osd pool set datanew min_size 2

獲取對象副本數(shù)

 docker exec mon  ceph osd dump|grep 'replicated size'
pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0
pool 4 'datanew' replicated size 5 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 200 pgp_num 200 last_change 36 flags hashpspool stripe_width 0

四 Ceph塊設(shè)備

ditaa-dc9f80d771b55f2daa5cbbfdb2dd0d3e6d

塊設(shè)備命令

創(chuàng)建塊設(shè)備映像

rbd create --size {megabytes} {pool-name}/{image-name}
    ```

  創(chuàng)建塊設(shè)備映射之前需要創(chuàng)建對應(yīng)的存儲池

docker exec mon ceph osd pool create swimmingpool 128
pool 'swimmingpool' created


  在swimmingpool這個存儲池中創(chuàng)建一個名為bar,大小為1G的映像

  docker exec mon  rbd create --size 1024 swimmingpool/bar
  如果創(chuàng)建映像時不指定存儲池,它將使用默認(rèn)的rbd存儲池

  

docker exec mon rbd create --size 1024 foo


 使用rbd ls列出塊設(shè)備映像

 

docker exec mon rbd ls swimmingpool
bar

docker exec mon rbd ls
foo


  使用rbd info檢索映像信息

docker exec mon rbd info foo

docker exec mon rbd info swimmingpool/bar




調(diào)整塊設(shè)備映像大小


rbd resize --size 2048 foo (to increase)
rbd resize --size 2048 foo --allow-shrink (to decrease)
```

刪除塊設(shè)備映像
 docker exec mon  rbd rm foo
 docker exec mon  rbd rm swimmingpool/bar

映射塊設(shè)備

sudo rbd map {pool-name}/{image-name} --id {user-name}
   

 rbd map foo --id admin
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address
    ```

  在215上映射foo出現(xiàn)報錯,查看日志

  

[8961646.895022] rbd: image foo: image uses unsupported features: 0x3c
[8961670.609930] libceph: mon0 172.30.30.215:6789 session established
[8961670.610894] libceph: client34098 fsid 96f3568a-4e57-4b5e-bf47-bea1b930dfe3
[8961670.633265] rbd: image foo: image uses unsupported features: 0x3c


   出現(xiàn)這個報錯的原因是和Linux內(nèi)核版本和rbd映像格式有關(guān)

   rbd支持兩種鏡像格式 --image-format

   format 1      已經(jīng)棄用, 為一個新的鏡像使用原始的格式。這個格式可以被所有的librbd版本和內(nèi)核rbd模塊所理解,但是不支持最新的特性

   format 2       rbd格式第二版,被librbd和3.1內(nèi)核版本以上支持。這個格式支持克隆,在將來更容易擴(kuò)展支持更多的特性



   --image-feature   可以指定rbd format2特性啟用或者禁用

   

     rbd  format2 支持的屬性有

     layering           BIT碼為1

     striping            BIT碼為2

     exclusive-lock   BIT碼為4

     object-map      BIT碼為8

      fast-diff           BIT碼為16

      deep-flatten    BIT碼為32



   查看當(dāng)前ceph集群版本支持的rbd 的屬性

ceph --show-config|grep rbd|grep features
rbd_default_features = 61

   61=32+16+8+4+1 即默認(rèn)支持layering,exclusive-lock,object-map,fast-diff,deep-flatten



   前面的報錯中顯示不支持的代號是0x3c, 這是十六進(jìn)制,換算成10進(jìn)制就是60。也就是不支持后面4種特性

   查看當(dāng)前使用的鏡像屬性

   

rbd info foo
rbd image 'foo':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.855f2ae8944a
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:


    可以關(guān)閉后面4個特性

    

rbd feature disable rbd/foo exclusive-lock, object-map, fast-diff, deep-flatten
```
再掛載試試

 rbd map rbd/foo 
/dev/rbd0

掛載成功

再查看foo的特性


 rbd info foo
rbd image 'foo':
    size 1024 MB in 256 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.855f2ae8944a
    format: 2
    features: layering
    flags:

發(fā)現(xiàn)只有一個laytering特性了。

這樣每次創(chuàng)建一個鏡像都這樣啟動和關(guān)閉特性比較麻煩,可以修改ceph.conf文件

  rbd_default_features = 3

不用重啟Monitor或者OSD

參考文檔:

http://blog.51cto.com/john88wang/1947672

https://github.com/ceph/ceph-docker

https://github.com/ceph/ceph-ansible

https://github.com/ceph/ceph-deploy

http://www.sebastien-han.fr/blog/2013/09/19/how-I-barely-got-my-first-ceph-mon-running-in-docker/

http://ceph.org.cn/2016/05/02/%E5%9C%A8docker%E9%87%8C%E8%BF%90%E8%A1%8Cceph%E9%9B%86%E7%BE%A4/

http://docs.ceph.org.cn/rados/operations/crush-map/?highlight=crush

http://www.dockerinfo.net/445.html

http://www.dockerinfo.net/4440.html

https://www.youtube.com/embed/FUSTjTBA8f8

http://docs.ceph.org.cn/rados/operations/placement-groups/

http://www.zphj1987.com/2016/06/07/rbd%E6%97%A0%E6%B3%95map-rbd-feature-disable/

https://www.ibm.com/support/knowledgecenter/en/SSNW54_1.1.2/com.ibm.kvm.v112.admin/cephbasictasks.htm:x

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容