在同一硬件上使用多个集群:使用 LXC 进行 OSD 隔离

laurentbarbe

Ceph 使得在同一硬件上创建多个集群变得容易,方法是命名集群。 如果您需要更好的隔离,可以使用 LXC,例如允许集群之间使用不同版本的 Ceph。

为此,您需要从容器访问物理磁盘。 您只需允许使用 cgroup 访问设备,并使用 mknod 创建设备

# Retrieve the major and minor number for a device :
$ ls -l /dev/sda5
brw-rw---T 1 root disk 8, 5 janv. 26 18:47 /dev/sda5

$ mknod /var/lib/lxc/container-cluster1/rootfs/dev/sda5 b 8 5
$ echo "lxc.cgroup.devices.allow = b 8:7 rwm" >> /var/lib/lxc/container-cluster1/config

但是,如果您想使用“ceph-deploy”,您可能会在 OSD 的部署中遇到许多问题。 实际上,工具需要访问所有设备才能正常工作。 因此,它还需要在物理主机上创建所有分区,并添加如下行:lxc.cgroup.devices.allow = b 8:* r 在 lxc 配置文件中。 此外,udev 在容器中未激活,因此需要创建所有设备或为 /dev 创建绑定挂载。 mount -o bind /dev /var/lib/lxc/container-cluster1/rootfs/dev/。 然后,udev 规则将不会运行…… 对于这部分,最简单的方法仍然是手动部署或例如使用 ceph-ansible,它肯定会允许更灵活。