How do I delete an Azure storage account containing a leased blob?

后端 未结 10 2091
春和景丽
春和景丽 2020-12-04 10:02

I was playing with Windows Azure durable virtual machines. In the end, I deleted the virtual machine (successfully) and tried to delete the associated storage account.

相关标签:
10条回答
  • 2020-12-04 10:23

    Unfortunately, Fernando's answer didn't work for me, since the storage was "orphan", as I deleted its VM before deleting the storage. I couldn't find a way to do it from the portal so I've installed azure-cli, and after authentication ran the following commands:

    azure storage account delete <my-account>
    

    This fails, and the error message contains the name of culprit, e.g.:

    error: Storage account <my-account> has some active image(s) and/or disk(s), e.g. <my-image>. Ensure these image(s) and/or disk(s) are removed before deleting this storage

    Then I deleted the offending image

    azure vm disk delete <my-image>

    And tried again to delete the storage, this time successfully.

    azure storage account delete <my-account>

    0 讨论(0)
  • 2020-12-04 10:28

    Unfortunately there is the case where the VM was deleted but Disks shows the VM attached to the blob (a 30GB VHD) precluding the deletion. Also there is the case of using the Azure Storage Explorer you find an orfan but leased VHD blob that can't be deleted and there is no reference on the Preview Portal.

    0 讨论(0)
  • 2020-12-04 10:30

    Go to virtual machines, then click on discs. Mark the disc and choose delete disc at the bottom. You can now choose if you want to keep or delete the corresponding vhd.

    It is important first to delete the disc via virtual machines not to delete via storage.

    0 讨论(0)
  • 2020-12-04 10:33

    In my case, storage could not be deleted because of vmimages.

    Use power shell command

    get-azurevmimage | Where-Object -Property Category -in -Value "user"

    to list all images To delete ALL YOU IMAGES use the following script:

    get-azurevmimage | Where-Object -Property Category -in -Value "user" |   
    foreach {
            echo "remove $($_.ImageName)"
            Remove-AzureVMImage –ImageName $($_.ImageName)
            }
    
    0 讨论(0)
  • 2020-12-04 10:34

    Do check before deleting your storage account; there must be the associated virtual machine(s), Disks and Images for each storage account you created. Go to Azure portal

    Select Virtual Machines tab on left pane Click on Instances Images and Disks

    Note that, Individual Virtual machines has its attached disks which show on Disks area.Before deleting a Virtual machine, delete the associated disks first and delete the virtual machine has the disk second.Then delete the storage account last. Also look out for Network in the same left-hand side pane if any associated with the account you want to delete.

    In the new updated Azure portal, many of the above-stated config pages are changed. You can see Images and Disks options in "All resources" pane. In the newer version of an Azure portal, you can easily identify VMs its associated Disks and its Storage account clearly on its adjacent vertical panes all in one page with different icon images.

    0 讨论(0)
  • 2020-12-04 10:37

    Sometimes we via the new portal to delete azure storage account, but we can’t delete it and get this error:” Failed to delete storage account 'jason1disks796'. Error: The storage account cannot be deleted due to its artifacts being in use.

    We can use PowerShell to list all the VHD blobs of the storage account(ARM module):

    PS > Login-AzureRmAccount
    PS > $RGName = "jason1"
    PS > $SAName = "jason1disks796"
    PS > $ConName = "vhds"
    PS > $TempObj = New-Object -TypeName PSCustomObject
    PS > $TempObj |Add-Member -Name BlobName -MemberType NoteProperty -Value $null
    PS > $TempObj |Add-Member -Name LeaseState -MemberType NoteProperty -Value $null
    PS > $Keylist = Get-AzureRmStorageAccountKey -ResourceGroupName $RGName -StorageAccountName $SAName
    PS > $Key = $Keylist[0].Value
    PS > $Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
    PS > Get-AzureStorageContainer -Context $ctx
    CloudBlobContainer : Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer
    Permission         : Microsoft.WindowsAzure.Storage.Blob.BlobContainerPermissions
    PublicAccess       : Off
    LastModified       : 1/19/2017 1:27:21 AM +00:00
    ContinuationToken  :
    Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext
    Name               : vhds
    PS > $List = Get-AzureStorageBlob -Blob *.vhd -Container $ConName -Context $Ctx
    PS > $List | ForEach-Object { $TempObj.BlobName = $_.Name; $TempObj.LeaseState = $_.ICloudBlob.Properties.LeaseState; $TempObj }
    
    BlobName              LeaseState
    --------              ----------
    SQL20170119092405.vhd     Leased
    
    PS > Get-AzureStorageBlob -Blob * -Container $con -Context $ctx | Remove-AzureStorageBlob
    PS > Remove-AzureRmStorageAccount -ResourceGroupName $RGname -Name $SAName
    

    If your storage account is in the ASM module, you can use this script to remove storage account:

    Add-AzureAccount
    $SAName = "jason1161"
    $ConName = "vhds"
    $TempObj = New-Object -TypeName PSCustomObject
    $TempObj |Add-Member -Name BlobName -MemberType NoteProperty -Value $null
    $TempObj |Add-Member -Name LeaseState -MemberType NoteProperty -Value $null
    $Keylist = Get-AzureStorageKey -StorageAccountName $SAName
    $Key = $Keylist.primary
    $Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
    $List = Get-AzureStorageBlob -Blob *.vhd -Container $ConName -Context $Ctx
    $List | ForEach-Object { $TempObj.BlobName = $_.Name; $TempObj.LeaseState = $_.ICloudBlob.Properties.LeaseState; $TempObj }
    PS > Get-AzureStorageBlob -Blob * -Container $con -Context $ctx | Remove-AzureStorageBlob
    PS > Remove-AzureStorageAccount -Name $SAName
    

    Besides, there is another scenario, there is no container or blob in this storage account (an empty storage account, we can’t find blob or container in this storage account via PowerShell or portal), when we use portal to delete the storage account, and the error message” Failed to delete storage account 'jason1disks796'. Error: The storage account cannot be deleted due to its artifacts being in use”. In this scenario we can create a new VM and specify the storage account to the problematic Storage Account, then delete it again.

    0 讨论(0)
提交回复
热议问题