From 0f14b3d7e00e36b56c84dc193674828714f5ec7d Mon Sep 17 00:00:00 2001 From: wangwei Date: Mon, 27 Aug 2018 15:47:23 +0900 Subject: [PATCH] Fix bluestore disk naming format in kolla The current bluestore disk label naming is inconsistent with the filestore. The filestore naming format is that the disk prefixes belonging to the same osd are the same and the suffixes are different. This patch keeps the bluestore's disk naming as well. Change-Id: I090cf055ebedc555b5ada35e140b7a7bb2a4cf8f --- docker/ceph/ceph-osd/extend_start.sh | 16 ++++++------ docker/kolla-toolbox/find_disks.py | 39 ++++++---------------------- specs/kolla-ceph-bluestore.rst | 4 +-- 3 files changed, 18 insertions(+), 41 deletions(-) diff --git a/docker/ceph/ceph-osd/extend_start.sh b/docker/ceph/ceph-osd/extend_start.sh index 1f42a1d92e..eafd3d290b 100644 --- a/docker/ceph/ceph-osd/extend_start.sh +++ b/docker/ceph/ceph-osd/extend_start.sh @@ -85,29 +85,29 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then ceph-osd -i "${OSD_ID}" --mkkey echo "bluestore" > "${OSD_DIR}"/type if [ -n "${OSD_BS_BLK_DEV}" ] && [ "${OSD_BS_BLK_DEV}" != "${OSD_BS_DEV}" ] && [ -n "${OSD_BS_BLK_PARTNUM}" ]; then - sgdisk "--change-name="${OSD_BS_BLK_PARTNUM}":KOLLA_CEPH_DATA_BS_B_${OSD_ID}" "--typecode="${OSD_BS_BLK_PARTNUM}":${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_BLK_DEV}" + sgdisk "--change-name="${OSD_BS_BLK_PARTNUM}":KOLLA_CEPH_DATA_BS_${OSD_ID}_B" "--typecode="${OSD_BS_BLK_PARTNUM}":${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_BLK_DEV}" else - sgdisk "--change-name=2:KOLLA_CEPH_DATA_BS_B_${OSD_ID}" "--typecode=2:${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_DEV}" + sgdisk "--change-name=2:KOLLA_CEPH_DATA_BS_${OSD_ID}_B" "--typecode=2:${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_DEV}" fi if [ -n "${OSD_BS_WAL_DEV}" ] && [ "${OSD_BS_BLK_DEV}" != "${OSD_BS_WAL_DEV}" ] && [ -n "${OSD_BS_WAL_PARTNUM}" ]; then - sgdisk "--change-name="${OSD_BS_WAL_PARTNUM}":KOLLA_CEPH_DATA_BS_W_${OSD_ID}" "--typecode="${OSD_BS_WAL_PARTNUM}":${CEPH_OSD_BS_WAL_TYPE_CODE}" -- "${OSD_BS_WAL_DEV}" + sgdisk "--change-name="${OSD_BS_WAL_PARTNUM}":KOLLA_CEPH_DATA_BS_${OSD_ID}_W" "--typecode="${OSD_BS_WAL_PARTNUM}":${CEPH_OSD_BS_WAL_TYPE_CODE}" -- "${OSD_BS_WAL_DEV}" fi if [ -n "${OSD_BS_DB_DEV}" ] && [ "${OSD_BS_BLK_DEV}" != "${OSD_BS_DB_DEV}" ] && [ -n "${OSD_BS_DB_PARTNUM}" ]; then - sgdisk "--change-name="${OSD_BS_DB_PARTNUM}":KOLLA_CEPH_DATA_BS_D_${OSD_ID}" "--typecode="${OSD_BS_DB_PARTNUM}":${CEPH_OSD_BS_DB_TYPE_CODE}" -- "${OSD_BS_DB_DEV}" + sgdisk "--change-name="${OSD_BS_DB_PARTNUM}":KOLLA_CEPH_DATA_BS_${OSD_ID}_D" "--typecode="${OSD_BS_DB_PARTNUM}":${CEPH_OSD_BS_DB_TYPE_CODE}" -- "${OSD_BS_DB_DEV}" fi partprobe || true - ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_B_"${OSD_ID}" "${OSD_DIR}"/block + ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_"${OSD_ID}"_B "${OSD_DIR}"/block if [ -n "${OSD_BS_WAL_DEV}" ] && [ "${OSD_BS_BLK_DEV}" != "${OSD_BS_WAL_DEV}" ] && [ -n "${OSD_BS_WAL_PARTNUM}" ]; then - ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_W_"${OSD_ID}" "${OSD_DIR}"/block.wal + ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_"${OSD_ID}"_W "${OSD_DIR}"/block.wal fi if [ -n "${OSD_BS_DB_DEV}" ] && [ "${OSD_BS_BLK_DEV}" != "${OSD_BS_DB_DEV}" ] && [ -n "${OSD_BS_DB_PARTNUM}" ]; then - ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_D_"${OSD_ID}" "${OSD_DIR}"/block.db + ln -sf /dev/disk/by-partlabel/KOLLA_CEPH_DATA_BS_"${OSD_ID}"_D "${OSD_DIR}"/block.db fi ceph-osd -i "${OSD_ID}" --mkfs -k "${OSD_DIR}"/keyring --osd-uuid "${OSD_UUID}" @@ -156,7 +156,7 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then # Setting partition name based on ${OSD_ID} if [[ "${OSD_STORETYPE}" == "bluestore" ]]; then - sgdisk "--change-name=${OSD_PARTITION_NUM}:KOLLA_CEPH_BSDATA_${OSD_ID}" "--typecode=${OSD_PARTITION_NUM}:${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_DEV}" + sgdisk "--change-name=${OSD_PARTITION_NUM}:KOLLA_CEPH_DATA_BS_${OSD_ID}" "--typecode=${OSD_PARTITION_NUM}:${CEPH_OSD_TYPE_CODE}" -- "${OSD_BS_DEV}" else sgdisk "--change-name=${OSD_PARTITION_NUM}:KOLLA_CEPH_DATA_${OSD_ID}" "--typecode=${OSD_PARTITION_NUM}:${CEPH_OSD_TYPE_CODE}" -- "${OSD_DEV}" sgdisk "--change-name=${JOURNAL_PARTITION_NUM}:KOLLA_CEPH_DATA_${OSD_ID}_J" "--typecode=${JOURNAL_PARTITION_NUM}:${CEPH_JOURNAL_TYPE_CODE}" -- "${JOURNAL_DEV}" diff --git a/docker/kolla-toolbox/find_disks.py b/docker/kolla-toolbox/find_disks.py index 51cd7a0784..5b33882e22 100644 --- a/docker/kolla-toolbox/find_disks.py +++ b/docker/kolla-toolbox/find_disks.py @@ -202,23 +202,23 @@ def extract_disk_info_bs(ct, dev, name, use_udev): if dev.get('DEVTYPE', '') == 'partition': actual_name = get_id_part_entry_name(dev, use_udev) - if (('BOOTSTRAP_BS' in name or 'BSDATA' in name) + if (('BOOTSTRAP_BS' in name or 'DATA_BS' in name) and name in actual_name): - if '_BS_B' in actual_name: + if actual_name.endswith("_B"): kwargs['partition_usage'] = 'block' kwargs['bs_blk_partition_num'] = \ re.sub(r'.*[^\d]', '', dev.device_node) kwargs['bs_blk_device'] = dev.find_parent('block').device_node kwargs['bs_blk_label'] = actual_name return kwargs - if '_BS_D' in actual_name: + if actual_name.endswith("_D"): kwargs['partition_usage'] = 'block.db' kwargs['bs_db_partition_num'] = \ re.sub(r'.*[^\d]', '', dev.device_node) kwargs['bs_db_device'] = dev.find_parent('block').device_node kwargs['bs_db_label'] = actual_name return kwargs - if '_BS_W' in actual_name: + if actual_name.endswith("_W"): kwargs['partition_usage'] = 'block.wal' kwargs['bs_wal_partition_num'] = \ re.sub(r'.*[^\d]', '', dev.device_node) @@ -262,15 +262,15 @@ def combine_info(disks): idx_osd = idx elif (item['partition_usage'] == 'block' and item['bs_blk_label'] == - osds['block_label'][osd_id].replace('_BS', '_BS_B')): + osds['block_label'][osd_id] + "_B"): idx_blk = idx elif (item['partition_usage'] == 'block.wal' and item['bs_wal_label'] == - osds['block_label'][osd_id].replace('_BS', '_BS_W')): + osds['block_label'][osd_id] + "_W"): idx_wal = idx elif (item['partition_usage'] == 'block.db' and item['bs_db_label'] == - osds['block_label'][osd_id].replace('_BS', '_BS_D')): + osds['block_label'][osd_id] + "_D"): idx_db = idx idx = idx + 1 @@ -338,33 +338,10 @@ def main(): ret = list() ct = pyudev.Context() for dev in find_disk(ct, name, match_mode, use_udev): - if '_BSDATA' in name: + if '_BS' in name: info = extract_disk_info_bs(ct, dev, name, use_udev) if info: ret.append(info) - elif '_BS' in name: - info = extract_disk_info_bs(ct, dev, name, use_udev) - if info: - ret.append(info) - - info = extract_disk_info_bs(ct, dev, - name.replace('_BS', '_BS_B'), - use_udev) - if info: - ret.append(info) - - info = extract_disk_info_bs(ct, dev, - - name.replace('_BS', '_BS_W'), - use_udev) - if info: - ret.append(info) - - info = extract_disk_info_bs(ct, dev, - name.replace('_BS', '_BS_D'), - use_udev) - if info: - ret.append(info) else: for info in extract_disk_info(ct, dev, name, use_udev): if info: diff --git a/specs/kolla-ceph-bluestore.rst b/specs/kolla-ceph-bluestore.rst index 48c91cef30..8dd121d36e 100644 --- a/specs/kolla-ceph-bluestore.rst +++ b/specs/kolla-ceph-bluestore.rst @@ -52,9 +52,9 @@ Indicate block, block.wal and block.db belonging to the same Ceph OSD according to the partition labels, it keeps the same method used in Kolla Ceph filestore. * ``KOLLA_CEPH_OSD_BOOSTRAP_BS_xxx`` is the block volume label of one bluestore OSD -* ``KOLLA_CEPH_OSD_BOOSTRAP_BS_W_xxx`` is the block.wal volume label of one +* ``KOLLA_CEPH_OSD_BOOSTRAP_BS_xxx_W`` is the block.wal volume label of one bluestore OSD -* ``KOLLA_CEPH_OSD_BOOSTRAP_BS_D_xxx`` is the block.db volume label of one +* ``KOLLA_CEPH_OSD_BOOSTRAP_BS_xxx_D`` is the block.db volume label of one bluestore OSD Here, ``xxx`` is the suffix used to indicate the above volumes belong to the same Ceph OSD.