OSD 场景¶
从 stable-4.0 开始,以下场景不再受支持,因为它们与 ceph-disk 相关联
collocated(并置)
non-collocated(非并置)
自 Ceph Luminous 版本以来,建议使用 lvm 场景,它使用 ceph-volume 调配工具。任何其他场景都会导致弃用警告。
ceph-disk 在 ceph-ansible 3.2 周期中被弃用,并在 Ceph 本身的 Nautilus 版本中被完全移除。目前(从 stable-4.0 开始),只有一个场景,默认设置为 lvm,请参阅
因此不再需要配置 osd_scenario,它默认为 lvm。
上述 lvm 场景支持容器化和非容器化集群。提醒一下,可以通过将 containerized_deployment 设置为 True 来部署容器化集群。
如果您想在 ceph-ansible run 期间跳过 OSD 创建(例如,因为您已经调配了 OSD,但磁盘 ID 发生了变化),您可以跳过 prepare_osd 标签,即通过在 ansible-playbook 命令行上指定 --skip-tags prepare_osd。
lvm¶
此 OSD 场景使用 ceph-volume 来创建 OSD,主要使用 LVM,并且仅在 Ceph 版本为 luminous 或更新版本时可用。它会自动启用。
其他(可选)支持的设置
dmcrypt: 使用dmcrypt启用 OSD 上的 Ceph 加密。如果未设置,则默认为
false。
osds_per_device: 每个设备调配超过 1 个 OSD(如果未设置,则为默认值)。
简单配置¶
使用这种方法,大部分关于如何配置设备来调配 OSD 的决定都由 Ceph 工具(在这种情况下为 ceph-volume lvm batch)做出。给定设备输入,几乎没有空间来修改 OSD 的组成方式。
要使用此配置,必须使用将用于调配 OSD 的原始设备路径填充 devices 选项。
注意
原始设备必须是“干净”的,没有 gpt 分区表或存在的逻辑卷。
例如,对于一个具有打算用于 Ceph 的 /dev/sda 和 /dev/sdb 的节点,配置将是
devices:
- /dev/sda
- /dev/sdb
在上述情况下,如果两个设备都是机械硬盘,将创建 2 个 OSD,每个 OSD 都有自己的并置日志。
通过混合机械硬盘和固态设备,可以实现其他调配策略,例如
devices:
- /dev/sda
- /dev/sdb
- /dev/nvme0n1
与初始示例类似,这将最终生成 2 个 OSD,但数据将放置在较慢的机械硬盘上(/dev/sda 和 /dev/sdb),日志将放置在较快的固态设备 /dev/nvme0n1 上。ceph-volume 工具在 “batch”子命令部分中对此进行了详细描述
此选项也可以与 osd_auto_discovery 一起使用,这意味着您不需要直接填充 devices,而是将使用 ansible 找到的任何适当设备。
osd_auto_discovery: true
其他(可选)支持的设置
crush_device_class: 为使用此方法创建的所有 OSD 设置 CRUSH 设备类(使用简单配置方法无法实现每个 OSD 的 CRUSH 设备类)。值必须是字符串,例如crush_device_class: "ssd"
高级配置¶
当需要更精细地控制设置设备以及如何安排它们来调配 OSD 时,此配置非常有用。它需要现有卷组和逻辑卷设置(ceph-volume 不会创建这些)。
要使用此配置,必须使用逻辑卷和卷组填充 lvm_volumes 选项。此外,分区、journal、block.db 和 block.wal 也可以使用绝对路径。
注意
此配置使用 ceph-volume lvm create 来调配 OSD
支持的 lvm_volumes 配置设置
data: 逻辑卷名称或原始设备的完整路径(将使用原始设备的 100% 创建 LV)data_vg: 卷组名称,如果data是逻辑卷,则必需。crush_device_class: 结果 OSD 的 CRUSH 设备类名称,允许为每个 OSD 设置设备类,这与为所有 OSD 设置设备类的全局crush_device_class不同。
注意
如果您希望在使用 devices 时为 OSD 设置 crush_device_class,则必须使用全局 crush_device_class 选项进行设置,如上所示。在使用 devices 时,无法像使用 lvm_volumes 时那样为每个 OSD 定义特定的 CRUSH 设备类。
警告
每个条目必须是唯一的,不允许重复值
bluestore 对象存储变量
db: 逻辑卷名称或分区的完整路径。db_vg: 卷组名称,如果db是逻辑卷,则必需。wal: 逻辑卷名称或分区的完整路径。wal_vg: 卷组名称,如果wal是逻辑卷,则必需。
注意
这些 bluestore 变量是可选优化。Bluestore 的 db 和 wal 只会从更快的设备中受益。可以使用单个原始设备创建 bluestore OSD。
警告
每个条目必须是唯一的,不允许重复值
使用原始设备的 bluestore 示例
osd_objectstore: bluestore
lvm_volumes:
- data: /dev/sda
- data: /dev/sdb
注意
在这种情况下,将创建卷组和逻辑卷,利用 100% 的设备。
使用逻辑卷的 bluestore 示例
osd_objectstore: bluestore
lvm_volumes:
- data: data-lv1
data_vg: data-vg1
- data: data-lv2
data_vg: data-vg2
注意
卷组和逻辑卷必须存在。
定义 wal 和 db 逻辑卷的 bluestore 示例
osd_objectstore: bluestore
lvm_volumes:
- data: data-lv1
data_vg: data-vg1
db: db-lv1
db_vg: db-vg1
wal: wal-lv1
wal_vg: wal-vg1
- data: data-lv2
data_vg: data-vg2
db: db-lv2
db_vg: db-vg2
wal: wal-lv2
wal_vg: wal-vg2
注意
卷组和逻辑卷必须存在。
使用逻辑卷的 filestore 示例
osd_objectstore: filestore
lvm_volumes:
- data: data-lv1
data_vg: data-vg1
journal: journal-lv1
journal_vg: journal-vg1
- data: data-lv2
data_vg: data-vg2
journal: journal-lv2
journal_vg: journal-vg2
注意
卷组和逻辑卷必须存在。