Merge "[ceph-client] Add OSD check before pool creation"
This commit is contained in:
commit
1e7cb6e494
@ -46,6 +46,46 @@ function wait_for_inactive_pgs () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_osd_count() {
|
||||||
|
echo "#### Start: Checking OSD count ####"
|
||||||
|
noup_flag=$(ceph osd stat | awk '/noup/ {print $2}')
|
||||||
|
osd_stat=$(ceph osd stat -f json)
|
||||||
|
num_osd=$(jq '.osdmap.num_osds' <<< "$osd_stat")
|
||||||
|
num_in_osds=$(jq '.osdmap.num_in_osds' <<< "$osd_stat")
|
||||||
|
num_up_osds=$(jq '.osdmap.num_up_osds' <<< "$osd_stat")
|
||||||
|
EXPECTED_OSDS={{.Values.conf.pool.target.osd}}
|
||||||
|
REQUIRED_PERCENT_OF_OSDS={{.Values.conf.pool.target.required_percent_of_osds}}
|
||||||
|
|
||||||
|
MIN_OSDS=$(($EXPECTED_OSDS*$REQUIRED_PERCENT_OF_OSDS/100))
|
||||||
|
if [ ${MIN_OSDS} -lt 1 ]; then
|
||||||
|
MIN_OSDS=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${noup_flag}" ]; then
|
||||||
|
osd_status=$(ceph osd dump -f json | jq -c '.osds[] | .state')
|
||||||
|
count=0
|
||||||
|
for osd in $osd_status; do
|
||||||
|
if [[ "$osd" == *"up"* || "$osd" == *"new"* ]]; then
|
||||||
|
((count=count+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "Caution: noup flag is set. ${count} OSDs in up/new state. Required number of OSDs: ${MIN_OSDS}."
|
||||||
|
if [ $MIN_OSDS -gt $count ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "${num_osd}" -eq 0 ]; then
|
||||||
|
echo "There are no osds in the cluster"
|
||||||
|
exit 1
|
||||||
|
elif [ "${num_in_osds}" -ge "${MIN_OSDS}" ] && [ "${num_up_osds}" -ge "${MIN_OSDS}" ]; then
|
||||||
|
echo "Required number of OSDs (${MIN_OSDS}) are UP and IN status"
|
||||||
|
else
|
||||||
|
echo "Required number of OSDs (${MIN_OSDS}) are NOT UP and IN status. Cluster shows OSD count=${num_osd}, UP=${num_up_osds}, IN=${num_in_osds}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function create_crushrule () {
|
function create_crushrule () {
|
||||||
CRUSH_NAME=$1
|
CRUSH_NAME=$1
|
||||||
CRUSH_RULE=$2
|
CRUSH_RULE=$2
|
||||||
@ -61,6 +101,7 @@ if [[ -z "$(ceph mon versions | grep ceph\ version | grep -v nautilus)" ]]; then
|
|||||||
ceph --cluster "${CLUSTER}" mon enable-msgr2
|
ceph --cluster "${CLUSTER}" mon enable-msgr2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
check_osd_count
|
||||||
{{- range $crush_rule := .Values.conf.pool.crush_rules -}}
|
{{- range $crush_rule := .Values.conf.pool.crush_rules -}}
|
||||||
{{- with $crush_rule }}
|
{{- with $crush_rule }}
|
||||||
create_crushrule {{ .name }} {{ .crush_rule }} {{ .failure_domain }} {{ .device_class }}
|
create_crushrule {{ .name }} {{ .crush_rule }} {{ .failure_domain }} {{ .device_class }}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user