[Ceph 14.2.22] 使用Ceph原生命令部署单机集群

1. 前言

os-recommend

上表中是 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 种存储引擎:filestorebluestore。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. 参考资料

posted @ 2026-01-22 09:12  CC在认真做笔记  阅读(4)  评论(0)    收藏  举报