解决ServerStatus云探针无法获取硬盘信息一例
不知道为啥有些VPS上无法通过psutil获取硬盘信息,使用psutil.disk_partitions()
总是返回空
ServerStatus里获取硬盘信息的核心代码如下:
def get_hdd():
valid_fs = [ "ext4", "ext3", "ext2", "reiserfs", "jfs", "btrfs", "fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs" ]
disks = dict()
size = 0
used = 0
for disk in psutil.disk_partitions():
if not disk.device in disks and disk.fstype.lower() in valid_fs:
disks[disk.device] = disk.mountpoint
for disk in disks.itervalues():
usage = psutil.disk_usage(disk)
size += usage.total
used += usage.used
return int(size/1024.0/1024.0), int(used/1024.0/1024.0)
使用如上代码后,在不支持psutil获取硬盘信息的VPS上就会返回0
所以就重新修改一下,改为使用os.statvfs方法来获取硬盘信息
p.s 使用statvfs方法仅能获取到指定挂载路径的信息
def get_hdd():
import os
hd={}
#使用statvfs方法仅能获取到指定挂载路径的信息,使用df -h查看
disk = os.statvfs("/")
hd['capacity'] = int(disk.f_bsize * disk.f_blocks/1024/1024)
hd['used'] = int(disk.f_bsize * disk.f_bfree/1024/1024)
return hd['capacity'],hd['used']
修改后即可成功获取到 挂载点为 根目录 /
的磁盘信息