从指定磁盘分区创建 Ceph OSD

loic

当使用 ceph-disk 在指定磁盘分区(例如 /dev/sdc3)上设置新的 Ceph OSD 时,它将 不会被准备,并且必须手动运行 sgdisk 命令

# osd_uuid=$(uuidgen)

partition_number=3

ptype_tobe=89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be

sgdisk --change-name="${partition_number}:ceph data" \

--partition-guid="${partition_number}:{osd_uuid}" \ --typecode="${partition_number}:${ptype_tobe}" /dev/sdc

sgdisk --info=3 /dev/sdc

分区 GUID 代码:89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE(未知)分区唯一 GUID:22FD939D-C203-43A9-966A-04570B63FABB ... 分区名称:'ceph data'

Ceph 知道 ptype_tobe 是一种分区类型,并在其处理过程中设置。假设 /dev/sda 是可以创建日志分区的一个 SSD 磁盘,则可以使用以下命令准备 OSD:

# ceph-disk prepare --osd-uuid "$osd_uuid" \ --fs-type xfs --cluster ceph -- \ /dev/sdc3 /dev/sda 警告:ceph-disk:如果... OSD 将无法热插拔。 信息:为了与 2048 扇区边界对齐,请求的扇区从 34 移动到 2048。 操作已成功完成。 meta-data=/dev/sdc3 isize=2048 agcount=4, agsize=61083136 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=244332544, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=119303, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0

日志分区和数据分区应相互关联

# ceph-disk list /dev/sda : /dev/sda1 ceph journal, for /dev/sdc3 /dev/sdb : /dev/sdb2 other, ext4, mounted on / /dev/sdb3 swap, swap /dev/sdc : /dev/sdc1 other, primary /dev/sdc2 other, ext4, mounted on /mnt /dev/sdc3 ceph data, prepared, cluster ceph, journal /dev/sda1

可以更改分区类型,以便 udev 触发的脚本注意到它并配置 OSD

# ptype=4fbd7e29-9d25-41b8-afd0-062c0ceff05d

sgdisk --typecode="${partition_number}:${ptype}" /dev/sdc

udevadm trigger --subsystem-match=block --action=add

df | grep /var/lib/ceph

/dev/sdc3 932G 160M 931G 1% /var/lib/ceph/osd/ceph-9