如何使用Azure Python SDK检查VM的磁盘大小?

时间:2018-01-25 18:03:28

标签: azure azure-storage azure-virtual-machine azureportal azure-sdk-python

当我使用Azure创建虚拟机时,例如标准A6,它配备了2个已安装的设备,一个配备30GB,另一个配备285GB。当我ssh到VM时,我可以看到这一点。从Azure门户,我可以看到30GB存储,但不是285GB存储。但是,当我使用Azure计算器时,我可以看到标准A6机器有285GB的临时空间。

  • 这个临时空间是什么?它是什么意思"临时"?
  • 如何自动检查磁盘大小?我需要从python执行此操作,因为我正在云代理门户上工作,该门户将向用户显示计算机的磁盘大小。
  • 如何手动检查磁盘大小?我无法在Azure门户中的VM资源或存储帐户中看到它。我发现这个信息的唯一地方是Azure计算器,这是一个很好的解决方法。

修改: 虽然我可以通过Azure门户和SDK访问该计算机,但我无法进入创建的虚拟机(这是我无法更改的项目要求),因此在其中运行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.

2 个答案:

答案 0 :(得分:1)

  

这个临时空间是什么?这是什么意思“临时”?

您可以查看official document

默认情况下,在创建VM时,Azure会为您提供操作系统磁盘(/ 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大小的VM。)

  

如何手动检查磁盘大小?我无法在VM中看到它   Azure门户中的资源或存储帐户。我唯一的地方   发现这些信息来自Azure计算器,它有点像   解决方法。

您可以查看问题2.

更新

是的,您可以使用Azure Python SDK来获取VM OS /数据磁盘大小。例如:

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

请参阅此link中的Azure Python SDK。

答案 1 :(得分:0)

1 - 回答关于临时存储的问题:“临时存储的目的是什么? 此临时存储用于保存系统页面文件。您也可以仅使用此驱动器存储临时数据,您可以随时丢失。例如:如果您的工作流程涉及从blob获取内容,请对其进行处理然后,您可以将内容下载到临时存储,处理内容,然后处理已处理的内容并将其保存回blob。“更多详情可在此处找到:https://blogs.msdn.microsoft.com/mast/2013/12/06/understanding-the-temporary-drive-on-windows-azure-virtual-machines/

2 - 使用Python检查磁盘大小,我建议您检查:Find size and free space of the filesystem containing a given file 建议是:

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的挂载点/文件系统的磁盘空间使用信息。 更多信息:https://www.cyberciti.biz/faq/linux-check-disk-space-command/