Azure PowerShell kullanarak eklenmemiş Azure yönetilen ve yönetilmeyen diskleri bulma ve silme
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri
Azure'da bir sanal makineyi (VM) sildiğinizde, varsayılan olarak VM'ye bağlı diskler silinmez. Bu özellik sanal makinelerin yanlışlıkla silinmesinden kaynaklanabilecek veri kaybını önler. Vm silindikten sonra, eklenmemiş diskler için ödeme yapmaya devam edebilirsiniz. Bu makalede, eklenmemiş diskleri bulup silme ve gereksiz maliyetleri azaltma işlemleri gösterilmektedir.
Not
Herhangi bir disk için değerini almak LastOwnershipUpdateTime
için Get-AzureDisk komutunu kullanabilirsiniz. Bu özellik, diskin durumunun en son ne zaman güncelleştirilmiş olduğunu temsil eder. Eklenmemiş bir disk için bu, diskin bağlı olmayan zamanını gösterir. Yeni oluşturulan disklerin durumu değişene kadar bu özellik boştur.
Yönetilen diskler: Eklenmemiş diskleri bulma ve silme
Aşağıdaki betik, ManagedBy özelliğinin değerini inceleyerek eklenmemiş yönetilen diskleri arar. Yönetilen disk bir VM'ye eklendiğinde ManagedBy özelliği VM'nin kaynak kimliğini içerir. Yönetilen diskin eki kaldırıldığında ManagedBy özelliği null değeridir. Betik, bir Azure aboneliğindeki tüm yönetilen diskleri inceler. Betik ManagedBy özelliği null olarak ayarlanmış bir yönetilen disk bulursa, betik diskin bağlı olmadığını belirler.
Önemli
İlk olarak, deleteUnattachedDisks değişkenini 0 olarak ayarlayarak betiği çalıştırın. Bu eylem, eklenmemiş tüm yönetilen diskleri bulmanıza ve görüntülemenize olanak tanır.
Tüm eklenmemiş diskleri gözden geçirdikten sonra betiği yeniden çalıştırın ve deleteUnattachedDisks değişkenini 1 olarak ayarlayın. Bu eylem, eklenmemiş tüm yönetilen diskleri silmenize olanak tanır.
# 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
}
}
}
Yönetilmeyen diskler: Eklenmemiş diskleri bulma ve silme
Yönetilmeyen diskler, Azure depolama hesaplarında sayfa blobları olarak depolanan VHD dosyalarıdır. Aşağıdaki betik, LeaseStatus özelliğinin değerini inceleyerek eklenmemiş yönetilmeyen diskleri (sayfa blobları) arar. Bir VM'ye yönetilmeyen bir disk eklendiğinde LeaseStatus özelliği Kilitli olarak ayarlanır. Yönetilmeyen bir disk eklenmediğinde LeaseStatus özelliği Kilidi Açık olarak ayarlanır. Betik, bir Azure aboneliğindeki tüm Azure depolama hesaplarındaki tüm yönetilmeyen diskleri inceler. Betik, LeaseStatus özelliği Kilidi Açık olarak ayarlanmış yönetilmeyen bir disk bulursa, betik diskin bağlı olmadığını belirler.
Önemli
İlk olarak, deleteUnattachedVHDs değişkenini olarak $false
ayarlayarak betiği çalıştırın. Bu eylem, tüm eklenmemiş yönetilmeyen VHD'leri bulmanızı ve görüntülemenizi sağlar.
Tüm eklenmemiş diskleri gözden geçirdikten sonra betiği yeniden çalıştırın ve deleteUnattachedVHDs değişkenini olarak $true
ayarlayın. Bu eylem, tüm eklenmemiş yönetilmeyen VHD'leri silmenize olanak tanır.
# 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
}
}
}
}
}
Sonraki adımlar
Daha fazla bilgi için bkz . Depolama hesabını silme ve PowerShell Kullanarak Yalnız Bırakılmış Diskleri Tanımlama
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin