Skip to content

Instantly share code, notes, and snippets.

@linuxkidd
Last active July 17, 2019 22:14
Show Gist options
  • Select an option

  • Save linuxkidd/9e2c9dec6bce92b685eddf7b95625c75 to your computer and use it in GitHub Desktop.

Select an option

Save linuxkidd/9e2c9dec6bce92b685eddf7b95625c75 to your computer and use it in GitHub Desktop.
#!/usr/bin/bash
#
# Usage:
# ./list_omap_sizes.sh {poolname}
#
#
if [ -z "$1" ]; then
echo
echo
echo Please supply the pool name to process.
echo
echo
echo Usage:
echo " $0 {poolname}"
echo
echo
exit 1
fi
pool=$1
objcount=$(ceph df | awk -v pool=$pool '$1==pool { print $NF }')
objlist=$(rados -p $pool ls)
(
echo "object nr_keys nr_values size_values(bytes)"
currobj=0
for obj in $objlist; do
echo -n $obj\
if [ $(($currobj % 50)) -eq 0 ]; then
echo >&2
echo -n Processing $currobj of $objcount:\ >&2
else
echo -n . >&2
fi
((currobj++))
rados -p $pool listomapvals $obj \
| awk '/^[0-9a-f]{8}/ { next } /^value\ / { gsub(/[^0-9]/,"",$2); valsize+=$2; valcount++; next } /^$/ { next } { keycount++ } END { printf("%i %i %i\n",keycount,valcount,valsize) }'
done
echo >&2
echo >&2
) | column -t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment