我有一台 ESXi 5.5 服务器,并且在本地数据存储上遇到了较高的写入延迟。
该数据存储位于 RAID 卡(RAID 1 上的两个 SATA 磁盘)提供的虚拟磁盘上。
当我复制大文件时,需要很长时间才能完成传输,写入延迟平均为 84 毫秒!这太过分了。
顺便说一句,我知道 RAID 1 不会提高写入率。
所以我想找出瓶颈在哪里。可能是 RAID 卡吗?(PCI-e 8x,100% 硬件)。可能是碎片问题吗?(在 VMFS 上不太可能)。
如果您已经在本地数据存储上遇到过高延迟,我希望得到您的反馈。谢谢 :)
答案1
简单地说你的问题是:
(RAID 1 上的两个 SATA 磁盘)。
随心所欲地调整,但两块可能非常慢的磁盘就是两块非常慢的磁盘,只有大量缓存才能解决这个问题。你的 IOPS 预算很小,唯一能解决这个问题的办法是使用更大的磁盘。
例如 - 使用具有 8-10 个磁盘的 Raid 10 将为您提供更多 IOPS。使用 enerprise Raid 控制器(如 Adaptec 71605Q)并放入多个 SSD 作为透明使用的缓存将解决写入问题。多亏了这一点,我经常以 500mb/s 的速度将文件复制到 Raid 6。
但是您的问题是,2 个速度不快(即最大 7200 RPM)的 SATA 光盘就是这样,而且您似乎没有其他硬件来缓解这个问题。
答案2
如果您的客户机是 Linux,您可以要求他进行更积极的写入缓存,这对处理此类写入延迟大有帮助。默认的 5 秒或 30 秒写入缓存刷新间隔来自文件系统/vm 开发人员的梦想,他们永远不需要调试源自某些硬件问题的神秘问题,只要他们的代码没问题。
以下 sysctl 设置可让您更好地平衡写入操作:
vm.dirty_background_ratio = 20
vm.dirty_expire_centisecs = 360000
vm.dirty_writeback_centisecs = 360000
(其他操作系统(包括 esxi)也有同样的问题,但你不能轻易地更改 vm writeback 参数。)