Azure remover discos não utilizados

Avatar de Vinicius

O artigo de hoje abordará Remover discos não utilizados e faz parte da série de posts que auxiliam a poupar dinheiro ao utilizar recursos no Azure.

Uma vez ouvi, e uso desde então esta analogia, que usar recursos da nuvem é semelhante a usar eletricidade: quanto mais você usa, mais caro fica. Porém, você também pode economizar dinheiro se aplicar à nuvem o que você faz atualmente com eletricidade

Desligue o que está em uso!

Tipos de Storage

O Azure oferece diferentes tipos de armazenamento para diferentes finalidades, e para armazenar discos de máquinas virtuais você encontrará discos gerenciados (managed disks) e discos não-gerenciados (unmanaged disks)

Apesar dos discos não-gerenciados ainda serem suportados pelo Azure, a recomendação é usar discos gerenciados, pois eles fornecem alta tolerância a falhas, maior disponibilidade e grande escala.

Como obtenho discos que não estão sendo utilizados?

Por padrão, quando você exclui uma máquina virtual, seus discos não são excluídos. Segundo a Microsoft, isso ajuda a evitar a perda de dados devido à exclusão não intencional de VMs.

Como discos não utilizados são cobrados?

Os discos não utilizados também são cobrados, porque você está usando um espaço de armazenamento. Para evitar surpresas você deve estar atento a estes custos.

azure cost management cost analysis storage price 1 day blog vinicius deschamps

A imagem acima mostra o custo de um dia de um disco gerenciavél Standard HDD US$0.88/dia (~US$26.4/mês).

IMPORTANTE: Os custos podem variar, dependendo do tipo de armazenamento, nível de armazenamento e tipo de conta de armazenamento (para discos não gerenciados)

Quando devo excluir discos não utilizados?

Como a maioria destes discos são resultado de máquinas virtuais excluídas, e a Microsoft diz que isso ajuda a evitar a perda de dados, recomendo identificar tais discos e determinar se você não precisa mais deles, porque a exclusão é uma ação permanente e não pode ser desfeita.

Como identificar discos não utilizados?

Você pode verificar através do Portal do Azure ou usando o Powershell, e se não tiver certeza sobre Discos Gerenciados e Discos Não Gerenciados também é possível verificar ambos

Azure Portal

Powershell

Powershell Discos Gerenciaveis

# Source https://docs.microsoft.com/en-us/azure/virtual-machines/windows/find-unattached-disks#managed-disks-find-and-delete-unattached-disks
# 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
$managedDisks = Get-AzDisk
foreach ($md in $managedDisks) {
    # ManagedBy property stores the Id of the VM to which Managed Disk is attached to
    # If ManagedBy property is $null then it means that the Managed Disk is not attached to a VM
    if($md.ManagedBy -eq $null){
        if($deleteUnattachedDisks -eq 1){
            Write-Host "Deleting unattached Managed Disk with Id: $($md.Id)"
            $md | Remove-AzDisk -Force
            Write-Host "Deleted unattached Managed Disk with Id: $($md.Id) "
        }else{
            $md.Id
        }
    }
 }

Powershell Discos Não-Gerenciaveis

# Source https://docs.microsoft.com/en-us/azure/virtual-machines/windows/find-unattached-disks#unmanaged-disks-find-and-delete-unattached-disks
# Set deleteUnattachedVHDs=$true if you want to delete unattached VHDs
# Set deleteUnattachedVHDs=$false if you want to see the Uri of the unattached VHDs
$deleteUnattachedVHDs=$false
$storageAccounts = Get-AzStorageAccount
foreach($storageAccount in $storageAccounts){
    $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageAccount.ResourceGroupName -Name $storageAccount.StorageAccountName)[0].Value
    $context = New-AzStorageContext -StorageAccountName $storageAccount.StorageAccountName -StorageAccountKey $storageKey
    $containers = Get-AzStorageContainer -Context $context
    foreach($container in $containers){
        $blobs = Get-AzStorageBlob -Container $container.Name -Context $context
        #Fetch all the Page blobs with extension .vhd as only Page blobs can be attached as disk to Azure VMs
        $blobs | Where-Object {$_.BlobType -eq 'PageBlob' -and $_.Name.EndsWith('.vhd')} | ForEach-Object { 
            #If a Page blob is not attached as disk then LeaseStatus will be unlocked
            if($_.ICloudBlob.Properties.LeaseStatus -eq 'Unlocked'){
                    if($deleteUnattachedVHDs){
                        Write-Host "Deleting unattached VHD with Uri: $($_.ICloudBlob.Uri.AbsoluteUri)"
                        $_ | Remove-AzStorageBlob -Force
                        Write-Host "Deleted unattached VHD with Uri: $($_.ICloudBlob.Uri.AbsoluteUri)"
                    }
                    else{
                        $_.ICloudBlob.Uri.AbsoluteUri
                    }
            }
        }
    }
}

Avatar de Vinicius

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *