Created
March 27, 2023 21:34
-
-
Save RaminNietzsche/b9baa06b69fc5f56d907f3c953769182 to your computer and use it in GitHub Desktop.
Fix orphan multipart objects in ceph
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
if [ -z "$1" ] | |
then | |
echo "No bucket name provided" | |
exit 1 | |
fi | |
BUCKET=$1 | |
BUCKET_ID=$(radosgw-admin bucket stats -b $BUCKET | jq -r '.id') | |
if [ -z "$BUCKET_ID" ] | |
then | |
echo "Failed to get bucket ID for $BUCKET" | |
exit 1 | |
fi | |
INDEX_POOL=$(radosgw-admin zone get | jq '.placement_pools[].val.index_pool' -r) | |
DATA_POOL=$(radosgw-admin zone get | jq '.placement_pools[].val.storage_classes[].data_pool' -r) | |
ORPHANS=$(radosgw-admin bucket check -b $BUCKET | jq -r ".[]") | |
if [ -z "$ORPHANS" ] | |
then | |
echo "No orphan objects found in $BUCKET" | |
exit 0 | |
fi | |
UPLOAD_ID="" | |
for object in $ORPHANS | |
do | |
NEW_ID=$(echo $object | awk -F '.' '{print $(NF-1)}') | |
UPLOAD_ID="$UPLOAD_ID $NEW_ID" | |
done | |
# You must remove these objects from data pool | |
ORPHAN_OBJECTS_DATA=$(radosgw-admin bucket radoslist -b $BUCKET | egrep --text "($(echo $UPLOAD_ID | tr ' ' '|' ))" || true) | |
if [ -n "$ORPHAN_OBJECTS_DATA" ] | |
then | |
for object in $ORPHAN_OBJECTS_DATA | |
do | |
rados -p $DATA_POOL rm $object || true | |
done | |
fi | |
# You must remove these omapkeys from index pool | |
for i in $(rados -p $INDEX_POOL ls|grep $BUCKET_ID || true) | |
do | |
ORPHAN_OMAP=$(rados -p $INDEX_POOL listomapkeys $i| egrep --text "($(echo $UPLOAD_ID | tr ' ' '|'))" || true) | |
if [ -n "$ORPHAN_OMAP" ] | |
then | |
for omap in $ORPHAN_OMAP | |
do | |
rados -p $INDEX_POOL rmomapkey $i $omap || true | |
done | |
fi | |
done | |
# Fix bucket | |
radosgw-admin bucket check -b $BUCKET --fix || true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment