1. 前言

上表中是 Ceph 官方文檔給出的 Ceph 14 版本的系統和內核推薦,其中在centos 7、ubuntu 14.04、ubuntu 16.04、ubuntu 18.04上都做了完整的測試。本文將介紹如何在ubuntu 18.04中使用 ceph 原生命令部署一個完整的 ceph 集羣,ceph 版本為14.2.22。
2. 準備
2.1. 集羣規劃
component name component type node ip node name
----------------------------------------------------------------------
[mon.a, mon.b, mon.c] mon 192.168.3.10 node0
[mgr.a, mgr.b, mgr.c] mgr 192.168.3.10 node0
[mds.a, mds.b, mds.c] mds 192.168.3.10 node0
[rgw.a, rgw.b, rgw.c] rgw 192.168.3.10 node0
[osd.0, osd.1, osd.2] osd 192.168.3.10 node0
2.2. 設置 ceph apt 源
為了加快下載速度,此處使用阿里雲開源鏡像站:
echo "deb https://mirrors.aliyun.com/ceph/debian-nautilus/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ceph.list
2.3. 添加 release key
wget -q -O- 'https://mirrors.aliyun.com/ceph/keys/release.asc' | apt-key add -
2.4. 更新
apt update
2.5. 安裝 ceph
apt install ceph ceph-mon ceph-mgr ceph-osd ceph-mds radosgw
3. 集羣部署
3.1. 創建 client.admin key
在 Ceph 的 cephx 認證體系中,client.admin 是一個預定義的特殊用户,擁有對整個集羣的完全訪問權限,它可以執行幾乎所有管理操作。沒有 client.admin,你就沒有一個默認的“root”賬户來管理集羣。換句話説,client.admin 是部署和運維的操作入口。
幾乎所有 Ceph 命令行工具(如 ceph, rados, rbd, cephfs 等)在未指定用户時,默認嘗試加載 client.admin 的密鑰。ceph 14.2.22 中不會自動創建 client.admin key,必須手動創建。測試發現 client.admin key 必須在初始化 mon 之前就創建好,否則後續不好導入到 mon 的 auth 庫中,導致 ceph 所有命令都無法使用。
ceph-authtool /etc/ceph/keyring --create-keyring --gen-key -n client.admin \
--cap mon 'allow *' \
--cap osd 'allow *' \
--cap mds 'allow *' \
--cap mgr 'allow *'
除了 client.admin key 外,ceph 14.2.22 中會自動創建以下 bootstrap 系列的 key:
client.bootstrap-mds
key: AQD7BW9p5/zTBRAApwYsv603jzAqC2HVZRulgw==
caps: [mon] allow profile bootstrap-mds
client.bootstrap-mgr
key: AQD7BW9pyyPUBRAAD+InmsW8kdJD7RaO9P64Fg==
caps: [mon] allow profile bootstrap-mgr
client.bootstrap-osd
key: AQD7BW9prkfUBRAAOQDCSLcQJv7KyuE7Shzscw==
caps: [mon] allow profile bootstrap-osd
client.bootstrap-rbd
key: AQD7BW9pHm/UBRAACRWOnAmiy2l64lIWDGIwgA==
caps: [mon] allow profile bootstrap-rbd
client.bootstrap-rbd-mirror
key: AQD7BW9po5LUBRAAQSyL0ES1DRxW9X0QdknyDQ==
caps: [mon] allow profile bootstrap-rbd-mirror
client.bootstrap-rgw
key: AQD7BW9pE7XUBRAAmG9hElRA2jb1ChRZ/gVkNQ==
caps: [mon] allow profile bootstrap-rgw
3.2. 創建 mon
在部署集羣時,必須先部署 mon,mon 是 Ceph 集羣的大腦,責維護集羣的全局狀態信息,負責分發其他組件的通信密鑰。所有其他組件在啓動和加入集羣時,必須與 mon 建立通信。只有 mon 就緒並形成 quorum 後,其他組件服務才能正確加入並協同工作。因此,在部署時必須優先創建 mon。
3.2.1. 創建 mon data
mkdir -p /var/lib/ceph/mon/mon.a
mkdir -p /var/lib/ceph/mon/mon.b
mkdir -p /var/lib/ceph/mon/mon.c
3.2.2. 創建 mon key
Ceph 通信機制中使用基於密鑰的身份驗證機制,mon 之間的通信也是如此。mon key 是整個集羣信任體系的起點。如果沒有預先生成 mon key,mon 將無法完成認證,也就無法形成初始 quorum,導致集羣無法啓動。雖然 Ceph 其他組件的密鑰通常是由 mon 動態分發,但是 mon 自己的密鑰不能從自己獲取,必須在啓動前靜態生成。
ceph-authtool /etc/ceph/keyring --gen-key -n mon. --cap mon 'allow *'
因為我將所有的 key 全部寫入到同一個文件中:/etc/ceph/keyring,所以只在第一次創建 client.admin key 的時候,才使用--create-keyring參數,這個參數會新建一個 keyring 文件,不管這個文件之前有沒有。所以在創建 mon key 的時候,就不再使用--create-keyring參數。後續創建其他組件 key 的過程也同樣不在使用--create-keyring參數。
測試發現,在創建 mon key 的時候,mon name 必須是mon.,不能是具體的mon.a這種形式,也不能單獨為每個 mon 創建 key。
3.2.3. 創建 monmap
monmaptool --create --clobber --fsid `uuidgen` /etc/ceph/monmap
monmaptool --add a 192.168.3.10:50000 /etc/ceph/monmap
monmaptool --add b 192.168.3.10:50001 /etc/ceph/monmap
monmaptool --add c 192.168.3.10:50002 /etc/ceph/monmap
monmap 創建好之後,可以使用monmaptool --print /etc/ceph/monmap命令來輸出 monmap 內容。內容如下:
monmaptool: monmap file /etc/ceph/monmap
epoch 0
fsid 334c5c34-8214-477f-95ba-00991d868126
last_changed 2026-01-17 06:57:21.606165
created 2026-01-17 06:57:21.606165
min_mon_release 0 (unknown)
0: v2:192.168.3.10:50000/0 mon.a
1: v2:192.168.3.10:50001/0 mon.b
2: v2:192.168.3.10:50002/0 mon.c
3.2.4. 配置 ceph.conf
新建/etc/ceph/ceph.conf,並追加一下內容:
[global]
fsid = 334c5c34-8214-477f-95ba-00991d868126
mon host = [v2:192.168.3.10:50000] [v2:192.168.3.10:50001] [v2:192.168.3.10:50002]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
auth allow insecure global id reclaim = false
[mon.a]
mon data = /var/lib/ceph/mon/mon.a
[mon.b]
mon data = /var/lib/ceph/mon/mon.b
[mon.c]
mon data = /var/lib/ceph/mon/mon.c
- 上述
global配置中mon host的值必須和monmaptool --add中匹配。 - 上述
mon data是 mon data 目錄,這個參數必須要添加,因為在後面初始化 mon data 的時候,如果不指定 mon data 路徑,默認會使用/var/lib/ceph/mon/<cluster>-<id>。
3.2.5. 初始化 mon data
ceph-mon --mkfs -i a --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring
ceph-mon --mkfs -i b --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring
ceph-mon --mkfs -i c --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring
3.2.6. 修改 mon data 歸屬
chown -R ceph:ceph /var/lib/ceph/mon
3.2.7. 啓動 mon
systemctl start ceph-mon@a.service
systemctl enable ceph-mon@a.service
systemctl start ceph-mon@b.service
systemctl enable ceph-mon@b.service
systemctl start ceph-mon@c.service
systemctl enable ceph-mon@c.service
至此,如果 mon 正常啓動,ceph -s命令可以正常執行並有結果輸出。
ceph -s
---------
cluster:
id: 334c5c34-8214-477f-95ba-00991d868126
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 2s)
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:
如果ceph -s命令沒有輸出結果或者卡住了,一定是部署失敗了。可以在 ceph.conf 文件中global配置項添加debug ms = 1打開客户端調試功能查看問題。
3.3. 創建 mgr
3.3.1. 創建 mgr data
mkdir -p /var/lib/ceph/mgr/mgr.a
mkdir -p /var/lib/ceph/mgr/mgr.b
mkdir -p /var/lib/ceph/mgr/mgr.c
3.3.2. 配置 ceph.conf
[mgr.a]
mgr data =/var/lib/ceph/mgr/mgr.a
[mgr.b]
mgr data = /var/lib/ceph/mgr/mgr.b
[mgr.c]
mgr data = /var/lib/ceph/mgr/mgr.c
3.3.3. 創建 mgr key
ceph-authtool /etc/ceph/keyring --gen-key -n mgr.a \
--cap mon 'allow profile mgr' \
--cap mds 'allow *' \
--cap osd 'allow *'
ceph-authtool /etc/ceph/keyring --gen-key -n mgr.b \
--cap mon 'allow profile mgr' \
--cap mds 'allow *' \
--cap osd 'allow *'
ceph-authtool /etc/ceph/keyring --gen-key -n mgr.c \
--cap mon 'allow profile mgr' \
--cap mds 'allow *' \
--cap osd 'allow *'
3.3.4. 導入 mgr key 到 auth 庫中
ceph auth add mgr.a -i /etc/ceph/keyring
ceph auth add mgr.b -i /etc/ceph/keyring
ceph auth add mgr.c -i /etc/ceph/keyring
導入 key 到 auth 庫中的目的是為了執行ceph auth ls命令能夠直接查看到。測試發現,在使用ceph-authtool工具創建 key 的時候,只有 mon 和 client 這兩種類型的 key 能夠自動添加到 ceph rados 對象中,其他類型的 key 需要手動導入。
3.3.5. 添加 mgr key 到 mgr data
ceph auth export mgr.a > /var/lib/ceph/mgr/mgr.a/keyring
ceph auth export mgr.b > /var/lib/ceph/mgr/mgr.b/keyring
ceph auth export mgr.c > /var/lib/ceph/mgr/mgr.c/keyring
3.3.6. 修改 mgr data 目錄的歸屬
chown -R ceph:ceph /var/lib/ceph/mgr
3.3.7. 啓動 mgr
systemctl start ceph-mgr@a.service
systemctl enable ceph-mgr@a.service
systemctl start ceph-mgr@b.service
systemctl enable ceph-mgr@b.service
systemctl start ceph-mgr@c.service
systemctl enable ceph-mgr@c.service
至此,mgr 服務已經完成部署,如果一切正常,使用 ceph -s 命令查看集羣狀態,可以看到 mgr 服務的信息。
ceph -s
---------
cluster:
id: 334c5c34-8214-477f-95ba-00991d868126
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 3 daemons, quorum a,b,c (age 3m)
mgr: a(active, since 23s), standbys: c, b
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:
3.4. 創建 osd
Ceph 支持 2 種存儲引擎:
filestore和bluestore。filestore 是一個過時的技術,在後續版本中逐漸被 Ceph 棄用,filestore 已經沒有任何研究價值,因此本文默認以bluestore為準。
3.4.1. 創建 osd data
mkdir -p /var/lib/ceph/osd/osd.0
mkdir -p /var/lib/ceph/osd/osd.1
mkdir -p /var/lib/ceph/osd/osd.2
3.4.2. 掛載 osd data 為 tmpfs
mount -t tmpfs tmpfs /var/lib/ceph/osd/osd.0
mount -t tmpfs tmpfs /var/lib/ceph/osd/osd.1
mount -t tmpfs tmpfs /var/lib/ceph/osd/osd.2
3.4.3. 修改 osd block dev 歸屬
chown -R ceph:ceph /dev/sdb
chown -R ceph:ceph /dev/sdc
chown -R ceph:ceph /dev/sdd
3.4.4. 創建 osd block
ln -snf /dev/sdb /var/lib/ceph/osd/osd.0/block
ln -snf /dev/sdc /var/lib/ceph/osd/osd.1/block
ln -snf /dev/sdd /var/lib/ceph/osd/osd.2/block
3.4.5. 配置 osd
[osd.0]
osd objectstore = bluestore
osd data = /var/lib/ceph/osd/osd.0
crush_location = root=default host=virtual-node0
[osd.1]
osd objectstore = bluestore
osd data = /var/lib/ceph/osd/osd.1
crush_location = root=default host=virtual-node1
[osd.2]
osd objectstore = bluestore
osd data = /var/lib/ceph/osd/osd.2
crush_location = root=default host=virtual-node2
crush_location是更改 osd 的 crush 位置,ceph 默認最小容災域級別是host,因為當前是在一台物理機上部署的,為了後續成功創建副本 pool,此時有必要更改。當然也可以在創建 pool 之前新建一個 crush rule 來自定義 crush 規則。
3.4.6. 創建 osd key
ceph-authtool /etc/ceph/keyring --gen-key -n osd.0 \
--cap mon 'allow profile osd' \
--cap mgr 'allow profile osd' \
--cap osd 'allow *'
ceph-authtool /etc/ceph/keyring --gen-key -n osd.1 \
--cap mon 'allow profile osd' \
--cap mgr 'allow profile osd' \
--cap osd 'allow *'
ceph-authtool /etc/ceph/keyring --gen-key -n osd.2 \
--cap mon 'allow profile osd' \
--cap mgr 'allow profile osd' \
--cap osd 'allow *'
3.4.7. 導入 osd key 到 auth 庫中
ceph auth add osd.0 -i /etc/ceph/keyring
ceph auth add osd.1 -i /etc/ceph/keyring
ceph auth add osd.2 -i /etc/ceph/keyring
3.4.8. 添加 osd key 到 osd data
ceph auth export osd.0 > /var/lib/ceph/osd/osd.0/keyring
ceph auth export osd.1 > /var/lib/ceph/osd/osd.1/keyring
ceph auth export osd.2 > /var/lib/ceph/osd/osd.2/keyring
3.4.9. 添加 osd key json 到 osd data
echo "{\"cephx_secret\": \"`ceph auth get-key osd.0`\"}" > /var/lib/ceph/osd/osd.0/keyring.json
echo "{\"cephx_secret\": \"`ceph auth get-key osd.1`\"}" > /var/lib/ceph/osd/osd.1/keyring.json
echo "{\"cephx_secret\": \"`ceph auth get-key osd.2`\"}" > /var/lib/ceph/osd/osd.2/keyring.json
3.4.10. 創建 osd 並初始化 osd data
uuid=`uuidgen`
ceph osd new $uuid 0 -i /var/lib/ceph/osd/osd.0/keyring.json
ceph-osd -i 0 --mkfs --osd-uuid $uuid --keyring /var/lib/ceph/osd/osd.0/keyring
uuid=`uuidgen`
ceph osd new $uuid 1 -i /var/lib/ceph/osd/osd.1/keyring.json
ceph-osd -i 1 --mkfs --osd-uuid $uuid --keyring /var/lib/ceph/osd/osd.1/keyring
uuid=`uuidgen`
ceph osd new $uuid 2 -i /var/lib/ceph/osd/osd.2/keyring.json
ceph-osd -i 2 --mkfs --osd-uuid $uuid --keyring /var/lib/ceph/osd/osd.2/keyring
3.4.11. 修改 osd data 歸屬
chown -R ceph:ceph /var/lib/ceph/osd
3.4.12. 啓動服務
systemctl start ceph-osd@0.service
systemctl enable ceph-osd@0.service
systemctl start ceph-osd@1.service
systemctl enable ceph-osd@1.service
systemctl start ceph-osd@2.service
systemctl enable ceph-osd@2.service
上述使用systemctl start ceph-osd@0.service方式啓動 osd 服務時會失敗,原因是/usr/lib/systemd/system/ceph-osd@.service文件會先執行/usr/lib/ceph/ceph-osd-prestart.sh腳本,在這個腳本中需要將data="/var/lib/ceph/osd/${cluster:-ceph}-$id"修改成實際 osd 目錄data="/var/lib/ceph/osd/osd.$id"。
以上創建 OSD 的所有過程都可以使用
ceph-volume create這條命令一步完成,這條命令實際上也是一步步執行上面過程,之所以不使用 ceph-volume 工具,主要原因是 osd data 目錄沒法自定義。ceph-volume 已經將 osd data 目錄寫死成/var/lib/ceph/osd/${cluster:-ceph}-$id。
到此,一個簡單的 Ceph 集羣已經部署完成,使用ceph -s查看集羣狀態如下:
ceph -s
---------
cluster:
id: 334c5c34-8214-477f-95ba-00991d868126
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 30m)
mgr: a(active, since 24m), standbys: b, c
osd: 3 osds: 3 up (since 9m), 3 in (since 9m)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 12 GiB / 15 GiB avail
pgs:
4. 文件存儲部署
4.1. 創建 mds
4.1.1. 創建 mds data
mkdir -p /var/lib/ceph/mds/mds.a
mkdir -p /var/lib/ceph/mds/mds.b
mkdir -p /var/lib/ceph/mds/mds.c
4.1.2. 配置 ceph.conf
[mds.a]
mds data =/var/lib/ceph/mds/mds.a
[mds.b]
mds data =/var/lib/ceph/mds/mds.b
[mds.c]
mds data =/var/lib/ceph/mds/mds.c
4.1.3. 創建 mds key
ceph-authtool /etc/ceph/keyring --gen-key -n mds.a \
--cap mon 'allow profile mds' \
--cap osd 'allow *' \
--cap mds 'allow' \
--cap mgr 'allow profile mds'
ceph-authtool /etc/ceph/keyring --gen-key -n mds.b \
--cap mon 'allow profile mds' \
--cap osd 'allow *' \
--cap mds 'allow' \
--cap mgr 'allow profile mds'
ceph-authtool /etc/ceph/keyring --gen-key -n mds.c \
--cap mon 'allow profile mds' \
--cap osd 'allow *' \
--cap mds 'allow' \
--cap mgr 'allow profile mds'
4.1.4. 導入 mds key 到 auth 庫中
ceph auth add mds.a -i /etc/ceph/keyring
ceph auth add mds.b -i /etc/ceph/keyring
ceph auth add mds.c -i /etc/ceph/keyring
4.1.5. 添加 mds key 到 mds data
ceph auth export mds.a > /var/lib/ceph/mds/mds.a/keyring
ceph auth export mds.b > /var/lib/ceph/mds/mds.b/keyring
ceph auth export mds.c > /var/lib/ceph/mds/mds.c/keyring
4.1.6. 修改 mds data 歸屬
chown -R ceph:ceph /var/lib/ceph/mds
4.1.7. 啓動 mds
systemctl start ceph-mds@a.service
systemctl enable ceph-mds@a.service
systemctl start ceph-mds@b.service
systemctl enable ceph-mds@b.service
systemctl start ceph-mds@c.service
systemctl enable ceph-mds@c.service
4.2. 創建數據池
ceph osd pool create cephfs_data 1 1
其中cephfs_data是數據池的名字,1 1分別表示 pg 和 pgp 的數量,因為是測試,所以都設置為 1。
4.3. 創建元數據池
ceph osd pool create cephfs_metadata 1 1
其中cephfs_metadata是元數據池的名字,1 1分別表示 pg 和 pgp 的數量,因為是測試,所以都設置為 1。
4.4. 創建文件系統
ceph fs new cephfs cephfs_metadata cephfs_data
其中cephfs 為文件系統的名字,該命令將會創建一個名為 cephfs 的文件系統,文件系統的元數據將存在 cephfs_metadata 元數據池中,文件系統的數據將存在 cephfs_data 數據池中。
再次查看集羣狀態:
ceph -s
---------
cluster:
id: 334c5c34-8214-477f-95ba-00991d868126
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 105m)
mgr: a(active, since 99m), standbys: b, c
mds: cephfs:1 {0=a=up:active} 2 up:standby
osd: 3 osds: 3 up (since 44m), 3 in (since 84m)
data:
pools: 2 pools, 2 pgs
objects: 22 objects, 2.2 KiB
usage: 3.0 GiB used, 12 GiB / 15 GiB avail
pgs: 2 active+clean
5. 對象存儲部署
5.1. 創建 rgw
5.1.1. 創建 rgw data
mkdir -p /var/lib/ceph/rgw/rgw.a
mkdir -p /var/lib/ceph/rgw/rgw.b
mkdir -p /var/lib/ceph/rgw/rgw.c
5.1.2. 配置 rgw
[client.rgw.a]
rgw frontends = "civetweb port=192.168.3.10:50003"
rgw data =/var/lib/ceph/rgw/rgw.a
[client.rgw.b]
rgw frontends = "civetweb port=192.168.3.10:50004"
rgw data =/var/lib/ceph/rgw/rgw.b
[client.rgw.c]
rgw frontends = "civetweb port=192.168.3.10:50005"
rgw data =/var/lib/ceph/rgw/rgw.c
上述port=192.168.3.10:50003表示只啓動 tcp4 端口監聽。如果設置成port=50003,表示同時啓動 tcp4 和 tcp6 端口監聽。
5.1.3. 創建 rgw key
ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.a \
--cap mon 'allow rw' \
--cap osd 'allow rwx' \
--cap mgr 'allow rw'
ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.b \
--cap mon 'allow rw' \
--cap osd 'allow rwx' \
--cap mgr 'allow rw'
ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.c \
--cap mon 'allow rw' \
--cap osd 'allow rwx' \
--cap mgr 'allow rw'
測試發現,rgw 的 name 必須是以client.為前綴。因為 ceph 中沒有rgw這個類別,類別只有auth, mon, osd, mds, mgr, client這幾種。
5.1.4. 導入 rgw key 到 auth 庫中
ceph auth add client.rgw.a -i /etc/ceph/keyring
ceph auth add client.rgw.b -i /etc/ceph/keyring
ceph auth add client.rgw.c -i /etc/ceph/keyring
5.1.5. 添加 rgw key 到 rgw data
ceph auth export client.rgw.a > /var/lib/ceph/rgw/rgw.a/keyring
ceph auth export client.rgw.b > /var/lib/ceph/rgw/rgw.b/keyring
ceph auth export client.rgw.c > /var/lib/ceph/rgw/rgw.c/keyring
5.1.6. 修改 rgw data 歸屬
chown -R ceph:ceph /var/lib/ceph/rgw
5.1.7. 啓動 rgw
systemctl start ceph-radosgw@rgw.a.service
systemctl enable ceph-radosgw@rgw.a.service
systemctl start ceph-radosgw@rgw.b.service
systemctl enable ceph-radosgw@rgw.b.service
systemctl start ceph-radosgw@rgw.c.service
systemctl enable ceph-radosgw@rgw.c.service
默認情況下,啓動 rgw 服務後,會自動創建與 rgw 服務相關的 pool。再次查看集羣狀態:
ceph -s
---------
cluster:
id: 334c5c34-8214-477f-95ba-00991d868126
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 106m)
mgr: a(active, since 101m), standbys: b, c
mds: cephfs:1 {0=a=up:active} 2 up:standby
osd: 3 osds: 3 up (since 46m), 3 in (since 85m)
rgw: 3 daemons active (a, b, c)
task status:
data:
pools: 6 pools, 130 pgs
objects: 135 objects, 3.4 KiB
usage: 3.0 GiB used, 12 GiB / 15 GiB avail
pgs: 130 active+clean
io:
client: 21 KiB/s rd, 0 B/s wr, 27 op/s rd, 17 op/s wr
6. 塊存儲部署
6.1. 創建數據池
ceph osd pool create rbd_pool 1 1
其中rbd_pool是數據池的名字,1 1分別是 pg 和 pgp 的數量,因為是測試集羣,所以都設置為 1。
6.2. 創建 rbd image
rbd create --pool rbd_pool --image image1 --size 1024 --image-format 2 --image-feature layering
其中rbd_pool是數據池的名字,image1是鏡像的名字,1024是鏡像的大小,其他參數不變即可。上述命令將創建一個名為image1的 rbd 鏡像。後續通過鏡像映射操作就可以像操作磁盤一樣來讀寫 rbd 塊設備。
7. 參考資料
- https://docs.ceph.com/en/nautilus/start/os-recommendations
- https://docs.ceph.com/en/nautilus/install