diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 62a1df6529..f3ac32bc6f 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -200,6 +200,7 @@ COPY apt_preferences.{{ base_distro }} /etc/apt/preferences {% set base_apt_packages = [ 'ca-certificates', 'curl', + 'gawk', 'lvm2', 'open-iscsi', 'python', diff --git a/docker/ceph/ceph-osd/extend_start.sh b/docker/ceph/ceph-osd/extend_start.sh index 733e45ff91..ee745d0af0 100644 --- a/docker/ceph/ceph-osd/extend_start.sh +++ b/docker/ceph/ceph-osd/extend_start.sh @@ -50,6 +50,10 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then CEPH_ROOT_NAME=cache fi + if [[ "${OSD_INITIAL_WEIGHT}" == "auto" ]]; then + OSD_INITIAL_WEIGHT=$(parted --script ${OSD_PARTITION} unit TB print | awk 'match($0, /^Disk.* (.*)TB/, a){printf("%.2f", a[1])}') + fi + # These commands only need to be run once per host but are safe to run # repeatedly. This can be improved later or if any problems arise. ceph osd crush add-bucket "${HOSTNAME}${CEPH_ROOT_NAME:+-${CEPH_ROOT_NAME}}" host diff --git a/releasenotes/notes/support-disk-size-as-weight-in-ceph-9d6353f1d3f03199.yaml b/releasenotes/notes/support-disk-size-as-weight-in-ceph-9d6353f1d3f03199.yaml new file mode 100644 index 0000000000..5aff9c7ae4 --- /dev/null +++ b/releasenotes/notes/support-disk-size-as-weight-in-ceph-9d6353f1d3f03199.yaml @@ -0,0 +1,11 @@ +--- +prelude: > + In most of case, the disks used by ceph have different size. Use the default + value 1 may block the ceph when one disk is full. Use the disk size as osd + weight will more reasonally. +features: + - support using the disk size as the osd weight when osd_initial_weight is + auto +upgrade: + - the os_initial_weight still has the default value 1, it will not break + cluster when upgrading.