我们有一个 NetApp 存储系统,可将 LUN 提供给几个 Hyper-V 集群。在 2008 R2 上运行系统性能跟踪(在 perfmon 中)时,会出现关于“高级别拆分 I/O”的警告。阅读拆分 I/OI 发现这很可能是由碎片驱动器引起的。
我发现很难相信传统意义上的驱动器是碎片化的,因为一切都是虚拟的(LUN 上的虚拟硬盘、卷上、聚合体上、存储系统上,它可以写入任何它认为合适的地方并进行重复数据删除该数据也)。所以我什至应该担心这个吗?我看不到任何存储问题的证据,例如延迟过长。
顺便说一句,在我们的一台虚拟机上运行碎片整理分析显示约 50% 的碎片数据。我想我在某处读到,如果 Windows 检测到碎片超过 20%,它会自动拆分 I/O,这是真的吗?碎片整理任务被禁用,那么它怎么知道呢?
由于您所描述的原因,虚拟机中的磁盘碎片只是生活中的一个事实。在大多数工作负载中,这不是需要担心的事情。如果您有执行大量顺序 IO 的工作负载,这可能是导致性能不佳的原因,但对于随机读/写工作负载则不然。
VM 有时被称为 I/O 混合器是有原因的 :)
多个 I/O 总是效率较低。它是否表现为性能问题是您需要确定的。根据定义,有些文件很大并且数据随机组织,因此会出现一些拆分 I/O。
拆分 I/O 也可能是另一个潜在瓶颈的症状,例如磁盘队列长度。
您可能希望确保您正在测量存储端口延迟。这隐藏在 perfmon 中,可以按照以下更多信息部分中的描述进行测量:
http://support.microsoft.com/kb/978000
众所周知,2008 R2 SP1 storport SAN 性能在相同硬件上比 Windows 2003 慢。
如果存在性能问题,您可能希望确保操作系统在相关的非安全修补程序上是最新的。
对于 Netapp,split IO 一般意味着对齐不好。如果您的 MBR 偏移了 VM 的磁盘块,以便它们跨越 Netapp 块的边界,那么每次您在操作系统的单个块上执行 IO 时,您都必须访问存储两次。