I made a shitty script to mount all lvmthin (Proxmox) parts for data recovery in case it is of help for any one.
note: it is very shitty
#!/bin/bash
directory="/dev/mapper"
mount_directory="/tmp/proxmox"
declare -A vm_names
vm_names["102"]="nas"
vm_names["103"]="sync"
vm_names["104"]="proxy"
vm_names["105"]="mc"
vm_names["106"]="git"
vm_names["107"]="ci"
vm_names["108"]="im"
vm_names["109"]="media"
vm_names["110"]="bot"
vm_names["111"]="db"
vm_names["201"]="gw"
for file in "$directory"/*; do
if [[ "$file" =~ ^.+vm--[0-9]+--disk--[0-9]+$ ]]; then
echo "discovering partitions of $file"
sudo sudo kpartx -a $file
fi
done
echo "-------------------------------------------"
for file in "$directory"/*; do
if [[ "$file" =~ ^.+vm--[0-9]+--disk--[0-9]+p[0-9]+$ ]]; then
echo "---"
echo $file
vm_id=$(echo "$file" | grep -oP "[0-9]{3}")
# echo "vm id: $vm_id"
if [[ -v vm_names[$vm_id] ]]; then
vm_name=${vm_names[$vm_id]}
else
vm_name=$vm_id
fi
echo "vm name: $vm_name"
disk_id=$(echo "$file" | grep -oP "disk--[0-9]+p[0-9]+" | cut -d '-' -f 3)
mount_route="$mount_directory/$vm_name/disk$disk_id"
echo "mount route: $mount_route"
mkdir -p $mount_route
if ! mountpoint -q "$mount_route"; then
sudo mount $file $mount_route
if [ $? -eq 0 ]; then
echo "Successfully mounted $file on $mount_route"
else
echo "Mount failed with error code: $?"
fi
else
echo "$mount_route is already mounted. Skipping."
fi
fi
done