我正在从azure ARM中删除VM。当我使用java-sdk删除VM时,VM已成功删除,但磁盘和网络未被删除。它将VHD文件保存在存储中。我试图分离磁盘,但同样它会从VM分离磁盘但不删除VHD。
删除VM: -
azure.virtualMachines().delete("resourceGroupName", "vmName");
分离磁盘: -
azure.virtualMachines().getByGroup("resourceGroupName", "vmName");
vm.update().withoutDataDisk("diskName").apply();
即使在执行上述操作之后,VHD文件也存在于存储器中。 当我删除VM时,如何永久删除所有连接的磁盘?
答案 0 :(得分:0)
@PawanSharma,据我所知,如果你想删除一次虚拟机及其相关的所有资源,你只需要删除包含虚拟机和所有其他资源的资源组,或者手动删除这些资源。
根据您的代码,我判断您使用的是Azure SDK for Java的1.0.0-beta
版本,因此我建议您尝试使用以下代码来执行此操作。
azure.resourceGroups().delete("<resource-group-name>");
作为参考,您可以参考GitHub上的sample code。
与此同时,没有Azure SDK的另一种方式是使用Azure REST API Delete a resource group
,我认为这是更清晰的理解方式。
答案 1 :(得分:0)
Azure-Storage解决了这个问题。您必须从附加的存储帐户中删除blob vhd文件。
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient cloudBlobClient = cloudStorageAccount.createCloudBlobClient();
Iterable<CloudBlobContainer> containersList= cloudBlobClient.listContainers();
for(CloudBlobContainer container:containersList)
{
String currentContainerName = container.getName();
logger.debug("Current Container Name : "+currentContainerName);
CloudBlobContainer blobContainer = cloudBlobClient.getContainerReference(currentContainerName);
CloudPageBlob pageBlob = blobContainer.getPageBlobReference(diskName);
if(pageBlob.exists())
return pageBlob.deleteIfExists();
}
更多详情请参阅azure storage git