从指定磁盘分区创建 Ceph OSD
当使用 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