diff --git a/ceph-osd/templates/bin/utils/_defragOSDs.sh.tpl b/ceph-osd/templates/bin/utils/_defragOSDs.sh.tpl index 1cb27a52c..6ea62ba19 100644 --- a/ceph-osd/templates/bin/utils/_defragOSDs.sh.tpl +++ b/ceph-osd/templates/bin/utils/_defragOSDs.sh.tpl @@ -31,14 +31,15 @@ if [ "x${ARG}" == "xcron" ]; then done fi -if [ "x${ARG}" == "xdefrag" ]; then +if [ "x${ARG}" == "xdefrag" ] && [ "x${STORAGE_TYPE%-*}" == "xblock" ]; then + OSD_DEVICE=$(readlink -f ${STORAGE_LOCATION}) + ODEV=$(echo ${OSD_DEVICE} | sed 's/[0-9]//g' | cut -f 3 -d '/') OSD_PATH=$(cat /proc/mounts | awk '/ceph-/{print $2}') - OSD_DEVICE=$(cat /proc/mounts | awk '/ceph-/{print $1}') OSD_STORE=$(cat ${OSD_PATH}/type) + DATA_PART=$(cat /proc/mounts | awk '/ceph-/{print $1}') - ODEV=$(echo "${OSD_DEVICE}" | sed 's/\(.*[^0-9]\)[0-9]*$/\1/' | awk -F'/' '{print $3}') ODEV_ROTATIONAL=$(cat /sys/block/${ODEV}/queue/rotational) - ODEV_SCHEDULER=$(cat /sys/block/${ODEV}/queue/scheduler) + ODEV_SCHEDULER=$(cat /sys/block/${ODEV}/queue/scheduler | tr -d '[]') # NOTE(supamatt): TODO implement bluestore defrag options once it's available upstream if [ "${ODEV_ROTATIONAL}" -eq "1" ] && [ "x${OSD_STORE}" == "xfilestore" ]; then diff --git a/ceph-osd/templates/cronjob-defragosds.yaml b/ceph-osd/templates/cronjob-defragosds.yaml index d75e6c053..f3e9363f2 100644 --- a/ceph-osd/templates/cronjob-defragosds.yaml +++ b/ceph-osd/templates/cronjob-defragosds.yaml @@ -84,12 +84,12 @@ spec: fieldPath: metadata.namespace - name: KUBECTL_PARAM value: {{ tuple $envAll "ceph" "ceph-defragosd" | include "helm-toolkit.snippets.kubernetes_kubectl_params" | indent 10 }} - command: ["/tmp/utils-defragosds.sh"] + command: ["/tmp/utils-defragOSDs.sh"] args: ["cron"] volumeMounts: - name: ceph-osd-bin - mountPath: /tmp/utils-defragosds.sh - subPath: utils-defragosds.sh + mountPath: /tmp/utils-defragOSDs.sh + subPath: utils-defragOSDs.sh readOnly: true restartPolicy: Never hostNetwork: true diff --git a/ceph-osd/values.yaml b/ceph-osd/values.yaml index 66b43fd8c..3957e0bb5 100644 --- a/ceph-osd/values.yaml +++ b/ceph-osd/values.yaml @@ -266,4 +266,4 @@ manifests: daemonset_osd: true job_image_repo_sync: true helm_tests: true - cronjob_defragosds: true + cronjob_defragosds: false diff --git a/tools/deployment/multinode/030-ceph.sh b/tools/deployment/multinode/030-ceph.sh index ee003710d..e5aebbcbf 100755 --- a/tools/deployment/multinode/030-ceph.sh +++ b/tools/deployment/multinode/030-ceph.sh @@ -74,9 +74,22 @@ conf: journal: type: directory location: /var/lib/openstack-helm/ceph/osd/journal-one - +jobs: + ceph_defragosds: + # Execute every 15 minutes for gates + cron: "*/15 * * * *" + history: + # Number of successful job to keep + successJob: 1 + # Number of failed job to keep + failJob: 1 + concurrency: + # Skip new job if previous job still active + execPolicy: Forbid + startingDeadlineSecs: 60 manifests: cronjob_checkPGs: true + cronjob_defragosds: true EOF for CHART in ceph-mon ceph-osd ceph-client ceph-provisioners; do diff --git a/tools/deployment/osh-infra-logging/020-ceph.sh b/tools/deployment/osh-infra-logging/020-ceph.sh index 407a054e0..f095ae383 100755 --- a/tools/deployment/osh-infra-logging/020-ceph.sh +++ b/tools/deployment/osh-infra-logging/020-ceph.sh @@ -166,15 +166,27 @@ conf: journal: type: directory location: /var/lib/openstack-helm/ceph/osd/journal-one - pod: replicas: mds: 1 mgr: 1 rgw: 1 - +jobs: + ceph_defragosds: + # Execute every 15 minutes for gates + cron: "*/15 * * * *" + history: + # Number of successful job to keep + successJob: 1 + # Number of failed job to keep + failJob: 1 + concurrency: + # Skip new job if previous job still active + execPolicy: Forbid + startingDeadlineSecs: 60 manifests: cronjob_checkPGs: true + cronjob_defragosds: true EOF for CHART in ceph-mon ceph-osd ceph-client ceph-provisioners; do diff --git a/tools/deployment/tenant-ceph/030-ceph.sh b/tools/deployment/tenant-ceph/030-ceph.sh index c1a2c8297..8a99bd0de 100755 --- a/tools/deployment/tenant-ceph/030-ceph.sh +++ b/tools/deployment/tenant-ceph/030-ceph.sh @@ -57,8 +57,22 @@ deployment: cephfs_provisioner: true client_secrets: false rgw_keystone_user_and_endpoints: false +jobs: + ceph_defragosds: + # Execute every 15 minutes for gates + cron: "*/15 * * * *" + history: + # Number of successful job to keep + successJob: 1 + # Number of failed job to keep + failJob: 1 + concurrency: + # Skip new job if previous job still active + execPolicy: Forbid + startingDeadlineSecs: 60 manifests: deployment_mds: false + cronjob_defragosds: true bootstrap: enabled: true conf: diff --git a/tools/deployment/tenant-ceph/040-tenant-ceph.sh b/tools/deployment/tenant-ceph/040-tenant-ceph.sh index a92b7b8e8..6f971994b 100755 --- a/tools/deployment/tenant-ceph/040-tenant-ceph.sh +++ b/tools/deployment/tenant-ceph/040-tenant-ceph.sh @@ -88,8 +88,22 @@ storageclass: admin_secret_namespace: tenant-ceph bootstrap: enabled: true +jobs: + ceph_defragosds: + # Execute every 15 minutes for gates + cron: "*/15 * * * *" + history: + # Number of successful job to keep + successJob: 1 + # Number of failed job to keep + failJob: 1 + concurrency: + # Skip new job if previous job still active + execPolicy: Forbid + startingDeadlineSecs: 60 manifests: deployment_mds: false + cronjob_defragosds: true ceph_mgr_modules_config: prometheus: server_port: 9284