mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	* Move Scripts to Tools / Add-Ons * fix json editor slug generating * update type in jsons * remove wrong method * move copy-data to tools
		
			
				
	
	
		
			76 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Copyright (c) 2021-2025 community-scripts ORG
 | 
						|
# Author: MickLesk (CanbiZ)
 | 
						|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
						|
 | 
						|
function header_info {
 | 
						|
    clear
 | 
						|
    cat <<"EOF"
 | 
						|
    ____                                          ________                    ____             __                         __   __ _    ____  ___    
 | 
						|
   / __ \_________  _  ______ ___  ____  _  __   / ____/ /__  ____ _____     / __ \_________  / /_  ____ _____  ___  ____/ /  / /| |  / /  |/  /____
 | 
						|
  / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/  / /   / / _ \/ __ `/ __ \   / / / / ___/ __ \/ __ \/ __ `/ __ \/ _ \/ __  /  / / | | / / /|_/ / ___/
 | 
						|
 / ____/ /  / /_/ />  </ / / / / / /_/ />  <   / /___/ /  __/ /_/ / / / /  / /_/ / /  / /_/ / / / / /_/ / / / /  __/ /_/ /  / /__| |/ / /  / (__  ) 
 | 
						|
/_/   /_/   \____/_/|_/_/ /_/ /_/\____/_/|_|   \____/_/\___/\__,_/_/ /_/   \____/_/  / .___/_/ /_/\__,_/_/ /_/\___/\__,_/  /_____/___/_/  /_/____/  
 | 
						|
                                                                                    /_/                                                             
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
# Function to check for orphaned LVM volumes
 | 
						|
function find_orphaned_lvm {
 | 
						|
    echo -e "\n🔍 Scanning for orphaned LVM volumes...\n"
 | 
						|
 | 
						|
    orphaned_volumes=()
 | 
						|
    while read -r lv vg size; do
 | 
						|
        # Exclude system-critical LVs and Ceph OSDs
 | 
						|
        if [[ "$lv" == "data" || "$lv" == "root" || "$lv" == "swap" || "$lv" =~ ^osd-block- ]]; then
 | 
						|
            continue
 | 
						|
        fi
 | 
						|
        container_id=$(echo "$lv" | grep -oE "[0-9]+" | head -1)
 | 
						|
        # Check if the ID exists as a VM or LXC container
 | 
						|
        if [ -f "/etc/pve/lxc/${container_id}.conf" ] || [ -f "/etc/pve/qemu-server/${container_id}.conf" ]; then
 | 
						|
            continue
 | 
						|
        fi
 | 
						|
        orphaned_volumes+=("$lv" "$vg" "$size")
 | 
						|
    done < <(lvs --noheadings -o lv_name,vg_name,lv_size --separator ' ' | awk '{print $1, $2, $3}')
 | 
						|
 | 
						|
    # Display orphaned volumes
 | 
						|
    echo -e "❗ The following orphaned LVM volumes were found:\n"
 | 
						|
    printf "%-25s %-10s %-10s\n" "LV Name" "VG" "Size"
 | 
						|
    printf "%-25s %-10s %-10s\n" "-------------------------" "----------" "----------"
 | 
						|
 | 
						|
    for ((i = 0; i < ${#orphaned_volumes[@]}; i += 3)); do
 | 
						|
        printf "%-25s %-10s %-10s\n" "${orphaned_volumes[i]}" "${orphaned_volumes[i + 1]}" "${orphaned_volumes[i + 2]}"
 | 
						|
    done
 | 
						|
    echo ""
 | 
						|
}
 | 
						|
 | 
						|
# Function to delete selected volumes
 | 
						|
function delete_orphaned_lvm {
 | 
						|
    for ((i = 0; i < ${#orphaned_volumes[@]}; i += 3)); do
 | 
						|
        lv="${orphaned_volumes[i]}"
 | 
						|
        vg="${orphaned_volumes[i + 1]}"
 | 
						|
        size="${orphaned_volumes[i + 2]}"
 | 
						|
 | 
						|
        read -p "❓ Do you want to delete $lv (VG: $vg, Size: $size)? [y/N]: " confirm
 | 
						|
        if [[ "$confirm" =~ ^[Yy]$ ]]; then
 | 
						|
            echo -e "🗑️  Deleting $lv from $vg..."
 | 
						|
            lvremove -f "$vg/$lv"
 | 
						|
            if [ $? -eq 0 ]; then
 | 
						|
                echo -e "✅ Successfully deleted $lv.\n"
 | 
						|
            else
 | 
						|
                echo -e "❌ Failed to delete $lv.\n"
 | 
						|
            fi
 | 
						|
        else
 | 
						|
            echo -e "⚠️  Skipping $lv.\n"
 | 
						|
        fi
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
# Run script
 | 
						|
header_info
 | 
						|
find_orphaned_lvm
 | 
						|
delete_orphaned_lvm
 | 
						|
 | 
						|
echo -e "✅ Cleanup process completed!\n"
 |