我试图弄清楚是否有某种方法可以判断系统是否受到磁盘未对齐的不利影响——即当我执行磁盘 I/O 操作时,它实际上需要从后端存储请求额外的块(我们使用的是 SAN),因为请求的数据块实际上位于实际磁盘上的多个块上。
据称,这个问题对虚拟机的影响更大,因为磁盘被抽象化,因此块由于不正确的扇区偏移而无法对齐,从而导致从虚拟机访问后端存储时使用额外的 IOPS。
无论如何,我一直在查看 iostat 输出,似乎那里的数据可能会给我提供线索,但我似乎在推理时很慢。是否有一些线索表明 iostat(或其他东西)表明机器可能正在执行更多的最佳磁盘 I/O?
(我不相信磁盘对齐值得花精力去调查/担心,但我希望对此事有一些意见!)
答案1
过去,磁盘对齐是相当简单的事情。所有磁道具有相同数量、相同大小的扇区。现代高密度驱动器在每个磁道上使用不同数量的扇区,从而在盘片上保持大致相同的位密度。它们仍然报告旧的柱面、磁道和扇区的大小信息。实际扇区几何形状取决于磁盘上的写入位置。
实际寻址通常以LBA(逻辑块寻址)格式完成。并且确实不关心磁盘几何形状。分割 I/O 可能由磁盘控制软件完成。您可能会在您不期望的地方以及不在您期望的地方获得分离的 I/O。
将这些磁盘放入 SAN 中并共享它们,几何图形就会隐藏在另一层几何图形后面。那时我什至不会尝试冒险猜测哪些 I/O 何时被分割。我对 SAN 视图更感兴趣,它可能会将数据条带化为 2 的幂,可能介于 4Kb 和 4Mb 之间。这些边界上的 I/O 将跨磁盘分割。您的 SAN 管理员应该能够告诉您 SAN 分配大小。如果分配大小较小,则将分区和块大小与 SAN 的分区和块大小保持一致可能会更有利。
我通常会查看sar
输出以查看磁盘 I/O 是否出现问题。当出现 I/O 问题时,您会看到平均队列大小和服务时间增加。此时您需要开始研究 I/O 为何成为问题。对于 SAN,它可能发生在许多地方。有多种解决方案。对于虚拟机,我倾向于为每台机器使用单独的 SAN 磁盘。这些可以作为原始磁盘分配给虚拟机,而不是像 VMDK 这样的文件格式的虚拟磁盘之一。