起初并没人关注的小问题,正常不过的虚机存储迁移操作,引起的延迟却引发一连串的变化。
环境
vsphere 6.7 + 华为集中式存储
开始
- 下午5:17
业务反馈,存在数据超时,频繁在1秒钟以内,正常在200ms。需运维排查虚机的状态与IO情况等硬件使用情况。 - 下午5:30
随手翻开zabbix 打开cpu idel 与avaliable memory ,均正常余量蛮大,这台为数据库cpu idel 最高不超过30%,排除cpu 内存问题。
同时数据库组同事给予意见:
从awr分析上看瞬时的io大,写入慢了假设后续硬件层面没法提高的情况下,建议对相关表改成分区表,再把数据库的几个数据文件分割到多个新挂载磁盘卷去。如果存储能提升来的会快一点。
以上在下班前算是给予一个比较好的解决方式,恰逢周五下班,无心排查期待后续没有其余问题。 - 晚上 21:47
业务反馈延迟在这几个小时内反反复复发生,告警一直反反复复。
此刻开始关注,调出vsphere 打开虚机IO延迟,查看在这段时间内IO正常,最大演出151。怀疑这个存储不行,立马决定热更换存储。 - 晚上 21:58
怀疑不是存储的问题,立马停止存储迁移。打开存储管理台查看当前lun的状态。并收集存储日志交给厂商进行定量分析。 - 晚上 23:30
经过仔细排查与操作记录回想,基本确认是在4:30-5:17进行的虚机整机迁移(包含存储的更换)导致的延迟增加。
1:分析存储性能数据,从16:35开始存储上ID为17的LUN oceanstor5310_LUN04的unmap最大带宽超过400MB/s
2: ID为17的LUN oceanstor5310_LUN04 IO写时延最高达到了393ms,读延迟正常:
到此问题情况已经可以确认:
问题原因:
在虚拟机迁移过程中,LUN收到大量unmap命令会消耗页面资源
同时主机业务IO也会申请页面资源。缓存页面资源不足导致LUN的写时延增加
建议:
可以在VMware上手动限制unmap的最大带宽
具体的操作方法建议和VMware确认
资料补充:
官方回复:
回收 vSAN 数据存储上的磁盘空间(适用于 VMware vSphere 6.7U1 及更高版本)
如果您使用的是 vSAN 数据存储,则本主题适用。在 vSphere/vSAN 6.7U1 之前,不支持空间回收。从 6.7U1 开始,支持在 vSAN 数据存储上通过 vCenter Server UNMAP 功能进行 vSAN 空间回收。默认情况下将停用此功能。
1、过程
检查 ESXi 主机中是否已启用 UNMAP 功能。
从命令行运行以下命令:
esxcfg-advcfg -g /VSAN/GuestUnmap
“GuestUnmap”选项的值为 0。
- 1
- 2
- 3
- 4
esxcfg-advcfg -g /VSAN/Unmap
“Unmap”选项的值为 1。
- 1
- 2
2、在所有 ESXi 主机中启用客户机 UNMAP。
运行以下命令:
esxcfg-advcfg -s 1 /VSAN/GuestUnmap
然后,检查客户机操作系统的 UNMAP 功能。运行以下命令:
esxcfg-advcfg -g /VSAN/GuestUnmap
“GuestUnmap”选项的值为 1。
- 1
- 2
- 3
- 4
- 5
- 6
3、在 vCenter Server 中启用 UNMAP 功能。
运行以下 RVC 命令:
vsan.unmap_support <cluster> -e
- 1
- 2