web-dev-qa-db-ja.com

リースBLOBを含むAzureストレージアカウントを削除するにはどうすればよいですか?

Windows Azureの耐久性のある仮想マシンで遊んでいました。最終的に、仮想マシンを(正常に)削除し、関連するストレージアカウントを削除しようとしました。

ストレージアカウントを削除する要求は失敗します。

プレビューポータル(manage.windowsazure.com)でストレージアカウントを削除すると、次のエラーが表示されます。

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.

前のポータル(windows.Azure.com)で、次のエラーが表示されます。

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.

Azure Storage Explorerでblob自体(30GB VHD)を削除しようとすると、次のエラーが表示されます。

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

そのため、私の評価では、このBLOBは(以前の、現在削除された仮想マシンによって)リースされ、このリースIDを取得できない限り削除できません。

問題は、このBLOBを削除し、その結果ストレージアカウントを削除するにはどうすればよいですか?

153

ソリューションの鍵は、コンテナにアクティブなディスクアーティファクトがあるというメッセージと、リポジトリからそれを削除するアドバイスです。

Blobリポジトリからディスクイメージを削除する手順は次のとおりです。

  • Windows Azure管理ポータル に移動します。
  • [仮想マシン]をクリックします。
  • ディスクをクリックします。
  • ディスクをクリックします。
  • ディスクの削除をクリックします。

その後、ストレージアカウントを削除できます。

ノート:

  • これは、すべての仮想マシンをすでに削除している場合でも適用され、0が表示されます。 [ディスク]タブの下にはまだアーティファクトがあります。
  • ディスクは削除されたVMから非同期的にデタッチされます。このフィールドがクリアされるまでVMが削除されてから数分かかる場合があります。

参照: VHDを削除できません、「現在blobにリースがあります…」

328

残念ながら、ストレージを削除する前にVMを削除したため、ストレージが「孤立」していたため、 Fernandoの答え は機能しませんでした。ポータルからそれを行う方法が見つからなかったため、 Azure-cli をインストールし、認証後に次のコマンドを実行しました。

Azure storage account delete <my-account>

これは失敗し、エラーメッセージには犯人の名前が含まれます。例:

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

その後、問題のある画像を削除しました

Azure vm disk delete <my-image>

そして、今回は正常にストレージを削除しようとしました。

Azure storage account delete <my-account>

16
dimid

残念ながら、VMは削除されましたが、ディスクには、削除を妨げるblob(30GB VHD)に接続されたVMが表示される場合があります。また、Azure Storage Explorerを使用して、削除できないオーファンがリースされたVHD BLOBを見つけ、プレビューポータルに参照がない場合もあります。

12
F.M.

仮想マシンに移動して、ディスクをクリックします。ディスクをマークし、下部にあるディスクの削除を選択します。対応するvhdを保持するか削除するかを選択できるようになりました。

ストレージ経由ではなく仮想マシン経由でディスクを削除することが重要です。

8
Philluxx

私の場合、vmimagesが原因でストレージを削除できませんでした。

Power Shellコマンドを使用する

get-azurevmimage | Where-Object -Propertyカテゴリ-in -Value "user"

すべての画像を一覧表示するには削除するにはALL YOU IMAGES次のスクリプトを使用します。

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

Iaas Management Studio を使用して、リースを解除し、ブロブを削除してから、孤立したイメージを削除できます。

5
Nicolas Dorier

F.M.としてすでに述べています。 VMを削除しても、VMが削除されていても、ディスクがVMに接続されたままであるというシナリオがあります。

私にとっては、支出制限が設定されていたためです。支出制限に達すると、サービスは無効になります。作成したVPNゲートウェイとVMはすべて削除されます。それから、削除されたVMに接続されたディスクの一番上に、まだ接続されていると思います:(

このブログ を見つけました。これは問題を説明し、powershellを使用して解決する方法を示しています。

これが他のユーザーに役立つことを願っています。

4
Richard Weston

ストレージアカウントを削除する前に確認してください。作成したストレージアカウントごとに、関連付けられた仮想マシン、ディスク、およびイメージが必要です。 Azureポータルに移動

左ペインの[仮想マシン]タブを選択します[インスタンス] [イメージとディスク]をクリックします

仮想マシンを削除する前に、関連するディスクを最初に削除し、次に仮想マシンを削除してから仮想ディスクを削除してから、ストレージアカウントを最後に削除してください。また、削除するアカウントに関連付けられているものがある場合は、同じ左側のペインで[ネットワーク]を探します。

新しい更新されたAzureポータルでは、上記の構成ページの多くが変更されています。 [すべてのリソース]ペインに[イメージとディスク]オプションが表示されます。 Azureポータルの新しいバージョンでは、関連するディスクとそのストレージアカウントのVMを、隣接する垂直ペインで明確に簡単に識別でき、すべて1つのページに異なるアイコン画像があります。

0
vembutech

GUIに依存してAzureを管理していて、PowerShellを使用したり、他の回答を行うことを考えていない人のために、ストレージを削除するときに「添付されていないイメージを削除」をチェックすることで、スタックストレージアカウントを削除できるようになりました。

面倒なことなくストレージを自動的に削除します。

0
Vylix

新しいストレージポータルを介してAzureストレージアカウントを削除することもありますが、削除してこのエラーを取得することはできません。」ストレージアカウント 'jason1disks796'を削除できませんでした。エラー:アーティファクトが使用されているため、ストレージアカウントを削除できません。

PowerShellを使用して、ストレージアカウントのすべてのVHD BLOBを一覧表示できます(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

ストレージアカウントがASMモジュールにある場合、このスクリプトを使用してストレージアカウントを削除できます。

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

また、別のシナリオがあります。このストレージアカウントにコンテナーまたはBLOBがありません(空のストレージアカウント、PowerShellまたはポータルを介してこのストレージアカウントにBLOBまたはコンテナーが見つかりません)、ポータルを使用してストレージアカウントを削除します。エラーメッセージ」ストレージアカウント 'jason1disks796'を削除できませんでした。エラー:アーティファクトが使用されているため、ストレージアカウントを削除できません。」 このシナリオでは、新しいVMを作成し、問題のあるストレージアカウントにストレージアカウントを指定してから、再度削除できます。

0
Jason Ye