bind_mounts=get_container_binds(ctx, fsid, daemon_type, daemon_id),
cname='ceph-%s-%s.%s-activate' % (fsid, daemon_type, daemon_id),
)
+ if 'cluster' in ctx and ctx.cluster:
+ # ctx.cluster is only set during adoption of a daemon from a cluster
+ # with a custom name (not "ceph"). The initial activate command the first
+ # time we start the new cephadm based systemd unit for this osd must account
+ # for this by mounting to the correct data dir in the container. Otherwise
+ # necessary files from the old data dir of the daemon won't be copied over
+ # to the new data dir on the host. After the first start (e.g. on any redeploys)
+ # this is no longer necessary as we will have these files in the data dir on the host
+ if data_dir in prestart.volume_mounts:
+ prestart.volume_mounts[data_dir] = f'/var/lib/ceph/osd/{ctx.cluster}-{daemon_id}'
_write_container_cmd_to_bash(ctx, f, prestart, 'LVM OSDs use ceph-volume lvm activate')
elif daemon_type == CephIscsi.daemon_type:
f.write(' '.join(CephIscsi.configfs_mount_umount(data_dir, mount=True)) + '\n')