Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
När du tar bort en virtuell dator (VM) i Azure tas som standard inga diskar som är anslutna till den virtuella datorn bort. Den här funktioner ser till att inga data går förlorade om en virtuell dator skulle tas bort oavsiktligt. När en virtuell dator har tagits bort fortsätter du att betala för okopplade diskar. Den här artikeln visar hur du hittar och tar bort okopplade diskar och minskar onödiga kostnader.
Anmärkning
You can use the az disk show command to get the LastOwnershipUpdateTime for any disk. Den här egenskapen representerar när diskens tillstånd senast uppdaterades. För en disk som inte är uppkopplad visas den tid då disken var okopplad. Den här egenskapen är tom för nyligen skapade diskar tills deras tillstånd ändras.
Hanterade diskar: Hitta och ta bort ej anslutna diskar
Följande skript letar efter hanterade diskar som inte är anslutna genom att kontrollera värdet på egenskapen ManagedBy. När en hanterad disk är ansluten till en virtuell dator innehåller egenskapen ManagedBy resurs-ID för den virtuella datorn. När en hanterad disk är oansluten är egenskapen ManagedBy null. Skriptet undersöker alla hanterade diskar i en Azure-prenumeration. När skriptet hittar en hanterad disk med egenskapen ManagedBy inställd på null, avgör skriptet att disken är oansluten.
Viktigt!
Kör först skriptet genom att ange variabeln deleteUnattachedDisks till 0. Med den här åtgärden kan du hitta och visa alla ej anslutna hanterade diskar.
När du har granskat alla okopplade diskar kör du skriptet igen och anger variabeln deleteUnattachedDisks till 1. Med den här åtgärden kan du ta bort alla ej anslutna hanterade diskar.
# Set deleteUnattachedDisks=1 if you want to delete unattached Managed Disks
# Set deleteUnattachedDisks=0 if you want to see the Id of the unattached Managed Disks
deleteUnattachedDisks=0
unattachedDiskIds=$(az disk list --query '[?managedBy==`null`].[id]' -o tsv)
for id in ${unattachedDiskIds[@]}
do
if (( $deleteUnattachedDisks == 1 ))
then
echo "Deleting unattached Managed Disk with Id: "$id
az disk delete --ids $id --yes
echo "Deleted unattached Managed Disk with Id: "$id
else
echo $id
fi
done
Ohanterade diskar: Hitta och ta bort okopplade diskar
Ohanterade diskar är VHD-filer som lagras som sidblobar i Azure Storage-konton. The following script looks for unattached unmanaged disks (page blobs) by examining the value of the LeaseStatus property. När en ohanterad disk är ansluten till en virtuell dator är egenskapen LeaseStatus inställd på Låst. När en ohanterad disk inte är uppkopplad är egenskapen LeaseStatus inställd på Olåst. Skriptet undersöker alla ohanterade diskar i alla Azure Storage-konton i en Azure-prenumeration. När skriptet hittar en ohanterad disk med egenskapen LeaseStatus inställd på Olåst, avgör skriptet att disken är okopplad.
Viktigt!
First, run the script by setting the deleteUnattachedVHDs variable to 0. Den här funktionen låter dig hitta och visa alla okopplade och ohanterade VHD:er.
After you review all the unattached disks, run the script again and set the deleteUnattachedVHDs variable to 1. This action lets you delete all the unattached unmanaged VHDs.
# Set deleteUnattachedVHDs=1 if you want to delete unattached VHDs
# Set deleteUnattachedVHDs=0 if you want to see the details of the unattached VHDs
deleteUnattachedVHDs=0
storageAccountIds=$(az storage account list --query [].[id] -o tsv)
for id in ${storageAccountIds[@]}
do
connectionString=$(az storage account show-connection-string --ids $id --query connectionString -o tsv)
containers=$(az storage container list --connection-string $connectionString --query [].[name] -o tsv)
for container in ${containers[@]}
do
blobs=$(az storage blob list --show-next-marker -c $container --connection-string $connectionString --query "[?properties.blobType=='PageBlob' && ends_with(name,'.vhd')].[name]" -o tsv)
for blob in ${blobs[@]}
do
leaseStatus=$(az storage blob show -n $blob -c $container --connection-string $connectionString --query "properties.lease.status" -o tsv)
if [ "$leaseStatus" == "unlocked" ]
then
if (( $deleteUnattachedVHDs == 1 ))
then
echo "Deleting VHD: "$blob" in container: "$container" in storage account: "$id
az storage blob delete --delete-snapshots include -n $blob -c $container --connection-string $connectionString
echo "Deleted VHD: "$blob" in container: "$container" in storage account: "$id
else
echo "StorageAccountId: "$id" container: "$container" VHD: "$blob
fi
fi
done
done
done
Nästa steg
For more information, see Delete a storage account.