创建第一个 Ceph 的 RBD 镜像并挂载到客户端

创建第一个 Ceph 的 RBD 镜像并挂载到客户端 。我按最标准、最稳妥的生产级流程一步一步给你。

下面假设:

  • 你在 node1(192.168.244.128) 上是管理员
  • node1 既是客户端也是存储节点(最常见实验环境)

✅ 一、先确认 Ceph 集群是健康的(只要这一步过了,后面都不会翻车)

在 node1(root)执行:

bash 复制代码
ceph -s

你理想看到的是类似:

复制代码
health: HEALTH_OK

或者至少是 没有 pg inactive / no osd / no mon quorum 这种硬伤。


✅ 二、创建第一个 RBD Pool(存放块设备的"泳池")

我们先创建一个叫 rbdpool 的 pool:

bash 复制代码
ceph osd pool create rbdpool 64

64 是 PG 数,实验环境合理。

然后启用 RBD 功能:

bash 复制代码
ceph osd pool application enable rbdpool rbd

验证:

bash 复制代码
ceph osd pool ls

应该能看到:

复制代码
rbdpool

✅ 三、在 pool 里创建第一个 RBD 镜像(就像创建一块"虚拟硬盘")

我们创建一个 10GB 的块设备 ,名字叫 disk1

bash 复制代码
rbd create rbdpool/disk1 --size 10G

查看:

bash 复制代码
rbd ls rbdpool

输出应为:

复制代码
disk1

✅ 四、把 RBD 镜像映射成本机块设备(出现 /dev/rbdX)

先加载内核模块:

bash 复制代码
modprobe rbd

然后映射:

bash 复制代码
rbd map rbdpool/disk1

查看映射结果:

bash 复制代码
rbd showmapped

你会看到类似:

复制代码
id pool     image  snap device
0  rbdpool  disk1   -   /dev/rbd0

✅ 说明现在:

Ceph 里的一块 10G 存储

已经变成了你 Linux 里的一块真实"硬盘" /dev/rbd0


✅ 五、给这块 RBD 磁盘分区 + 格式化

就像一块新插入的 SSD 一样处理它:

bash 复制代码
mkfs.ext4 /dev/rbd0

✅ 六、挂载到系统目录(真正"能存文件了")

先建挂载目录:

bash 复制代码
mkdir -p /mnt/rbd

挂载:

bash 复制代码
mount /dev/rbd0 /mnt/rbd

验证:

bash 复制代码
df -h | grep rbd

你应该能看到类似:

复制代码
/dev/rbd0   10G  24K   10G   1%  /mnt/rbd

✅ 七、验证:这是不是"真实的 Ceph 分布式存储"

你现在可以直接测试:

bash 复制代码
cd /mnt/rbd
dd if=/dev/zero of=test.img bs=1M count=100
ls -lh

你会看到:

复制代码
test.img  100M

这 100MB 文件的真实数据:

✅ 不在本机磁盘

✅ 在 Ceph OSD 上

✅ 任意节点宕机都不会立刻丢(副本机制)


✅ 八、开机自动挂载(可选,真实环境必做)

先取集群 FSID:

bash 复制代码
ceph fsid

然后编辑:

bash 复制代码
nano /etc/ceph/rbdmap

写入:

复制代码
rbdpool/disk1 id=admin,keyring=/etc/ceph/ceph.client.admin.keyring

再执行:

bash 复制代码
systemctl enable rbdmap
systemctl start rbdmap

✅ 九、你现在已经完整打通了这条链路:

复制代码
Ceph OSD 集群
   → RBD Pool
       → RBD Image(disk1)
            → 映射为 /dev/rbd0
                 → 挂载为 /mnt/rbd
                      → 像本地硬盘一样用

你已经真正"拥有了一块云硬盘"。


✅ 十、如果你想升级到你最初说的目标场景(libvirt + 云计算)

你现在已经完成了:

✅ 分布式块存储

✅ 内核级映射

✅ 本地挂载验证

下一步一共只差 两步

1️⃣ 把 RBD 镜像直接当作 虚拟机磁盘

2️⃣ 用 libvirt / virt-manager 创建云主机

我可以直接教你这一句级别的核心用法:

bash 复制代码
qemu-img create -f rbd rbd:rbdpool/vm01 20G
virt-install --name vm01 --disk path=rbd:rbdpool/vm01,...

✅ 你现在可以这样"验收你是否已经成功"

你只需要把下面三条的输出发给我:

bash 复制代码
rbd ls rbdpool
rbd showmapped
df -h | grep rbd

我可以 100% 告诉你:

✅ 你这块云硬盘现在是不是"真·生产级可用状态"

✅ 是否可以直接上 libvirt 虚拟机

✅ 是否需要调优副本数、性能参数


相关推荐
lisanmengmeng2 天前
cephadm 17.2.5安装部署 (二)
linux·运维·服务器·ceph
only_Klein2 天前
kubernetes集群下的分布式存储方案-ceph
ceph·kubernetes·分布式存储
苦逼IT运维2 天前
Helm 实战指南(四):生产环境 Helm 部署 CVAT 全记录:Ceph 存储、GPU 节点污点调度与 HTTPS 指南
ceph·网络协议·https
大新新大浩浩3 天前
ceph平台-未及时移除故障osd导致根目录100%问题的故障记录
ceph
北亚数据恢复4 天前
分布式数据恢复—Ceph+TiDB数据恢复报告
分布式·ceph·数据恢复·tidb·服务器数据恢复·北亚数据恢复·存储数据恢复
lisanmengmeng6 天前
添加ceph节点
linux·服务器·ceph
张小凡vip6 天前
Kubernetes---存储方案:Rook自动结合Ceph
ceph·容器·kubernetes
wniuniu_9 天前
日志内容和cephadm
数据库·ceph
wniuniu_10 天前
ceph锁测试
ceph
wniuniu_13 天前
rbd镜像的锁
ceph