ESX/ESXi 主机的某些存储阵列可能存在读取或写入性能问题 (1002598)
免责声明:本文为 ESX/ESXi hosts might experience read or write performance issues with certain storage arrays (1002598)的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。
不同阵列供应商提供的某些 iSCSI 存储阵列在网络拥塞时间段出现不恰当行为。此问题与这些阵列的 TCP/IP 实施有关,并可能严重影响通过 iSCSI 启动器连接到 ESXi/ESX 软件的存储的读取性能。此问题在涉及 Microsoft iSCSI 启动器的本地(非虚拟化)环境中已报告。
背景概念
要理解此问题,应熟悉几个 TCP 概念:
- 延迟 ACK
- 慢启动
- 拥塞避免
延迟 ACK
TCP 网络协议的中心规则是接收器确认收到通过 TCP 发送的数据。根据 RFC 813,“非常简单,当数据到达接收器时,协议要求接收器返回此数据的确认。协议指定按顺序将数据字节编号,以便接收器通过为接收到的编号最高的数据字节命名来确认数据,同时也确认之前的字节。 承载确认的 TCP 数据包称为 ACK。
主机收到一串 TCP 数据段时,可以通过为收到的每条数据段发送一条以下 ACK 确认分段来提高网络和主机的效率。这称为延迟 ACK。常规做法是为每两个完整大小的数据分段发送一条 ACK,并且通过多个指定阈值确保不会延迟某个分段的 ACK。此阈值在 100 ms 到 500 ms 之间变化。与大多数其他服务器一样,ESXi/ESX 也使用延迟 ACK 的优势。
慢启动和拥塞避免
从源到目标的两个网络元素之间的数据处理能力不匹配时,可能会发生拥塞。拥塞表现为延迟、超时或数据包丢失。要避免拥塞以及从拥塞恢复,TCP 使用两种算法:拥塞避免算法和慢启动算法。尽管这两个算法的底层机制不同,其基本概念都是一样的:TCP 发送器在发生拥塞时必须降低其数据传输速率,然后在重新传输的数据段获得确认时提高速率。
发生拥塞时,使用延迟 ACK 和慢启动的 TCP/IP 网络的典型恢复顺序为:
- 发送器在重新传输超时时间段内未收到 ACK 确认时,会检测拥塞。
- 发送器在将剩余分段排序以便重新传输之前,会重新传输第一个数据分段并等待 ACK。
- 接收器收到重新传输的数据分段后,启动延迟 ACK 计时器。
- 延迟 ACK 计时器超时后,接收器会传输 ACK。在等待期间,发送器和接收器之间没有其他传输。
- 发送 ACK 后,发送器会连续重新传输接下来的两个数据段。
- 接收器收到第二个数据段后,立即传输 ACK。
- 发送器收到 ACK 后,将连续重新传输接下来的四个数据段。
- 拥塞时间段结束且网络恢复正常流量速率之前,此顺序将一直持续。
在该恢复顺序中,步骤 3 中初始延迟 ACK 计时器的延迟时间最长。
问题描述
问题中受影响的 iSCSI 阵列处理拥塞的方式稍有不同。与主机实施慢启动算法或拥塞避免算法或同时实施两者不同的是,阵列采用非常保守的方式每次只重新传输一个丢失的数据分段,并等待主机的 ACK 后再重新传输下一个数据分段。此过程将继续,直到所有丢失的数据段全部恢复。
这种方法与 ESXi/ESX 主机上已实施的延迟 ACK 结合使用,可减慢拥塞网络中的读取性能直至停止。因此,使用此类型阵列的主机的内核日志会报告频繁超时。最值得注意的是,由于 VMFS 使用较小的超时值,VMFS 检测信号将出现大量超时。此配置也会出现客户机报告过长的读取响应时间(大约几十秒)。读取块大小较大的数据时,此问题会更加严重。在这种情况下,高带宽分配会造成网络拥塞,且每个 I/O 由很多数据段组成,需要更长的恢复时间。
在 vmkernel.log
文件中,您可能会看到类似如下内容的条目:
-09-17T15:07:19Z iscsid: discovery_sendtargets::Running discovery on IFACE iscsi_vmk@vmk2(iscsi_vmk) (drec.transport=iscsi_vmk)
-09-17T15:07:19Z iscsid: cannot make connection to 10.0.68.2:3260 (111)
-09-17T15:07:19Z iscsid: connection to discovery address 10.0.68.2 failed
-09-17T15:07:19Z iscsid: connection login retries (reopen_max) 5 exceeded
-09-17T15:07:19Z iscsid: Login Target Skipped: iqn.2003-10.com.lefthandnetworks:hvtiscsi:1808:vmwds01 if=iscsi_vmk@vmk1 addr=10.0.68.2:3260 (TPGT:1 ISID:0x2) (Already Running)
-09-17T15:07:19Z iscsid: Login Target Skipped: iqn.2003-10.com.lefthandnetworks:hvtiscsi:1808:vmwds01 if=iscsi_vmk@vmk2 addr=10.0.68.2:3260 (TPGT:1 ISID:0x3) (Already Running)
iSCSI 阵列供应商在终端解决此问题之前,请在设计 IP 存储网络时提供足够的容量,以便满足峰值使用量并降低拥塞风险。如果您遇到本文所描述的问题,且无法更改您的网络配置或确保无拥塞环境,则可以尝试以下解决办法。
此权宜措施包括通过配置选项在 ESX/ESXi 主机上禁用延迟 ACK。
注意:请联系您的存储供应商,确认禁用延迟 ACK 是否是针对其存储阵列推荐的权宜措施。
ESX/ESXi 3.5 和 4.x/5.x/6.0 之间处理延迟 ACK 的差异
ESX/ESXi 3.5 和 4.x/5.x/6.0 之间禁用延迟 ACK 的方式略有差异。ESX/ESXi 3.5 和 4.x/5.x/6.0 之间的主要差异是延迟 ACK 设置的工作原理与其设置:
- 在 ESX/ESXi 3.5 中,延迟 ACK 设置对于 ESX/ESXi 系统而言是全局的。
通过设置此选项,无论 TCP 是否尝试进行拥塞恢复并正常运行,您都可以完全禁用延迟 ACK。此选项会影响整个 TCP/IP 堆栈,因此,如果您实施此更改,所有 TCP/IP 应用程序都会受影响。因而,设置此选项可能降低 iSCSI 和其他应用程序的性能(例如 NFS 和 vMotion),同样会导致拥塞。尽管如此,此选项允许受影响的 iSCSI 阵列在其他事务期间,从拥塞中迅速恢复并保持合理的性能。
- 在 ESX/ESXi 4.x/5.x/6.0 中,配置延迟 ACK 设置的建议方法是在每个发现目标上配置。您也可以在每个单独目标上配置延迟 ACK 设置。此外,尽管不推荐,您仍然可以为所有 iSCSI 目标全局配置延迟 ACK 设置。
在 ESXi 中配置延迟 ACK。
要在 ESXi 中实施此权宜措施,请使用 vSphere Client 禁用延迟 ACK。
在 ESXi 6.5、ESXi 6.7 中禁用延迟 ACK。
- 登录到 Web Client,然后选择主机。
- 右键单击主机,然后单击“维护模式”。
- 等待进入维护模式任务完成。
- 导航到“配置”选项卡。
- 单击“存储适配器”。
- 单击要修改的 iSCSI vmhba。
- 要在发现地址上修改延迟 ACK 设置,请执行以下操作:
- 单击“适配器详细信息”的“目标”选项卡。
- 单击“动态发现”。
- 单击“高级设置”。
- 在延迟 ACK“高级参数”选项中,取消选中“从父项继承”和 DelayedACK。
- 单击“确定”
- 重新引导主机。
在 ESX/ESXi 4.x、ESXi 5.x 和 ESXi 6.0 中禁用延迟 ACK。
- 登录到 vSphere Client,然后选择主机。
- 右键单击主机,然后单击维护模式。
- 等待进入维护模式任务完成。
- 导航到配置选项卡。
- 单击存储适配器。
- 单击要修改的 iSCSI vmhba。
- 单击属性。
- 修改延迟 ACK 设置,使用最符合您站点要求的选项:
- 要在发现地址上修改延迟 ACK 设置,请执行以下操作(推荐):
- 在发现地址上,单击动态发现选项卡。
- 单击服务器地址选项卡。
- 单击设置 > 高级。
- 在延迟 ACK“高级参数”选项中,取消选中从父项继承和 DelayedACK。
- 单击确定。
- 在一组特定目标上修改延迟 ACK 设置:
- 在发现地址上,单击静态发现选项卡。
- 选择所使用阵列上的所有目标。
- 单击“移除”以删除所选条目。
- 单击动态发现选项卡。
- 移除所使用阵列上的所有目标。
- 输入发现地址,但是先不重新扫描适配器。
- 选择要修改的发现地址,然后单击设置 > 高级。
- 在延迟 ACK“高级参数”选项中,取消选中从父项继承和 DelayedACK。
- 单击确定。
- 为要修改的每个发现地址重复步骤 f-i。
- 要全局修改延迟 ACK 设置,请执行以下操作:
- 选择常规选项卡。
- 单击高级。
- 在延迟 ACK“高级参数”选项中,取消选中从父项继承和 DelayedACK。
- 单击确定。
- 要在发现地址上修改延迟 ACK 设置,请执行以下操作(推荐):
- 重新引导主机。
在 ESX/ESXi 4.x、ESXi 5.x 和 ESXi 6.0 中重新启用延迟 ACK
- 登录到 vSphere Client,然后选择主机。
- 导航到高级设置页面,如上述“在 ESX/ESXi 4.x、ESXi 5.x 和 ESXi 6.0 中禁用延迟 ACK”任务所述。
- 单击从父项继承 > DelayedAck。
- 重新引导主机。
在 ESX/ESXi 4.x、ESXi 5.x 和 ESXi 6.0 中查看延迟 ACK 的当前设置
- 登录到 vSphere Client,然后选择主机。
- 导航到高级设置页面,如上述“在 ESX/ESXi 4.x、ESXi 5.x 和 ESXi 6.0 中禁用延迟 ACK”任务所述。
- 查看 DelayedAck 设置。
如果已查看 DelayedAck 设置,将启用此选项。如果在更改延迟 ACK 设置后且在重新引导主机之前查看,结果将显示新设置而不是当前使用的设置。
注意:
- 要禁用 delayed_ack,请从命令行运行以下命令:
vmkiscsi-tool -W -a delayed_ack=0 -j vmhbaXX
要启用 delayed_ack,请运行以下命令:
vmkiscsi-tool -W -a delayed_ack=1
-j
vmhbaXX - 要查看此参数,请运行以下命令:
vmkiscsi-tool -W vmhbaXX
- 要禁用 delayed_ack,请从命令行运行以下命令:
在 ESX/ESXi 3.5 中配置延迟 ACK
要在 ESX/ESXi 3.5 中实施此权宜措施,请使用 VI Client 更改 Net.TcpipDelayedAck
高级参数设置。默认情况下,此选项设置为 1,将启用延迟 ACK。要禁用延迟 ACK,请执行以下步骤。
在 ESX/ESXi 3.5 中禁用延迟 ACK
- 登录到 VI Client,然后选择主机。
- 单击配置选项卡,然后单击高级设置。
- 单击网络,然后在高级参数列表上滚动直到找到
Net.TcpipDelayedAck
参数。 - 将参数值设置为 0.
- 单击确定。
- 重新引导主机。
在 ESX/ESXi 3.5 上重新启用延迟 ACK
- 登录到 VI Client,然后选择主机。
- 单击配置选项卡,然后选择高级设置。
- 选择网络,然后在高级参数列表上滚动直到找到
Net.TcpipDelayedAck
参数。 - 将参数值设置为 1。
- 单击确定。
- 重新引导主机。
在 ESX/ESXi 3.5 中查看延迟 ACK 的当前设置
- 登录到 VI Client,然后选择主机。
- 单击配置选项卡,然后选择高级设置。
- 选择网络,然后在高级参数列表上滚动直到找到
Net.TcpipDelayedAck
参数。 - 查看设置。设置为 1 表示已启用延迟 ACK,设置为 0 表示已禁用。
- 单击确定。
注意:重新引导后,延迟 ACK 更改才会生效。如果在执行更改后未重新引导主机,则查看结果将显示新的设置而不是当前使用的设置。
ESX/ESXi 主机的某些存储阵列可能存在读取或写入性能问题 (1002598)的更多相关文章
- ESX/ESXi 主机上的每个插槽中安装了多少内存
要确定在 ESX/ESXi 主机上的每个插槽中安装了多少内存,请执行以下操作: 1. 启动ssh服务 2. 登陆esxi主机查看 使用 SSH 客户端登录主机,以 root 用户身份运行以下命令之一: ...
- vSphere Client 更改 ESX/ESXi 主机的端口
https://blog.csdn.net/hanzheng260561728/article/details/51283808?locationNum=8&fps=1
- [转帖]VMWare官网:无法关闭 ESXi 主机上的虚拟机 (1014165)
无法关闭 ESXi 主机上的虚拟机 (1014165) https://kb.vmware.com/s/article/1014165?lang=zh_CN Last Updated: 4/17/20 ...
- VMWare ESX/ESXi 虚拟机硬盘的厚置备(Thick Provision)与精简置备(Thin Provision)的转换
VMWare ESX/ESXi 有两种硬盘置备方式,厚制备(thick)和精简置备(Thin) 有时可能会由于性能问题或磁盘空间需要将虚拟机磁盘在两种模式间进行互转,虽然在虚拟机配置页面是没有办法修改 ...
- 手动配置 ESXi 主机挂载 NFS 的最大值
目录 目录 资料 手动配置 ESXi 主机挂载 NFS 的最大值 资料 官方 KB 地址 手动配置 ESXi 主机挂载 NFS 的最大值 Open: 清单 ==> ESXi 主机 ==> ...
- esxi主机用命令行强行关闭通过前端界面无法关闭的ESXI虚拟机
环境:esxi5.1-esxi6.5 背景:如果esxi下面某一台vm死机了,并且esxi的控制台卡死不能用,为了不影响同一个esx下其他的vm正常使用,那么我们只能用命令行来单独重启此vm,保证一定 ...
- Esxi主机虚拟机迁移注意事项
1. Esxi主机上的虚拟机迁移只能是低----->高,或版本一样的才能进行迁移 [如Esxi5.1---->Esxi5.5]ok, 而Esxi5.5----->Esxi5.1 no ...
- 怎样使用Secure CRT查看vcenter和esxi主机的日志文件(转)
对ESXI主机的日志管理对于故障诊断和合规性至关重要.Esxi主机的日志通过syslog工具进行管理的,在默认的情况下,日志文件存储在主机的scratch分区中(/scratch/log/).scra ...
- vSphere client 登陆ESXI主机“您无权登录次服务器”
vCenter安装在虚拟机上,安装好后想调整下内存,直接把虚拟机关闭了电源,突然一想服务器都被我关了,还拿什么修改内存,完蛋! 突然想起,在使用vCenter之前,都是用vsphere client ...
随机推荐
- 推荐美丽的flash网页MP3音乐播放器
文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/491 在网页制作中.假设想在网页中插入mp3音乐来增添网页的互动感,提升用户体验度,这个时 ...
- LeetCode 739. Daily Temperatures (每日温度)
题目标签:HashMap 题目给了我们一组温度,让我们找出 对于每一天,要等多少天,气温会变暖.返回一组等待的天数. 可以从最后一天的温度遍历起,从末端遍历到开头,对于每一天的温度,把它在T里面的in ...
- Codeforces Round #272 (Div. 2) Dreamoon and WiFi 暴力
B. Dreamoon and WiFi Dreamoon is standing at the position 0 on a number line. Drazil is sending a li ...
- [水题]4242 果实计数&&3214 采访对象
4242 果实计数 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 淘淘家有棵奇怪的苹果树,这棵树共有n+1层 ...
- 20170623_oracle基础知识_常见问题
1 如何配置网络服务?两种连接 Oracle 工具? 1) 打开Net Manager 2) 选择服务命名,点击“+ ”号 3 ) 网络服务名: remote协议:tcp/ip 主机名:ip地址 端 ...
- C#使用Quartz.NET详解
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- Road Construction(无向图的双连通分量)
http://poj.org/problem?id=3352 题意:给出一个有n个顶点m条边的无向连通图,问至少添加几条边,使删除任意一条边原图仍连通. 思路:一个边双连通图删除任意一条边仍为连通图. ...
- [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]七、数据与安全-(18)使用Swift实现原生的MD5加密
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- VUE element-ui下拉列表获取label值
有这样一个场景,当我们往后台数据传的是id时,我们却想在前台获取列表显示的值,这时候可以用下面的方法来获取你想要的label值 let obj = {}; obj = this.arr.find((i ...