如何使用Azure Python SDK检查虚拟机的磁盘大小?

如何使用Azure Python SDK检查虚拟机的磁盘大小?,azure,azure-storage,azure-virtual-machine,azureportal,azure-sdk-python,Azure,Azure Storage,Azure Virtual Machine,Azureportal,Azure Sdk Python,当我用Azure创建一个VM时,例如一个标准A6,它有两个挂载单元,一个30GB,另一个285GB。我可以在ssh到VM时看到这一点。从Azure门户中,我可以看到30GB的存储空间,但不能看到285GB的存储空间。然而,当我转到Azure计算器时,我可以看到标准A6机器有285GB的临时空间 这个临时空间是什么?什么是暂时的? 如何自动检查磁盘大小?我需要从python中执行此操作,因为我正在开发一个云代理门户,它将向用户显示计算机的磁盘大小。 如何手动检查磁盘大小?我无法在VM资源或Azur

当我用Azure创建一个VM时,例如一个标准A6,它有两个挂载单元,一个30GB,另一个285GB。我可以在ssh到VM时看到这一点。从Azure门户中,我可以看到30GB的存储空间,但不能看到285GB的存储空间。然而,当我转到Azure计算器时,我可以看到标准A6机器有285GB的临时空间

这个临时空间是什么?什么是暂时的? 如何自动检查磁盘大小?我需要从python中执行此操作,因为我正在开发一个云代理门户,它将向用户显示计算机的磁盘大小。 如何手动检查磁盘大小?我无法在VM资源或Azure门户中的存储帐户中看到它。我唯一能找到这些信息的地方是Azure计算器,这是一个需要解决的问题。 编辑: 虽然我可以通过Azure门户和SDK访问该机器,但我无法通过ssh连接到创建的虚拟机。这是一个项目要求,我无法更改,因此在其中运行bash命令不是一个选项

我找到了一些似乎可以实现我需要的东西,但似乎不起作用:

vm = cmc.virtual_machines.get(GROUP_NAME, VM_NAME)
os_disk_name = vm.storage_profile.os_disk.name
cmc.disks.get(GROUP_NAME, os_disk_name)
---------------------------------------------------------------------------
CloudError                                Traceback (most recent call last)
<ipython-input-39-818c4d1cac7d> in <module>()
----> 1 cmc.disks.get(GROUP_NAME, os_disk_name)
~/lib/python3.6/site-packages/azure/mgmt/compute/v2017_03_30/operations/disks_operations.py in get(self, resource_group_name, disk_name, custom_headers, raw, **operation_config)
    285             exp = CloudError(response)
    286             exp.request_id = response.headers.get('x-ms-request-id')
--> 287             raise exp
    288 
    289         deserialized = None
CloudError: Azure Error: ResourceNotFound
Message: The Resource 'Microsoft.Compute/disks/myosdisk' under resource group GROUP_NAME was not found.
1-回答您有关临时存储的问题:临时存储的目的是什么? 此临时存储用于保存系统分页文件。您也可以仅使用此驱动器来存储临时数据,您可以随时丢失这些数据。例如:如果您的工作流涉及从blob获取内容,对其进行处理并将其存储回blob,则您可以将内容下载到临时存储,处理内容,然后获取已处理的内容并将其保存回blob。更多详细信息可在此处找到:

2-使用Python检查磁盘大小,我建议检查: 建议是:

import subprocess
df = subprocess.Popen(["df", "filename"], stdout=subprocess.PIPE)
output = df.communicate()[0]
device, size, used, available, percent, mountpoint = \
    output.split("\n")[1].split()
3-当您使用SSH连接到VM时,您可以使用以下信息之一,具体取决于您的发行版:

a-df命令–显示Linux文件系统上已使用和可用的磁盘空间量

b-du命令–显示指定文件和每个子目录使用的磁盘空间量

c-btrfs fi df/device/–显示基于btrfs的装载点/文件系统的磁盘空间使用信息。 更多信息请点击此处:

这个临时空间是什么?什么是暂时的

你可以检查一下

默认情况下,创建VM时,Azure会为您提供一个OS磁盘/dev/sda和一个临时磁盘/dev/sdb。您添加的所有其他磁盘显示为/dev/sdc、/dev/sdd、/dev/sde等等。临时磁盘/dev/sdb上的所有数据都不是持久的,如果特定事件(如VM大小调整、重新部署或维护)强制重新启动VM,这些数据可能会丢失。临时磁盘的大小和类型与部署时选择的VM大小有关

如何自动检查磁盘大小?我需要从一开始就这样做 python,因为我正在开发一个云代理门户,它将显示 计算机对用户的磁盘大小

Azure Python SDK支持检查操作系统磁盘和数据磁盘大小,但不支持检查临时磁盘。临时磁盘仅取决于VM大小。它不支持更改大小。您可以ssh到您的VM。执行df-h。默认情况下,您将看到以下内容:

root@shui:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.7G     0  1.7G   0% /dev
tmpfs           342M  4.9M  338M   2% /run
/dev/sda1        30G  1.3G   28G   5% /
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
/dev/sdb1        59G   52M   56G   1% /mnt
/dev/sdb1是临时空间。注意:结果取决于你的Linux系统,我在Ubuntu 16.04上测试。A2大小的虚拟机

如何手动检查磁盘大小?我在虚拟机中看不到它 Azure门户中的资源或存储帐户。我唯一想去的地方 发现此信息来自Azure计算器,这有点 一种变通方法

你可以检查问题2

更新:

是的,您可以使用Azure Python SDK获取虚拟机操作系统/数据磁盘大小。例如:

rg = 'shuicli'
name = 'shui'
vm = compute_client.virtual_machines.get(rg,name)
##get OS disk size(GB)
print vm.storage_profile.os_disk.disk_size_gb
datadisks = vm.storage_profile.data_disks
##get data disk size(GB)
for i in datadisks:
    print i.disk_size_gb

请在此查看Azure Python SDK。

谢谢您的回答。你说Azure Python SDK支持检查操作系统磁盘和数据磁盘大小-你能给我指一下这方面的文档吗?我一直在搜索,但在官方文档或示例中找不到它。我尝试过computemanagementclient,如下所示:vm=cmc.virtual\u machines.getGROUP\u NAME,vm\u NAME;os_disk_name=vm.storage_profile.os_disk.name;cmc.disks.getGROUP_NAME,os_disk_NAME,但出现错误:CloudError:Azure错误:ResourceNotFound;消息:未找到资源组组名称下的资源“Microsoft.Compute/disks/myosdisk”。@zapatilla,您可以特别使用:os\u disk\u NAME=virtual\u machine.storage\u profile.os\u disk.NAME os\u disk=Compute\u client.disks.getGROUP\u NAME,os_disk_name页面中有一个示例,可以让您了解如何使用它。@zapatilla是的,您可以使用Azure Python SDK获取os/数据磁盘大小。@AdamSmith MSFT是的,您是对的,我添加了一个示例。感谢您的回答。我将编辑我的问题并添加更多细节。我们无法将ssh连接到我们创建的资源中,因此不可能运行df。我们需要使用Azure Python SDK。