#!/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