尽管任何硬件资源都有可能成为影响虚拟机性能的瓶颈,但存储IOPS往往是限制因素之一。因为存储IOPS往往供不应求,所以虚拟化厂商提供了允许管理员限制虚拟机存储I/O消耗的功能。然而高效率地使用上述功能的关键是了解存储IOPS当前是如何在虚拟机之间分配的。

每个hypervisor厂商都有各自的测量并分配存储IOPS的方式。以微软Hyper-V为例,调节存储IOPS消耗的主要机制借助于QoS管理功能,该功能往往被称为存储QoS。

使用QoS管理

QoS管理设置基于单块虚拟硬盘。如图A所示,该功能可以被用于限制虚拟机消耗更少的存储IOPS。作为一个替代方案,QoS管理可以被用于为虚拟机预留存储IOPS,这样就可以保证虚拟机能够获得的最小IOPS值——如果有更多可用的IOPS,那么虚拟机能够使用的IOPS将相应增加。

  图A. 虚拟硬盘QoS管理配置界面

QoS管理功能允许管理员基于单块虚拟硬盘预留存储IOPS或者对其进行限制。

尽管QoS管理功能很便利,但只有管理员知道可用的存储IOPS有多少以及当前使用情况时,该功能才能够派上用场。不幸的是,Hyper-V Manager并没有提供该信息,但可以使用PowerShell检索与Hyper-V相关的存储性能信息。

虚拟机指标追踪

PowerShell提供了一个名为Measure-VM的cmdlet,使你能够追踪各类虚拟机指标。在能够使用该cmdlet前,需要启用虚拟机的资源消耗计量。输入如下命令可以启用运行在当前Hyper-V服务器上所有虚拟机的资源消耗计量:Get-VM | Enable-VMResourceMetering

输入如下命令可以确认是否已经启用了虚拟机的资源消耗计量:

Get-VM | Select-Object Name, ResourceMeteringEnabled

启用虚拟机的资源消耗计量并且生成了一些计量数据后,你可以使用Measure-VM cmdlet显示虚拟机的资源使用情况。例如,如果你想针对所有虚拟机使用默认的资源计量数据,可以输入如下命令:

Get-VM | Measure-VM

图B显示了启用虚拟机计量、确认虚拟机计量以及用以及显示默认计量数据的过程。

  图B:你可以使用Measure-VM cmdlet显示虚拟机计量数据

如上图所示,资源计量机制运转良好,显示值为零表明虚拟机未启动。然而问题是并没有显示与存储IOPS相关的信息。

显示IOPS数据

尽管Measure-VM cmdlet默认没有显示存储IOPS数据,但可以做到。实际上,cmdlet可以显示每台虚拟机的IOPS平均值、平均延迟情况、磁盘数据写入以及磁盘数据读取情况。

只需要在Measure-VM cmdlet后追加 Select-Object参数就可以显示上述数据,然后指定你想显示的指标即可。然而,务必牢记在生产环境中虚拟机往往位于使用共享存储的故障切换集群中。因此全面获取IOPS数据的唯一方式是查看所有服务器上的所有虚拟机。可以尝试利用如下命令创建一个简单的脚本:

$Servers = "Hyper-V-4", "Prod1"

ForEach ($Server in $Servers){

$VMs = Get-VM

ForEach ($VM in $VMs){

$VM | Measure-VM | Select-Object VMName, ComputerName, AggregatedAverageNormalizedIOPS, AggregatedAverageLatency, AggregatedDiskDataRead, AggregatedDiskDataWritten | Format-List

}

}

脚本的第一行列出了将要被监控的每台Hyper-V主机的名字。简单起见,这里只列出了两台服务器,但你通常要输入所有Hyper-V服务器的名字。该脚本使用循环检查所有的服务器,每次检查一台。然后嵌套循环检索并显示当前服务器上所有虚拟机的性能数据。你可以看到图C中脚本的部分输出结果。脚本列出了每台虚拟机的性能数据、虚拟机名以及虚拟机当前所在的主机服务器。

图C. 脚本显示虚拟机的存储性能数据

Hypervisor功能,比如QoS管理有助于分配存储IOPS。然而为了高效率地使用该功能,你需要知道IOPS目前的使用情况。

====================================分割线================================

本文转自d1net(转载)

如何使用QoS管理分配存储IOPS?相关推荐

  1. 连续分配存储的四种管理方式

    连续分配存储的四种管理方式 连续分配方式指为一个用户程序分配给一个连续的内存空间 单一连续分配 原理:将内存分为用户区和系统区,每次运行时,都将整个用户区分配给当前执行的一道作业 固定分区分配 原理: ...

  2. 数据结构笔记(十三)-- 串的堆分配存储表示

    串的堆分配存储表示 一.堆分配存储概述 堆分配内存仍是一组地址连续的存储单元来存放串值字符序列,但是存储空间实在程序执行过程中动态分配而得.在C语言中,存在一个称为"堆"的自由存储 ...

  3. 堆分配存储结构串的实现|C++

    堆分配存储结构串的实现方法是,提供一个足够大的存储空间.作为串的可利用空间,用来存储各串的串值. 每当建立一个新的串时,系统就从这个空间划分出一个大小和新串相同的空间给新串 若分配成功则返回一个指向起 ...

  4. 串的堆分配存储c语言,数据结构c语言串的堆分配存储源程序

    <数据结构c语言串的堆分配存储源程序>由会员分享,可在线阅读,更多相关<数据结构c语言串的堆分配存储源程序(7页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...

  5. 异构数据统一管理推动存储资源盘活

    随着数据量的爆发式增长,许多企业产生数据的量级由原有的TB 级别迅速的提升到 PB 甚至 EB 级别.企业付出成本来存储这些数据的同时自然也想通过挖掘数据信息辅助商业决策,提升管理效率. 大数据经过了 ...

  6. 5G QoS管理及与DRB映射关系

    前言 无线网络是一个等级森严的体系,一直以来,无线资源都是紧张的,因而无线网络上的各种业务所享受的服务也无法平等.网络需要优先保障重要的业务.比如 相比普通上网的数据业务,音视频数据业务的优先级会更高 ...

  7. Owncloud vs.NextCloud vs.Seafile:你应该选择哪种自管理云存储?

    即使你喜欢使用离线存储,云存储也是必不可少的.但每次使用商业云存储时,不管是免费的还是付费的,你都是向一家公司献出了文件的安全和隐私. 一种可以保证控制权的方法是自己管理存储.那么,自管理云存储是否有 ...

  8. 第五章:管理数据库存储结构

    存储结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 数据存 ...

  9. OCP之5 管理数据库存储结构

    存储结构 一个数据库可划分为多个称为表空间的逻辑存储单元.每个表空间可以包含很多Oracle 逻辑数据块.DB_BLOCK_SIZE 参数指定了逻辑块的大小.逻辑块的大小介于2 KB 到 32 KB ...

最新文章

  1. Java实现在线预览功能
  2. 十五、JavaScript进度条的制作
  3. 43 | 套路篇:网络性能优化的几个思路(上)
  4. unity shader 编辑器扩展类 ShaderGUI
  5. 存储过程批量执行脚本
  6. 【重难点】【JUC 04】synchronized 原理、ReentrantLock 原理、synchronized 和 Lock 的对比、CAS 无锁原理
  7. Ideal配置Struts项目提示Cannot resolve symbol 'xx.jsp',以及没有找到Namespace为/的指定Action的解决
  8. protobuf 安装_Beego 安装时 一直无响应(443)怎么办
  9. iOS 内存管理arc
  10. AD7327 AD芯片使用记录
  11. 入门图形学:ComputeShader
  12. 2019美团技术沙龙合辑PPT下载
  13. 解决使用Glide加载图片背景出现浅绿色
  14. EUI学习之DataGroup与List
  15. Sniper模拟器的安装
  16. 字符串的插入(不用库函数)
  17. C语言中变量的作用域
  18. js-图片的轮播-设置主要界面-和鼠标点击进行切换图片
  19. Python 3.x--tkinter(二): 抽象画?!
  20. opensuse13.1安装金山快盘

热门文章

  1. NVIDIA英伟达:深度学习服务器搭建指南 | 交流会笔记
  2. 亚马逊网红无人店第2家来了!面积×1.6倍,还用不用排长队?
  3. 下载安装 Ubuntu 19.04 “Disco Dingo”
  4. 11.06T1 DLZ常数剪枝+DP
  5. 九零后女孩币圈变形记
  6. Java NIO和IO的主要区别
  7. spring data redis的使用jar包版本冲突问题
  8. Javascript - demo 与 捷径
  9. 更改SQL数据库的繁体数据为简体
  10. 热烈欢迎 东北鸿顺山特产品有限公司网站正式上线