Как удалить учетную запись 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.

Попытка удалить сам blob (VHD на 30 ГБ) в Azure Storage Explorer Я получаю эту ошибку:

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

Итак, моя оценка заключается в том, что этот blob арендуется (предыдущей, теперь удаленной виртуальной машиной), и я не могу удалить его, если я не могу получить этот идентификатор аренды.

Возникает вопрос: как я могу удалить этот blob и, следовательно, учетную запись хранилища?

Ответ 1

Ключом к решению является сообщение о том, что контейнер имеет активный артефакт диска и совет по его удалению из репозитория.

Процедура удаления образа диска из репозитория blob:

После этого учетную запись хранилища можно удалить.

Примечания:

  • Это применимо, даже если вы уже удалили все свои виртуальные машины и отобразили 0; все еще будут артефакты под вкладкой дисков.
  • Диски удаляются из удаленной виртуальной машины асинхронно, это может занять несколько минут после удаления виртуальной машины для этого поля, чтобы очистить.

См. также: Невозможно удалить VHD, "В настоящее время существует аренда на blob..."

Ответ 2

К сожалению, Fernando answer не работал у меня, поскольку хранилище было "сиротой", поскольку я удалил его виртуальную машину перед удалением хранилища. Я не смог найти способ сделать это с портала, поэтому я установил 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>

Ответ 3

К сожалению, есть случай, когда виртуальная машина была удалена, но на дисках показана виртуальная машина, прикрепленная к блобу (30 ГБ VHD), исключающая удаление. Также есть случай использования Azure Storage Explorer, который вы нашли orfan, но арендованный VHD-блок, который не может быть удален, и нет ссылки на портал предварительного просмотра.

Ответ 4

Перейдите на виртуальные машины, затем нажмите диски. Отметьте диск и выберите "Удалить диск" внизу. Теперь вы можете выбрать, хотите ли вы сохранить или удалить соответствующий VHD.

Важно сначала удалить диск с помощью виртуальных машин, чтобы не удалять их через хранилище.

Ответ 5

Вы можете использовать Iaas Management Studio: сломать аренду, удалить blob, а затем удалить осироченное изображение.

Ответ 6

В моем случае хранилище невозможно удалить из-за vmimages.

Использовать команду оболочки питания

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

чтобы отобразить все изображения Чтобы удалить ВСЕ ВАШИ ИЗОБРАЖЕНИЯ, используйте следующий script:

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

Ответ 7

Как F.M. уже заявлено; существует сценарий, при котором при удалении виртуальной машины диск по-прежнему отображается как подключенный к виртуальной машине, даже если виртуальная машина была удалена.

Для меня это произошло потому, что у меня был установлен лимит расходов. Когда предел расходов падает, ваши услуги отключены. Все VPN-шлюзы, созданные вами, и виртуальные машины будут удалены. Затем, чтобы закрыть его, диски, прикрепленные к удаленным виртуальным машинам, все еще считают, что они прикреплены: (

Я нашел этот блог, который объясняет проблему и показывает, как использовать powershell для решения.

Надеюсь, это поможет другим пользователям.

Ответ 8

Перед проверкой учетной записи хранилища проверьте, для каждой учетной записи хранилища должны быть связанные виртуальные машины (ы), диски и изображения. Перейти на портал Azure

Выберите вкладку "Виртуальные машины" на левой панели Нажмите "Экземпляры изображений и дисков"

Обратите внимание, что на отдельных виртуальных машинах есть прикрепленные диски, которые отображаются в области Диски. Перед удалением виртуальной машины сначала удалите связанные диски и удалите виртуальную машину с помощью второго диска. Затем удалите последнюю учетную запись хранилища. Также обратите внимание на сеть в той же левой панели, если она связана с учетной записью, которую вы хотите удалить.

В новом обновленном портале Azure многие из вышеперечисленных страниц конфигурации изменены. Параметры "Изображения и диски" отображаются на панели "Все ресурсы". В новой версии портала Azure вы можете легко идентифицировать связанные с ним диски и учетную запись хранилища на смежных вертикальных панелях на одной странице с различными изображениями значков.

Ответ 9

Иногда мы с помощью нового портала удаляем учетную запись azure storage, но мы не можем удалить ее и получить эту ошибку: "Не удалось удалить учетную запись" jason1disks796 ". Ошибка: Учетная запись хранилища не может быть удалена из-за ее артефактов будучи в использовании."

Мы можем использовать PowerShell для перечисления всех блоков VHD учетной записи хранилища (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, вы можете использовать этот script для удаления учетной записи хранилища:

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 ( пустой учетной записи хранилища, мы не можем найти blob или контейнер в этой учетной записи хранилища через PowerShell или портал), когда мы используем портал для удаления учетной записи хранилища и сообщение об ошибке "Не удалось удалить учетную запись" jason1disks796 ". Ошибка: учетная запись хранилища не может быть удалена из-за использования ее артефактов". В этом сценарии мы можем создать новую виртуальную машину и указать учетную запись хранилища для проблемной учетной записи хранилища, а затем удалить ее еще раз.

Ответ 10

Для тех, кто использует графический интерфейс для управления Azure и не имеет представления об использовании PowerShell или других ответах, теперь вы можете удалить застрявшую учетную запись хранилища, установив флажок "Удалить неприкрепленные изображения" при попытке удалить хранилище.

Это автоматически удалит хранилище без особых хлопот.