[Azure]ARM模式下批量清理未使用的托管磁盘

原创 2017年10月11日 16:06:25

Azure ARM模式下提供了托管磁盘这种磁盘管理方式,虚拟机不用了之后删除掉,磁盘会残留下来造成资源浪费,可以使用下面的脚本进行批量清理。

脚本调用 Invoke-Parallel 来实现并发操作,提高清理效率。内容和思路比较简单,脚本内容如下:

$scriptSrc = "http://danielnorthstorage.blob.core.chinacloudapi.cn/fordownload/Invoke-Parallel.ps1";
$dest = ".\tmpScript.ps1";
$wc = New-Object System.Net.WebClient;
$wc.DownloadFile($scriptSrc, $dest);

# import the functions in the script file
. ".\tmpScript.ps1";

$subscriptions = Get-AzureRmSubscription;

foreach($subscription in $subscriptions)
{
    if ($subscription.State -eq "Disabled")
    {
        continue;
    }
    Write-Host ("Subscription : {0}" -f $subscription.SubscriptionName);
    [void](Select-AzureRmSubscription -SubscriptionName $subscription.SubscriptionName);
    $disks = Get-AzureRmDisk;
    $unUsedDisks = $disks | where {$_.OwnerId -eq $null};
    Write-Host "Remove managed disks:";
    foreach ($unUsedDisk in $unUsedDisks)
    {
        Write-Host ("Removing managed disk {0}(ResourceId:{1})" -f $unUsedDisk.Name, $unUsedDisk.Id);
    }
    $unUsedDisks | Invoke-parallel -ImportVariables -NoCloseOnTimeout -ScriptBlock { [void](Remove-AzureRmDisk -ResourceGroupName $_.ResourceGroupName -DiskName $_.Name -Force); };
}

Remove-Item -Path ".\tmpScript.ps1";

测试下来运行效率挺高,7个订阅下的100多块未使用的托管磁盘2分钟左右就清理干净了。调用的时候遇到 Invoke-Parallel 方法调用报错,有几块磁盘没有清理掉,等执行完了再执行一次清理掉残留的就好了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

[Azure]使用Powershell清理ARM中的无效资源

Azure ARM模式将资源进一步细化,比经典模式要更为灵活,但是带来的的问题是,资源整理和维护起来就要更为琐碎。举一个比较实际的例子,创建了一台虚拟机,会为虚拟机指定虚拟网络(对应子网会生成网络接口...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年01月07日 23:34
  • 447

[Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机

如题,使用Powershell将一个账号中所有订阅下ARM模式的存储账号过一遍,将其中的vhd文件对应的虚拟机找出来汇总成表。 脚本如下: $Cred = New-Object System.Ma...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年03月08日 21:28
  • 343

[Azure]ARM虚拟机整机磁盘快照[4]——从快照还原虚拟机

这个还原脚本有一个小前提,就是原虚拟机不能先删除,原因是为了简化操作和参数,脚本会从原来虚拟机的属性中读取资源组,虚拟网络,可用性集等属性,然后直接利用原虚拟机的某个时间点的快照在和原虚拟机同一子网下...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年08月05日 12:55
  • 330

Azure虚拟机挂载数据磁盘

Azure动手实验 说明 Azure虚拟机由于存在临时磁盘,默认Windows为D盘,Linux为/dev/sdb1,临时盘中的数据不能长期保留,而我们在使用过程中又不希望数据丢失,所以需要挂载新的数...
  • m0_37973810
  • m0_37973810
  • 2017年06月07日 10:42
  • 451

Azure虚拟机磁盘扩展

Azure动手实验 磁盘扩展需要先将虚拟机解除分配,数据磁盘也可以在卸载后进行扩展。 将虚拟机解除分配前需要考虑IP动态变化的问题。 虚拟机(经典) 获取磁盘信息 Get-AzureDisk |fl ...
  • m0_37973810
  • m0_37973810
  • 2017年06月06日 12:51
  • 282

在 Windows Azure 虚拟机中如何备份和还原 Windows 系统磁盘

备份和还原对于操作真实的系统来说至关重要。对于 Windows Azure 虚拟机环境中的 Windows Server,可以根据自身的需求选择多种不同的工具或将这些工具结合使用来实现备份。下面将对这...
  • azurechina
  • azurechina
  • 2013年08月02日 00:19
  • 1533

如何为Azure虚拟机附加磁盘

通过PowerShell附加磁盘,本示例在虚拟机"pstest"上测试。#获取虚拟机上数据磁盘的详细信息$vm=Get-AzureVM -ServiceName 'pstest' -Name 'pst...
  • Denny_Duan77
  • Denny_Duan77
  • 2016年04月25日 18:00
  • 3969

关于Azure虚拟机临时盘

虚拟机中本地盘,或者说临时盘,例如:Windows Server虚拟机中的D盘,是不适合存储持久化数据的,因为当虚拟机被后台控制器转移到其他机柜的时候,存在在临时盘的数据会丢失。结合一些恰好是临时性使...
  • Denny_Duan77
  • Denny_Duan77
  • 2015年02月26日 14:01
  • 1128

azure 微软云 规范挂载附加数据磁盘

azure云上面,一般系统盘都很小,空间基本不够使用,所以我们需要附加磁盘,首先在管理界面附加一个SSD磁盘,一般默认的是/dev/sdc目录。 1,先使用fdisk进行磁盘分区,一般直接分成一个区[...
  • mchdba
  • mchdba
  • 2017年04月23日 00:01
  • 1497

Ubuntu 网络管理器显示“设备未托管”的解决办法

造成问题的原因: Linux里面有两套管理网络连接的方案: 1、/etc/network/interfaces(/etc/init.d/networking) 2、Network-M...
  • hackeraaa
  • hackeraaa
  • 2015年12月27日 11:55
  • 1605
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Azure]ARM模式下批量清理未使用的托管磁盘
举报原因:
原因补充:

(最多只允许输入30个字)