Azure · Discos

Azure: eliminar discos no adjuntos

Hoy el post cubrirá Delete unattached disks y forma parte de la Azure Savings serie que cubre formas de ahorrar dinero en Azure.

Una vez escuché, y desde entonces uso esta analogía, que usar recursos en la nube es similar a usar electricidad: mientras más se use, más caro será. Aunque también puedes ahorrar dinero si aplicas a la nube lo que actualmente haces para la electricidad

¡Apaga las cosas que no están en uso!

Otras entradas de la serie Azure Savings
Azure Savings Scheduled Shutdown and Startup of Virtual Machines

Storage Type

Azure ofrece diferentes Storage Types para diferentes propósitos, y para almacenar discos de Virtual Machines encontrarás Managed Disks y Unmanaged Disks (page blobs)

A pesar de que Unmanaged Disks siguen siendo compatibles con Azure, la recomendación es usar Managed Disks ya que proporcionan High Fault tolerance, Industry-leading availability y Greated scale.

How do I get unattached disks?

Por defecto, cuando eliminas una máquina virtual sus discos no se eliminan.  Según Microsoft, esto ayuda a evitar la pérdida de datos debido a la eliminación involuntaria de VMs.

How unattached disks are billed?

Los unattached disks se facturan incluso cuando no están siendo usados por una Virtual Machine, porque estás usando espacio de almacenamiento. Para evitar sorpresas, deberías estar consciente de estos costos.

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

La imagen anterior demuestra el costo por un día de un Standard HDD Managed Disk, US$0.88/día (~US$26.4/mes).

IMPORTANT: Los costos pueden variar, dependiendo del Storage Type, Storage Tier y Storage Account Type (para unmanaged disks)

When I should delete unattached disks?

Dado que los unattached disks son el resultado de eliminar Virtual Machines, y Microsoft dice que esto ayuda a prevenir la pérdida de datos, te recomendaría identificar los discos y determinar si ya no los necesitas, porque la eliminación es una acción permanente y no se puede deshacer.

How to identify unattached disks?

Puedes verificar a través de Azure Portal o usando Powershell, y si no estás seguro sobre Managed Disks y Unmanaged Disks también es posible revisar ambos

Azure Portal

[trp_language language="en_US"]

[/trp_language]
[trp_language language="pt_BR"]

[/trp_language]

Powershell

[trp_language language="en_US"]

[/trp_language]
[trp_language language="pt_BR"]

[/trp_language]

Powershell Managed Disks

# 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 Unmanaged Disks

# 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
                    }
            }
        }
    }
}

And that’s it

Espero que te haya gustado, y nos vemos en mi próxima publicación

Foto por Sharon McCutcheon en Unsplash

AzureAzure Máquina VirtualDiscosUnattached DisksVirtual Machine
Azure: eliminar discos no adjuntos — Vinicius Deschamps