启动黑名单:

启动黑名单:

我们有一套由 6 台服务器组成的设置,这些服务器托管 CentOS 8 最小安装和 CEPH Quincy 版本 18.2.2,由 20Gbps 光纤 NIC 和双 Xeon Intel 处理器支持,在第一个节点上引导安装,然后使用 cephadm 方法扩展到其他节点,在其中 5 个节点和 3 个管理器节点上部署监视服务。每台服务器都有一个 NVMe 启动盘以及一个 1TB SATA SSD,OSD 部署在其上。创建了一个 EC 配置文件,其中 k=3 和 m=3,在顶部提供 CephFS 文件系统,并通过 NFS 导出为其他服务器提供服务。到目前为止,设置非常稳定,因为在紧急重启或网络连接故障时,OSD 不会出现故障,并且在重启后保持正常运行/启动。

在我们项目的某个阶段,我们需要激活 multipathd 服务,将启动驱动器分区和 CEPH SSD 添加到其黑名单中,以免被 mpath 分区初始化使用,黑名单如下:

启动黑名单:

blacklist {
    wwid "eui.<drive_id>"
}

SATA SSD黑名单:

blacklist {
    wwid "naa.<drive_id>"
}

上面的黑名单配置保证了启动盘以及CEPH的OSD都能正常工作,以下是lsblk的输出:

NAME                                                                                                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                                                                                         8:0    0 894.3G  0 disk
└─ceph--<id>-osd--block--<block_id>                                                                       252:3    0 894.3G  0 lvm
nvme0n1                                                                                                   259:0    0 238.5G  0 disk
├─nvme0n1p1                                                                                               259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                                                                                               259:2    0     1G  0 part /boot
└─nvme0n1p3                                                                                               259:3    0 236.9G  0 part
  ├─centos-root                                                                                           252:0    0   170G  0 lvm  /
  ├─centos-swap                                                                                           252:1    0  23.4G  0 lvm  [SWAP]
  ├─centos-var_log_audit                                                                                  252:2    0   7.5G  0 lvm  /var/log/audit
  ├─centos-home                                                                                           252:4    0    26G  0 lvm  /home
  └─centos-var_log                                                                                        252:5    0    10G  0 lvm  /var/log

除了上述 multipathd 配置之外,我们在 /etc/lvm/lvm.conf 中还有 use_devicesfile=1,/etc/lvm/devices/system.devices 文件如下所示,PVID 来自 pvdisplay 命令的输出,IDNAME 值来自“ls -lha /dev/disk/by-id”的输出:

VERSION=1.1.1
IDTYPE=sys_wwid IDNAME=eui.<drive_id> DEVNAME=/dev/nvme0n1p3 PVID=<pvid> PART=3
IDTYPE=sys_wwid IDNAME=naa.<drive_id> DEVNAME=/dev/sda PVID=<pvid>

在执行有关系统完整性的某些测试时开始出现问题,其中最重要的是紧急关闭并重新启动所有节点,随之而来的行为是 OSD 不会自动启动,并且它们各自的 LVM 卷未正确显示(除了由于某种原因在单个节点上),因此 lsblk 输出会像下面的代码片段一样发生变化,需要我们逐个重新启动节点,直到所有 OSD 恢复在线:

NAME                                                                                                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                                                                                         8:0    0 894.3G  0 disk
nvme0n1                                                                                                   259:0    0 238.5G  0 disk
├─nvme0n1p1                                                                                               259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                                                                                               259:2    0     1G  0 part /boot
└─nvme0n1p3                                                                                               259:3    0 236.9G  0 part
  ├─centos-root                                                                                           252:0    0   170G  0 lvm  /
  ├─centos-swap                                                                                           252:1    0  23.4G  0 lvm  [SWAP]
  ├─centos-var_log_audit                                                                                  252:2    0   7.5G  0 lvm  /var/log/audit
  ├─centos-home                                                                                           252:4    0    26G  0 lvm  /home
  └─centos-var_log                                                                                        252:5    0    10G  0 lvm  /var/log

如果没有启用 LVM 配置和 multipathd 服务,一切都会正常工作,但更改后这种情况开始发生。尝试使用 ceph orch daemon restart osd.n 从管理器节点手动重新启动 OSD 会导致错误状态,即使通过 bash /var/lib/ceph//osd.0/unit.run 在每个节点上手动启动 OSD,我们也会收到以下错误:

--> Failed to activate via raw: did not find any matching OSD to activate
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-<id>/osd-block-<block_id> --path /var/lib/ceph/osd/ceph-0 --no-mon-config
 stderr: failed to read label for /dev/ceph-<id>/osd-block-<block_id>: (2) No such file or directory
2024-03-30T12:42:54.014+0000 7f845296a980 -1 bluestore(/dev/ceph-<id>/osd-block-<block_id>) _read_bdev_label failed to open /dev/ceph-<id>/osd-block-<block_id>: (2) No such file or directory
--> Failed to activate via LVM: command returned non-zero exit status: 1
--> Failed to activate via simple: 'Namespace' object has no attribute 'json_config'
--> Failed to activate any OSD(s)

成功运行相同的命令但成功的结果如下:

/bin/bash /var/lib/ceph/<fsid>/osd.0/unit.run
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
Running command: /usr/bin/ceph-bluestore-tool prime-osd-dir --path /var/lib/ceph/osd/ceph-0 --no-mon-config --dev /dev/mapper/ceph--<id>-osd--block--<block_id>
Running command: /usr/bin/chown -h ceph:ceph /dev/mapper/ceph--<id>-osd--block--<block_id>
Running command: /usr/bin/chown -R ceph:ceph /dev/dm-5
Running command: /usr/bin/ln -s /dev/mapper/ceph--<id>-osd--block--<block_id> /var/lib/ceph/osd/ceph-0/block
Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
--> ceph-volume raw activate successful for osd ID: 0
ceph-<fsid>-osd-0
4361e2f166bcdeee6e9020dcbb153d3d7eec04e71d5b0b250440d4a3a0833f2c

在我们看来,在发生故障的情况下,设备映射器甚至在启动时都无法检测到逻辑卷,这很奇怪,在发生故障的情况下,它也不会显示在 dmsetup ls 命令的输出中。我们可能在这里遗漏了什么?CEPH OSD 和多路径服务甚至 LVM 配置之间似乎存在什么冲突?system.devices 条目是否应该与我们设置的不同?多路径黑名单配置是否缺少某些内容?我们已经进行了一个多星期的反复试验,查看了 lvm2 和多路径日志(我们可以根据要求提供它们),但无济于事,因为没有任何内容表明任何错误,只有正常的日志,不同之处在于缺少 CEPH OSD LVM 卷。

感谢你并致以真诚的问候

相关内容