连接的存储磁盘超过客户机操作系统超时值时,会出现这些问题。这可能是因基础存储问题或因正常操作(如路径故障切换)期间的暂时性短暂停引起的。为满足暂时性事件的需求,VMware Tools 会将 Virtual Infrastructure 3 的 SCSI 磁盘超时增加 60 秒,将 vSphere 4 及更高版本的 SCSI 磁盘超时增加 180 秒。
如果给定环境的默认增加值不足,或者需要增加但未安装或无法安装 VMware Tools,则可以手动增加 Linux 客户机操作系统内的 SCSI 设备超时。
注意:增加 SCSI 超时值是为了缓解故障切换/暂时性存储缓慢的情况,而不是为了改善 APD/PDL 等长期潜在存储状况。如果出现以下情况,则可能存在需要解决的基础 SAN 存储问题:
从 Linux2.6.13
内核开始,可以使用sysfs
接口设置 Linux 块设备的超时值。该功能不适用于 2.6.13 以下版本的内核。为连接到虚拟机的每个磁盘增加磁盘超时值可以防止问题反复出现。
sysfs
中每个通用 SCSI 设备的当前超时值:find /sys/class/scsi_generic/*/device/timeout -exec grep -H . '{}' \;
sysfs
接口修改。例如:echo180> /sys/block/sdc/device/timeout
/etc/udev/rules.d/99-vmware-scsi-udev.rules
中创建udev
规则,并重新加载udev
规则使之立即生效。此规则适用于后续每次启动。例如,以下是 vSphere 4.x 中的udev
规则:# Redhat systems
ACTION=="add", BUS=="scsi", SYSFS{vendor}=="VMware, " , SYSFS{model}=="VMware Virtual S", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"
# Debian systems
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware " , ATTRS{model}=="Virtual disk ", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"
# SuSE / Ubuntu systems
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware, " , ATTRS{model}=="VMware Virtual S", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"