更换磁盘同时保持CEPH中的正确编号

假定作为此方法的结果,我们保存了ceph osd tree命令输出磁盘的顺序。 如果它们按顺序排列,则在必要时更易于阅读和考虑。

关于这个话题的抒情离题。 在ceph中替换磁盘的官方方法包括从群集中删除与该磁盘关联的所有逻辑实体,并进一步进行重新创建。 结果,新创建的osd(在某些情况下)可以更改其编号(实体名称中的编号,即osd.Number)和在粉碎地图中的位置,并且自然会显示在ceph osd树和其他命令的其他位置。 其序列号将更改。

这种方法的想法是,我们不会更改任何逻辑实体,而只是将新磁盘滑入群集中的“旧”位置。 为此,在该新磁盘上,您必须(重新)创建正确的数据结构:各种ID,符号链接,键。

让我们标记一个新磁盘。

parted /dev/__ mklabel gpt 

让我们在分区上创建一个新部分

 parted /dev/sdaa mkpart primary ext2 0% 100% /sbin/sgdisk --change-name=1:'ceph data' -- /dev/sda1 

获取已故OSD的UUID

 ceph osd dump|grep 'osd.' 

将PARTUUID放在数据光盘上

 /sbin/sgdisk --typecode=1:99886b14-7904-4396-acef-c031095d4b62 -- /dev/__ 

在杂志上找到该部分

 ceph-disk list | grep for | sort 

在数据磁盘上创建文件系统

 /sbin/mkfs -t xfs -f -i size=2048 -- /dev/sdaa1 

FS挂载

 mount -o rw,noatime,attr2,inode64,noquota /dev/____ /var/lib/ceph/osd/ceph-_OSD 

从相邻的OSD复制数据

实际上,这是程序中最臭名昭著的部分,所有操作都必须谨慎进行。

复制时,跳过目录/ var / lib / ceph / osd / ceph-NUMBER / current,这是数据目录。 Simlink在日记中,我们稍后会创建

复制中

 for i in activate.monmap active ceph_fsid fsid journal_uuid keyring magic ready store_version superblock systemd type whoami; do cp /var/lib/ceph/osd/ceph-_/${i} /var/lib/ceph/osd/ceph-; done 

我们正在寻找一本杂志

 ceph-disk list | grep for | sort 

因此,我们找到该分区,然后执行

 ls -l /dev/disk/by-partuuid | grep _ 

对此UUID进行符号链接

 ln -s /dev/disk/by-partuuid/UUID /var/lib/ceph/osd/ceph-/journal 

用正确的值填充fsid

该fsid实际上是一个唯一的ID,在该ID下osd-box出现在集群中,这一点很重要,因为 如果您不输入ID,则osd-box本身将不会看到群集,并且这将是相互的。

并且该值必须取自数据日志上的partuuid分区。

 echo -n UUID >/var/lib/ceph/osd/ceph-/fsid 

填充钥匙圈

这样,可以在群集中授权osd-box。

 ceph auth list|grep --after-context=1 'osd.' 

它以以下格式写入文件

 [osd.] key = __ 

填满ami

我们只需为此文件写OSD号,即可恢复。

归零杂志

 dd bs=32M oflag=direct if=/dev/zero of=/var/lib/ceph/osd/ceph-/journal 

创建日记元数据和osd-shki

 ceph-osd --mkfs -i _OSD ceph-osd --mkjournal -i _OSD 

变更资料拥有者

 chown -R ceph:ceph /var/lib/ceph/osd/ceph- 

运行ceph-osd

注意:启动ceph-osd之后,如果在磁盘退出集群之前未发出ceph osd out NUMBER,将立即开始重建。

 systemctl start ceph-osd. 

Source: https://habr.com/ru/post/zh-CN436494/


All Articles