web-dev-qa-db-fra.com

Comment supprimer un compte de stockage Azure contenant un blob loué?

Je jouais avec des machines virtuelles durables Windows Azure. En fin de compte, j'ai supprimé la machine virtuelle (avec succès) et essayé de supprimer le compte de stockage associé.

La demande de suppression du compte de stockage échoue.

Sur le portail de prévisualisation (manage.windowsazure.com) lorsque je supprime le compte de stockage, le message d'erreur suivant s'affiche:

Failed to delete Storage account 'portalvhdscwtwycpsxxxxx'

Details:

Storage account portalvhdscwtwycpsxxxxx has 1 container(s) which have an active image and/or disk artifacts. Ensure those artifacts are removed from the image repository before deleting this storage account.

Sur le portail précédent (windows.Azure.com), j'obtiens cette erreur:

Submit Failed

Storage account portalvhdscwtwycpsxxxxx has 1 container(s) which have an active image and/or disk artifacts. Ensure those artifacts are removed from the image repository before deleting this storage account.

En essayant de supprimer le blob lui-même (un disque dur virtuel de 30 Go) sur Azure Storage Explorer, j'obtiens cette erreur:

There is currently a lease on the blob and no lease ID was specified in the request.

Donc, mon évaluation est que ce blob est loué (par la machine virtuelle précédente, maintenant supprimée) et je ne peux le supprimer que si je peux obtenir cet ID de bail.

La question est: comment puis-je supprimer ce blob et, par conséquent, le compte de stockage?

153
Fernando Correia

La solution réside dans le message indiquant que le conteneur contient un artefact de disque actif et dans lequel il est conseillé de le supprimer du référentiel.

La procédure pour supprimer l'image disque du référentiel blob est la suivante:

Après cela, le compte de stockage peut être supprimé.

Remarques:

  • Ceci s’applique même si vous avez déjà supprimé toutes vos machines virtuelles et qu’il affiche 0; il y aura toujours des artefacts sous l'onglet disques.
  • Les disques sont détachés d'un disque supprimé VM de manière asynchrone, quelques minutes peuvent s'écouler après que le VM ait été supprimé pour que ce champ s'efface.

Voir aussi: Impossible de supprimer le disque dur virtuel, "Il y a actuellement un bail sur le blob…"

328
Fernando Correia

Malheureusement, la réponse de Fernando n'a pas fonctionné pour moi, car le stockage était "Orphan", car j'ai supprimé son VM avant de supprimer le stockage. Je ne pouvais pas trouver un moyen de le faire depuis le portail, donc j'ai installé Azure-cli , et après l'authentification, les commandes suivantes ont été exécutées:

Azure storage account delete <my-account>

Cela échoue et le message d'erreur contient le nom du coupable, par exemple:

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

Puis j'ai supprimé l'image incriminée

Azure vm disk delete <my-image>

Et essayé à nouveau pour supprimer le stockage, cette fois avec succès.

Azure storage account delete <my-account>

16
dimid

Malheureusement, il y a le cas où VM a été supprimé, mais Disks affiche le VM attaché au blob (un disque dur virtuel de 30 Go) empêchant la suppression. En outre, il En cas d'utilisation de l'explorateur Azure Storage, vous trouvez un blob VHD loué mais loué par orfan, qui ne peut pas être supprimé et qui ne contient aucune référence sur le portail de prévisualisation.

12
F.M.

Accédez aux machines virtuelles, puis cliquez sur les disques. Marquez le disque et choisissez supprimer le disque en bas. Vous pouvez maintenant choisir si vous souhaitez conserver ou supprimer le disque virtuel correspondant.

Il est d'abord important de supprimer le disque via les machines virtuelles et de ne pas le supprimer via le stockage.

8
Philluxx

Dans mon cas, le stockage n'a pas pu être supprimé à cause de vmimages.

Utiliser la commande power Shell

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

pour lister toutes les images à supprimer ALL YOU IMAGES utilisez le script suivant:

get-azurevmimage | Where-Object -Property Category -in -Value "user" |   
foreach {
        echo "remove $($_.ImageName)"
        Remove-AzureVMImage –ImageName $($_.ImageName)
        }
5
Andreas Stolle

Vous pouvez utiliser Iaas Management Studio : rompez le bail, supprimez le blob, puis supprimez l'image orpheline.

5
Nicolas Dorier

Comme F.M. a déjà déclaré; il existe un scénario dans lequel, lors de la suppression d'un VM, le disque reste attaché au VM même si le VM a été supprimé.

Pour moi, cela s'est produit parce que j'avais une limite de dépenses fixée. Lorsque la limite de dépenses est atteinte, vos services sont désactivés. Toutes les passerelles VPN que vous avez créées et les ordinateurs virtuels seront supprimés. Ensuite, pour couronner le tout, les disques attachés aux ordinateurs virtuels supprimés pensent toujours qu'ils sont attachés :(

J'ai trouvé ce blog qui explique le problème et montre comment utiliser Powershell pour le résoudre.

J'espère que cela aide les autres utilisateurs.

4
Richard Weston

Vérifiez avant de supprimer votre compte de stockage. il doit y avoir la ou les machines virtuelles, les disques et les images associés pour chaque compte de stockage que vous avez créé. Accéder au portail Azure

Onglet Sélectionner des machines virtuelles dans le volet gauche Cliquez sur Instances Images and Disks

Notez que les disques associés de chaque machine virtuelle sont affichés dans la zone Disks.Avant de supprimer une machine virtuelle, supprimez d’abord les disques associés, puis la machine virtuelle contenant le disque en second. Ensuite, supprimez le compte de stockage en dernier. Recherchez également Réseau dans le même panneau de gauche, le cas échéant, associé au compte que vous souhaitez supprimer.

Dans le nouveau portail Azure mis à jour, de nombreuses pages de configuration mentionnées ci-dessus sont modifiées. Vous pouvez voir les options Images et Disques dans le volet "Toutes les ressources". Dans la nouvelle version d'un portail Azure, vous pouvez facilement identifier les ordinateurs virtuels, leurs disques associés et son compte de stockage, clairement sur les volets verticaux adjacents, le tout sur une seule page avec différentes images d'icônes.

0
vembutech

Pour ceux qui dépendent de l'interface graphique pour gérer Azure et n'ont aucune idée d'utiliser PowerShell ou de répondre aux autres réponses, vous pouvez maintenant supprimer le compte de stockage bloqué en cochant la case "Supprimer les images non attachées" lorsque vous essayez de supprimer le stockage.

Il supprimera automatiquement le stockage sans trop de soucis.

0
Vylix

Parfois, via le nouveau portail, nous supprimons le compte de stockage Azure, mais nous ne pouvons pas le supprimer et obtenir cette erreur: "Échec de la suppression du compte de stockage 'jason1disks796'. Erreur: Le compte de stockage ne peut pas être supprimé car ses artefacts sont utilisés.

Nous pouvons utiliser PowerShell pour répertorier tous les blobs VHD du compte de stockage (module ARM):

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

Si votre compte de stockage est dans le module ASM, vous pouvez utiliser ce script pour supprimer le compte de stockage:

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

En outre, il existe un autre scénario, il n'y a pas de conteneur ou d'objet blob dans ce compte de stockage (n compte de stockage vide, nous ne pouvons pas trouver d'objet blob ni de conteneur dans ce compte de stockage via PowerShell ou un portail), lorsque nous utilisez portal pour supprimer le compte de stockage et le message d'erreur "Échec de la suppression du compte de stockage 'jason1disks796'. Erreur: le compte de stockage ne peut pas être supprimé car ses artefacts sont utilisés ". Dans ce scénario, nous pouvons créer un nouveau VM et spécifier le compte de stockage sur le compte de stockage problématique, puis le supprimer à nouveau.

0
Jason Ye