💡 핵심 요약 (Executive Summary)
본 가이드는 bash ceph rbd image delete 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
Reference & Guidelines (NOTE)
개선가능점: Child, Snap, Watcher 2개 이상인 경우를 위하여 for문으로 변경
ceph-mon01:/root/deleteImage.sh
V3
bash
#!/bin/bash
# v3.0
# 개선점: 멀티라인 파일 인풋, Image validation 추가
# Created By mh.kim2
VOLUME_IDS="$(cat v3-param.txt | sed -z 's/[\n\r]/ /g')"
if [ -z "$VOLUME_IDS" ]; then
echo "==========it needs params========="
exit 1
fi
echo "==========success========="
POOL="volumes"
IMAGE_PREFIX="volume-"
for VOLUME_ID in ${VOLUME_IDS[@]};
do
IMAGE="${POOL}/${IMAGE_PREFIX}${VOLUME_ID}"
echo "Image: $IMAGE"
if [ "$(rbd ls -p $POOL | grep "${IMAGE_PREFIX}${VOLUME_ID}")" ]; then
echo "==========has image========="
# while true; do
# read -p "Do you wish to delete this Image? (y/n)" yn
# case $yn in
# [Yy]* ) PASS="0"; break;;
# [Nn]* ) PASS="1"; break;;
# * ) echo "Please answer y or n.";;
# esac
# done
# if [[ ${PASS} == "1" ]]; then
# continue
# fi
else
echo "==========hasn't image, is stopped========="
continue
fi
CHILD_IMAGES=$(rbd children $IMAGE | sed -z 's/[\n\r]/ /g')
if [ $CHILD_IMAGES ]; then
echo "==========has child========="
for CHILD_IMAGE in ${CHILD_IMAGES[@]};
do
echo "Child Image: $CHILD_IMAGE"
rbd flatten $CHILD_IMAGE
done
else
echo "==========hasn't child========="
fi
SNAPS=$(rbd snap ls $IMAGE | grep -v 'NAME' | awk '{print $2}' | sed -z 's/[\n\r]/ /g')
if [ $SNAPS ]; then
echo "==========has snap========="
for SNAP in ${SNAPS[@]};
do
echo "Snapshot: $SNAP"
rbd snap unprotect --image $IMAGE --snap $SNAP
rbd snap purge $IMAGE
done
else
echo "==========hasn't snap========="
fi
WATCHERS=$(rbd status $IMAGE | grep -v 'Watchers' | awk '{print $1}' | sed 's/watcher=//g' | sed -z 's/[\n\r]/ /g')
if [ $WATCHERS ]; then
echo "==========has watcher========="
for WATCHER in ${WATCHERS[@]};
do
echo "Watcher: $WATCHER"
ceph osd blacklist add $WATCHER
done
else
echo "==========hasn't watcher========="
fi
rbd rm $IMAGE
if [ $WATCHERS ]; then
for WATCHER in ${WATCHERS[@]};
do
ceph osd blacklist rm $WATCHER
done
fi
done
V2
bash
#!/bin/bash
# v2.0
# 개선점: Child, Snap, Watcher 2개 이상일 경우 처리 -> for문으로 변경
# Created By mh.kim2
POOL="volumes"
IMAGE_PREFIX="volume-"
IMAGE="${POOL}/${IMAGE_PREFIX}${1}"
if [ -z ${1} ]; then
echo "==========it needs params========="
exit 1
fi
echo "==========success========="
echo "Image: $IMAGE"
CHILD_IMAGES=$(rbd children $IMAGE | sed -z 's/[\n\r]/ /g')
if [ $CHILD_IMAGES ]; then
for CHILD_IMAGE in ${CHILD_IMAGES[@]};
do
echo "==========has child========="
echo "Child Image: $CHILD_IMAGE"
rbd flatten $CHILD_IMAGE
done
fi
SNAPS=$(rbd snap ls $IMAGE | grep -v 'NAME' | awk '{print $2}' | sed -z 's/[\n\r]/ /g')
if [ $SNAPS ]; then
for SNAP in ${SNAPS[@]};
do
echo "==========has snap========="
echo "Snapshot: $SNAP"
rbd snap unprotect --image $IMAGE --snap $SNAP
rbd snap purge $IMAGE
done
fi
WATCHERS=$(rbd status $IMAGE | grep -v 'Watchers' | awk '{print $1}' | sed 's/watcher=//g' | sed -z 's/[\n\r]/ /g')
if [ $WATCHERS ]; then
for WATCHER in ${WATCHERS[@]};
do
echo "==========has watcher========="
echo "Watcher: $WATCHER"
ceph osd blacklist add $WATCHER
done
fi
rbd rm $IMAGE
if [ $WATCHERS ]; then
for WATCHER in ${WATCHERS[@]};
do
ceph osd blacklist rm $WATCHER
done
fi
V1
bash
#!/bin/bash
# v1.0
# Created By mh.kim2
POOL="volumes"
IMAGE_PREFIX="volume-"
IMAGE="${POOL}/${IMAGE_PREFIX}${1}"
if [ -z ${1} ]; then
echo "==========it needs params========="
exit 1
fi
echo "==========success========="
echo "Image: $IMAGE"
CHILD_IMAGE=$(rbd children $IMAGE)
if [ $CHILD_IMAGE ]; then
echo "==========has child========="
echo "Child Image: $CHILD_IMAGE"
rbd flatten $CHILD_IMAGE
fi
SNAP=$(rbd snap ls $IMAGE | grep -v 'NAME' | awk '{print $2}')
if [ $SNAP ]; then
echo "==========has snap========="
echo "Snapshot: $SNAP"
rbd snap unprotect --image $IMAGE --snap $SNAP
rbd snap purge $IMAGE
fi
WATCHER=$(rbd status $IMAGE | grep -v 'Watchers' | awk '{print $1}' | sed 's/watcher=//g')
if [ $WATCHER ]; then
echo "==========has watcher========="
echo "Watcher: $WATCHER"
ceph osd blacklist add $WATCHER
fi
rbd rm $IMAGE
if [ $WATCHER ]; then
ceph osd blacklist rm $WATCHER
fi
Leave a Reply