Ceph RBD(RADOS Block Device) 是 Ceph 分布式存储系统中的块存储组件,类似于 AWS EBS、iSCSI 等。它独立于 OpenShift 或 IBM CP4BA,是一个分布式存储系统,提供高性能、可扩展性和容错能力,适用于数据库、业务自动化系统(如 CP4BA)等高负载应用。
对比项 | Ceph RBD(推荐) | NFS |
---|---|---|
性能 | 高,适合数据库、业务自动化 | 低,适合文件共享 |
一致性 | 强一致性 | 弱一致性 |
多 Pod 访问 | 仅支持 ReadWriteOnce | 支持 ReadWriteMany |
适用 CP4BA 组件 | 数据库(DB2, PostgreSQL),FileNet P8,业务流程引擎 | 共享配置、日志存储 |
扩展性 | 高,可横向扩展 | 低,单点故障风险 |
一、Ceph RBD 组件架构
一个完整的 Ceph RBD 部署 需要以下核心组件:
-
MON(Monitor,监视器):管理集群状态、认证和一致性(建议3 个或以上)。
-
OSD(Object Storage Daemon):存储数据,每个物理磁盘一个 OSD 进程(建议3 个或以上)。
-
MDS(Metadata Server,可选):用于 CephFS,不影响 RBD。
-
RADOS Gateway(RGW,可选):提供 S3 兼容的对象存储 API(非 RBD 必须)。
📌 Ceph RBD 主要使用 MON + OSD,可作为 iSCSI / Kubernetes CSI 存储后端。
二、独立部署 Ceph RBD(裸机环境)
适用于 物理机 / 虚拟机 / OpenStack 环境,步骤如下:
(1)安装 Ceph
方法一:
在 Ubuntu / Debian 服务器上安装 Ceph:
# 安装依赖
sudo apt update
sudo apt install curl gnupg -y
# 添加 Ceph GPG 密钥
curl -fsSL https://download.ceph.com/keys/release.asc | gpg --dearmor -o /usr/share/keyrings/ceph.gpg
# 添加 Ceph 软件源(强制用 bullseye)
echo "deb [signed-by=/usr/share/keyrings/ceph.gpg] https://download.ceph.com/debian-pacific/ bullseye main" | sudo tee /etc/apt/sources.list.d/ceph.list
# 更新软件列表并安装
sudo apt update
sudo apt install ceph ceph-mds radosgw -y
# 安装 pyenv(如果你还没装)
curl https://pyenv.run | bash
# 安装 Python 3.10
pyenv install 3.10.14
# 创建虚拟环境
pyenv virtualenv 3.10.14 ceph-env-py310
pyenv activate ceph-env-py310
# 安装 ceph-deploy
pip install ceph-deploy
方法二(建议):
#添加 Ceph 仓库密钥:
sudo apt update
sudo apt install -y ca-certificates gnupg
wget -q -O- https://download.ceph.com/keys/release.asc | sudo gpg --dearmor -o /etc/apt/keyrings/ceph.gpg
#添加 Ceph 仓库源
#创建或编辑 /etc/apt/sources.list.d/ceph.list 文件,并添加以下内容(将 squid 替换为相应的版本代号):
deb [signed-by=/etc/apt/keyrings/ceph.gpg] https://download.ceph.com/debian-squid/ jammy main
#将 jammy 替换为你的 Ubuntu 版本代号 (例如,focal, kinetic 等),Debian 12用bookworm。
#更新软件包列表并安装 Ceph:
sudo apt update
sudo apt install ceph-common cephadm -y
#也可以安装完整的ceph包
sudo apt install ceph -y
#更新cephadm
sudo apt update
sudo apt upgrade cephadm
# 启动集群(例如使用 podman)
cephadm bootstrap --mon-ip <your-ip> --initial-dashboard-user admin --initial-dashboard-password <password>
通过以下命令确认(先启用ceph cli)
ceph mgr services
如果正常启用dashboard,会看到:
{
"dashboard": "https://192.168.88.99:8443/",
"prometheus": "http://192.168.88.99:9283/"
}
如果忘记密码:
ceph dashboard set-login-credentials admin <your_password>
如果使用了方法二,建议通过Web界面进行管理。
如果国内比较慢,请:
方法一:
sudo nano /etc/ceph/ceph.conf
在 [global]
部分添加或修改:
[global]
container_image_registry = mirrors.ustc.edu.cn
或者使用其他国内常用的镜像加速器地址,例如:
- 阿里云:
registry.aliyuncs.com/google_containers
(可能需要配置镜像加速)- 网易云:
hub-mirror.c.163.com
- 腾讯云:
mirror.ccs.tencentyun.com
- 中国科学技术大学 (ustc):
mirrors.ustc.edu.cn
- 清华大学:
docker.mirrors.ustc.edu.cn
(也是 ustc 的)注意: 不同的镜像加速器提供的镜像可能略有不同,建议选择一个稳定且包含所需 Ceph 镜像的加速器。
然后使用命令:
# 启动集群(例如使用 podman)
cephadm bootstrap --mon-ip <your-ip> --initial-dashboard-user admin --initial-dashboard-password <password> --allow-overwrite
方法二:
修改 Ceph 的安装源配置: 编辑 Ceph 配置文件,替换为国内镜像。例如,修改 /etc/apt/sources.list.d/ceph.list
文件,将官方源替换为国内镜像。
deb http://mirrors.aliyun.com/ceph/debian/ pacific main
deb-src http://mirrors.aliyun.com/ceph/debian/ pacific main
(2)初始化 Ceph 集群
ceph-deploy new mon1 mon2 mon3 # 部署 Monitor 节点
ceph-deploy install mon1 mon2 mon3 osd1 osd2 osd3 # 安装 OSD
ceph-deploy mon create-initial # 初始化 MON
(3)创建 OSD 并启动
ceph-deploy osd create --data /dev/sdb osd1
ceph-deploy osd create --data /dev/sdc osd2
ceph-deploy osd create --data /dev/sdd osd3
(4)创建 Ceph RBD 池
ceph osd pool create rbd-pool 128
rbd pool init rbd-pool
(5)映射 RBD 设备
rbd create mydisk --size 10G --pool rbd-pool
rbd map mydisk --pool rbd-pool --name client.admin
✅ Ceph RBD 现在可以被挂载为块设备,例如:
mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt
三、安装Ceph Dashboard
为了方便管理,可以使用 Ceph Dashboard(一个官方提供的 Web UI)。它可以帮助:
-
监控 OSD(存储节点)
-
管理 Ceph Pools(存储池)
-
监控 性能
-
创建 用户和访问权限
-
查看 集群健康状态
1、启用 Ceph Dashboard
在管理节点(MON/MGR 节点)上执行:
ceph mgr module enable dashboard
然后,查看 Dashboard 的端口:
ceph mgr services
输出类似:
{
"dashboard": "https://192.168.1.100:8443/"
}
✅ 这样,就可以访问 https://192.168.1.100:8443/
了!
2、设置 Ceph Dashboard 登录密码
ceph dashboard set-login-credentials admin mypassword
然后就可以使用 admin/mypassword 登录 Dashboard。
3、配置 HTTPS 证书
默认情况下,Ceph Dashboard 使用自签名证书。如果需要 使用自己的 HTTPS 证书,可以执行:
ceph dashboard set-ssl-certificate -i my_cert.pem
ceph dashboard set-ssl-certificate-key -i my_cert.key
4、配置 Grafana + Prometheus(高级监控)
如果希望有更详细的性能监控,可以 安装 Grafana + Prometheus:
ceph mgr module enable prometheus
然后可以在 Grafana 里添加 Ceph 监控数据源。
5、总结
1.Ceph Dashboard 提供图形界面,可以监控 OSD、存储池、性能、集群健康状态。
2.启用 Dashboard:
ceph mgr module enable dashboard
3. 获取访问地址:
ceph mgr services
4.设置登录密码:
ceph dashboard set-login-credentials admin mypassword
然后访问 https://<你的Ceph管理节点>:8443/
进行管理!🚀
四、Linux、Windows使用Ceph RBD块存储
1、前提条件:Ceph 块存储(RBD)可用
需要先确保:Ceph 集群运行正常(ceph -s
显示 HEALTH_OK)
1.创建 RBD 池 (Pool): 如果你还没有专门用于 RBD 的池,需要创建一个。例如,创建一个名为 rbd
的池:
ceph osd pool create rbd 128 128 replicated
建议启用 RBD 特性:
ceph osd pool application enable rbd rbd
2.创建 RBD 镜像 (Image): 在 RBD 池中创建你希望客户机使用的块设备镜像。例如,创建一个名为 my-image
,大小为 100GB 的镜像:
rbd create rbd/my-image --size 100G
3.创建 CephX 用户并授予权限: 为了安全地访问 Ceph 集群,你需要为客户机创建一个 CephX 用户,并授予其访问 RBD 池的权限。例如,创建一个名为 client.remote
的用户,并授予其对 rbd
池的读写权限:
ceph auth add client.remote mon 'allow r' osd 'allow rwx pool=rbd'
4.获取 Ceph 配置文件 (ceph.conf
) 和用户密钥: 客户机需要 Ceph 配置文件来找到 Monitor 节点,以及用户的密钥来认证。
- 获取
ceph.conf
: 通常位于 Ceph Monitor 节点上的/etc/ceph/ceph.conf
。你需要将此文件复制到客户机上。 - 获取用户密钥: 在 Monitor 节点上获取
client.remote
用户的密钥:
ceph auth get-key client.remote
将输出的密钥保存下来,客户机需要使用它进行认证。你可以将密钥保存到文件中(例如 client.remote.keyring
)。
2、Linux 客户端访问 Ceph RBD 块存储
1. 安装 Ceph 客户端工具
sudo apt install ceph-common # Ubuntu/Debian
sudo yum install ceph-common # CentOS/RHEL
2. 准备 Ceph 配置文件和密钥
复制 ceph.conf
和密钥文件到客户机: 将你在 Ceph 集群端获取的 ceph.conf
和密钥文件(例如 client.remote.keyring
)复制到 Linux 客户机上。通常建议将 ceph.conf
放在 /etc/ceph/
目录下,并将密钥文件放在一个安全的位置。
3. 映射 RBD 到本地块设备
复制 ceph.conf
和密钥文件到客户机: 将在 Ceph 集群端获取的 ceph.conf
和密钥文件(例如 client.remote.keyring
)复制到 Linux 客户机上。通常建议将 ceph.conf
放在 /etc/ceph/
目录下,并将密钥文件放在一个安全的位置。
映射 RBD 镜像到本地设备: 使用 rbd map
命令将 Ceph RBD 镜像映射为 Linux 上的一个块设备。
sudo rbd map my-image --pool rbd --id remote --keyring /path/to/client.remote.keyring
my-image
: 你在 Ceph 集群中创建的 RBD 镜像名称。rbd
: 你创建的 RBD 池名称。remote
: 你创建的 CephX 用户名(client.remote
中的remote
部分)。/path/to/client.remote.keyring
: 你保存密钥文件的路径。
成功映射后,RBD 镜像会出现在 /dev/rbd/<pool_name>/<image_name>
,例如 /dev/rbd/rbd/my-image
。
4. 格式化并挂载
sudo mkfs.ext4 /dev/rbd/rbd/my-image
sudo mkdir /mnt/ceph-rbd
sudo mount /dev/rbd/rbd/my-image /mnt/ceph-rbd
现在就可以像普通磁盘一样使用 Ceph 块存储了!
5.卸载设备: 当你不再需要使用 RBD 设备时,可以先卸载它,然后取消映射:
sudo umount /mnt/ceph-rbd
sudo rbd unmap /dev/rbd/rbd/my-image
3、Windows 访问 Ceph 块存储(较复杂)
Windows 默认 不支持 RBD,但可以通过以下方式间接使用:
方式一:通过 iSCSI 网关(推荐)
你可以部署 Ceph iSCSI Gateway(LIO Target)将 RBD 映射为标准 iSCSI 卷:
- 在 Ceph 节点安装
ceph-iscsi
:
sudo dnf install ceph-iscsi gwcli
- 使用
gwcli
配置 iSCSI 目标和映射 RBD。 - Windows 端通过 iSCSI 发起连接(控制面板 → iSCSI Initiator)。
🔗 官方指南:https://docs.ceph.com/en/latest/rbd/iscsi-target-cli/
方式二:使用 VirtIO + QEMU/KVM 虚拟化访问(适合虚拟机)
如果 Windows 运行在虚拟机中(如 Proxmox、KVM),可以将 RBD 挂载给虚拟机使用。
方法三:RBD for Windows(推荐)
1.下载和安装 RBD for Windows:
- 访问 RBD for Windows 的 GitHub 仓库:https://github.com/ceph/rbd-for-windows
- 下载最新的稳定版本安装包。
- 按照安装向导进行安装。
2.复制 ceph.conf
和密钥文件到客户机: 将你在 Ceph 集群端获取的 ceph.conf
和密钥文件(例如 client.remote.keyring
)复制到 Windows 客户机上。建议将 ceph.conf
放在 C:\ProgramData\Ceph
目录下(如果该目录不存在则创建),并将密钥文件放在一个安全的位置。
3.映射 RBD 镜像到驱动器盘符: 可以使用 RBD for Windows
提供的命令行工具 rbd-wnbd.exe
或图形界面工具进行映射。
-
使用命令行工具 (
rbd-wnbd.exe
): 打开命令提示符或 PowerShell,导航到RBD for Windows
的安装目录(通常在C:\Program Files\RBD for Windows\bin
),然后执行以下命令:
rbd-wnbd.exe map --pool rbd --image my-image --id remote --keyfile "C:\path\to\client.remote.keyring" --conf "C:\ProgramData\Ceph\ceph.conf"
- 成功映射后,RBD 镜像会显示为 Windows 上的一个虚拟磁盘。
--pool
: 你创建的 RBD 池名称。--image
: 你在 Ceph 集群中创建的 RBD 镜像名称。--id
: 你创建的 CephX 用户名(client.remote
中的remote
部分)。--keyfile
: 你保存密钥文件的路径。--conf
:ceph.conf
文件的路径。
- 使用图形界面工具: 在开始菜单中搜索 "RBD for Windows Mapper" 并打开。点击 "Map Image",然后填写相应的池名称、镜像名称、CephX 用户名、密钥文件路径和
ceph.conf
文件路径。
4.格式化和使用驱动器: 映射成功后,你可以在磁盘管理工具中看到新添加的虚拟磁盘。你可以像使用任何其他磁盘一样对其进行格式化并分配驱动器盘符。
-
取消映射驱动器:
- 使用命令行工具:
rbd-wnbd.exe unmap <drive_letter>:
将
<drive_letter>
替换为分配给 RBD 镜像的驱动器盘符。
- 使用图形界面工具: 在 "RBD for Windows Mapper" 中选择已映射的镜像,然后点击 "Unmap Image"。
安全注意事项:
- 密钥管理: 安全地存储和分发 CephX 用户密钥至关重要。
- 网络安全: 确保客户机和 Ceph 集群之间的网络连接安全。
- 权限控制: 仔细控制 CephX 用户的权限,确保它们只能访问必要的资源。
4、总结
系统 | 方式 | 是否推荐 |
---|---|---|
Linux | 直接使用 rbd map 挂载为块设备 | ✅ 推荐 |
Windows | RBD for Windows | ✅ 推荐 |
Windows VM | 在虚拟化平台(如 KVM)使用 RBD磁盘 | ✅ 推荐 |