本文参考azure-virtual-machines-disks-types
欢迎大佬指点
一、磁盘使用
AzureResourceManager azureResourceManager = getAzureResourceManager();
azureResourceManager.virtualMachines()
.define("vmName")
.withRegion(Region.ASIA_EAST)
.withNewResourceGroup("groupName")
.withExistingPrimaryNetwork(azureResourceManager.networks().getById("netId"))
.withSubnet("subName")
.withPrimaryPrivateIPAddressStatic("166.66.6.66")
.withoutPrimaryPublicIPAddress()
.withLatestLinuxImage("publisher","offer", "sku")
.withRootUsername("root223")
.withRootPassword("asdDsa11102.")
// 30GB标准固态硬盘
.withOSDiskStorageAccountType(StorageAccountTypes.STANDARD_SSD_LRS)
.withOSDiskSizeInGB(30)
// 1核1G前750小时免费
.withSize(VirtualMachineSizeTypes.STANDARD_B1S)
.create();
二、磁盘类型对照
-
磁盘类型(简介->磁盘类型)
标准机械硬盘 -> Standard_LRS 标准固态硬盘 -> StandardSSD_LRS 高级 SSD -> Premium_LRS 高级 SSD V2 -> PremiumV2_LRS 超级磁盘 -> UltraSSD_LRS StandardSSD分区冗余存储 -> Premium_ZRS Premium SSD分区冗余存储 -> StandardSSD_ZRS
-
磁盘大小
选择完磁盘类型后还需确定磁盘大小默认30GB(名称->属性名)
属性名为段落三查询出的属性
磁盘类型名称 name 性能等级名称 size 磁盘大小 (GiB) capabilities.MaxSizeGiB IOPS capabilities.MaxIOps 扩展IOPS capabilities.MaxIOpsPerformancePlus 磁盘吞吐量 capabilities.MaxBandwidthMBps 扩展吞吐量 capabilities.MaxBandwidthMBpsPerformancePlus 最大突发IOPS capabilities.MaxBurstIops 最大突发吞吐量 capabilities.MaxBurstBandwidthMBps 最大突发持续时间 capabilities.MaxBurstDurationInMin
三、磁盘类型数据拉取
与拉取nic一样都是从sku查,其中需要过滤ComputeResourceType.DISKS、Region.ASIA_EAST
AzureResourceManager azureResourceManager = getAzureResourceManager();
PagedIterable<ResourceSkuInner> list = azureResourceManager
.virtualMachines()
.manager()
.serviceClient()
.getResourceSkus()
.list();
// 使用 Set 来存储已经出现过的 sku.name(),保证不重复
Set<String> uniqueNames = new HashSet<>();
for (ResourceSkuInner sku : list) {
if (ComputeResourceType.DISKS.toString().equals(sku.resourceType())) {
String name = sku.name();
List<String> locations = sku.locations();
if (!uniqueNames.contains(sku.name()) && (locations.contains(Region.ASIA_EAST.label()) || locations.contains(Region.ASIA_EAST.name()))) {
// 如果当前 sku.name() 没有出现过,则添加到 uniqueNames 集合中,并保留这个 sku 作为第一个唯一的 sku
uniqueNames.add(sku.name());
// 将 capabilities 转换为一个 Map,并直接添加到 dataMap 中
Map<String, String> capabilityMap = sku.capabilities().stream()
.collect(Collectors.toMap(ResourceSkuCapabilities::name, ResourceSkuCapabilities::value));
// 添加 name 和 capabilityMap 到 dataMap
capabilityMap.put("name", name);
capabilityMap.put("size",sku.size());
// 统一格式 秒->分
String maxBurstDurationInMin = capabilityMap.get("MaxBurstDurationInMin");
if(null != maxBurstDurationInMin){
capabilityMap.put("MaxBurstDurationInMin", String.valueOf(Integer.parseInt(maxBurstDurationInMin) / 60));
}
dataMaps.add(capabilityMap);
}
}
}