假定作为此方法的结果,我们保存了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.