33 lines
758 B
Bash
33 lines
758 B
Bash
|
#!/bin/sh
|
||
|
#
|
||
|
# Don't use this script, just use rbd migrate X, this doesn't persist any snapshots
|
||
|
|
||
|
sourcepool="$1"
|
||
|
destpool="$2"
|
||
|
destdatapool="${3:-$destpool}"
|
||
|
snapname="${4:-premigrate}"
|
||
|
|
||
|
checkdep() {
|
||
|
if ! which "$1" >/dev/null; then
|
||
|
echo "Missing $1 support"
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
checkdep "rbd"
|
||
|
checkdep "jq"
|
||
|
|
||
|
for img in $(rbd -p "$sourcepool" ls); do
|
||
|
if ! rbd -p "$sourcepool" status --format json "$img" | jq -e '.watchers[]'; then
|
||
|
echo "Migrating $img"
|
||
|
if rbd -p "$sourcepool" snap add "$img"@"$snapname"; then
|
||
|
rbd -p "$sourcepool" --dest-pool "$2" --data-pool "$3" clone "$img"@"$snapname" "$img"
|
||
|
rbd -p "$destpool" flatten "$img"
|
||
|
|
||
|
# Cleanup
|
||
|
rbd -p "$sourcepool" snap rm "$img"@"$snapname"
|
||
|
#rbd -p "$sourcepool" rm "$img"
|
||
|
fi
|
||
|
fi
|
||
|
done
|