如何使用Azure Python SDK检查虚拟机的磁盘大小?
当我用Azure创建一个VM时,例如一个标准A6,它有两个挂载单元,一个30GB,另一个285GB。我可以在ssh到VM时看到这一点。从Azure门户中,我可以看到30GB的存储空间,但不能看到285GB的存储空间。然而,当我转到Azure计算器时,我可以看到标准A6机器有285GB的临时空间 这个临时空间是什么?什么是暂时的? 如何自动检查磁盘大小?我需要从python中执行此操作,因为我正在开发一个云代理门户,它将向用户显示计算机的磁盘大小。 如何手动检查磁盘大小?我无法在VM资源或Azure门户中的存储帐户中看到它。我唯一能找到这些信息的地方是Azure计算器,这是一个需要解决的问题。 编辑: 虽然我可以通过Azure门户和SDK访问该机器,但我无法通过ssh连接到创建的虚拟机。这是一个项目要求,我无法更改,因此在其中运行bash命令不是一个选项 我找到了一些似乎可以实现我需要的东西,但似乎不起作用:如何使用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
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。