从VHD上的Hyper-V guest虚拟机运行时,SQLIO是否存在?

SQLIO似乎是一个有用的工具。 我认为尝试测量物理磁盘和VHD之间的速度差异会很有趣。 所以我在物理驱动器上的Hyper-V主机上运行SQLIO。 结果似乎合理。 然后我从guest虚拟机运行它来testingvhd(在同一个物理磁盘上)。 我预料会慢一点。 但是反而更快 – 就像0ms的平均延迟。

所以我想在这里学习一些东西。 看起来hyper-v似乎在愚弄SQLIO,但是我不明白这一点是否足够清楚。

这是一个dynamic的vhd,没有快照或任何东西,而vhd是磁盘上唯一的文件。 物理磁盘实际上是两个SAS驱动器RAID 1。

我知道我迟到了,但我发现在dynamic磁盘上使用SQLIO确实给出了错误的结果。 其原因在于tesfile.dat只是一个归零文件,所以dynamic磁盘足够聪明,可以在后台压缩这个文件,这意味着它将适合你的磁盘caching。 所以你的SQLIOtesting本质上只是testing你的caching有多快。

我相信这个问题很好解决了,但是当我testing的时候,我找不到答案,所以我想这可能会写下来以备将来参考:)

斯蒂芬

是的,Hyper-V是用交易聚合“愚弄”sqlio。 Hyper-V服务器的SQL虚拟机不应该将数据库或日志存储在VHD中。 您应该使用某种types的传递磁盘(包括iSCSI)。

Microsoft有Hyper-V上的SQL准则列表以及configuration直通磁盘的一些详细信息 。

你使用什么尺寸的testing文件? 通过增加testing文件的大小(可能达到几GB),您应该能够将caching效果降至最低。

更虚惊的是,时间在虚拟机中以不同的速率传递。 在一个物理机器中,有一个晶体和一个时钟以恒定的速度甩出精度周期。 操作系统使用这个来告诉时间。 但是在虚拟机上,时钟可以减速并加速。 pipe理程序根据负载决定虚拟时钟跳动的速度有多快或多慢。