IT领域中的生活充满了艰巨的任务。在进行备份或者维护修补方案时,你必须确保多层反恶意软件被适当部署。不幸的是,在高度虚拟化的环境中,管理杀毒软件会是一件非常痛苦的事情,杀毒软件自身实际上构成了一种威胁。就像俗话说的那样:治疗有时比疾病本身更糟糕。
也许任何人都不会对杀毒软件会使机器运行速度变慢这一点感到惊讶。任何监控每一个磁盘I/O并检查其是否存在威胁的软件都会给系统带来额外的开销。对于大多数情况,这体现在较高的磁盘延迟和CPU负载上面。尽管如此,杀毒软件在进行扫描排除时都会很小心,因此它们通常不会造成系统瘫痪。
最近,我提出了两个很好的例子,这些例子为我们展示了杀毒软件在失去控制时是怎样对系统性能造成巨大的整体影响的,同时还显示了检测其中的原因是多么的困难—除非你知道去寻找原因并且拥有这样做必需的监测数据。
新的VDI环境
在第一个例子中,客户处在将新的VDI环境带进生产的过程中。基础映像已经被全面测试,用户群为他们摆脱了传统的桌面而使用VDI为他们带来的可移植会话感到兴奋。初始用户测试进展顺利并且没有发现问题。
尽管如此,由于大量自动部署的桌面和不断扩大的用户数量,一系列的性能问题产生了。首先,响应时间变慢,而且随着铺设的进行,这种问题会急剧恶化,甚至到用户开始想念旧的桌面的程度。而在虚拟主机上的初步调查表明不存在任何重大的CPU或内存竞争,因此,人们的注意力迅速转向到SAN。
通过挖掘SAN的管理接口,问题立刻变得很清晰:这的确是与存储相关的问题,而且响应时间的延迟高峰远高于20ms。往往是在这种情况下,用户开始害怕SAN不能提供VDI环境服务。幸运的是,故障排除过程并没有就此停止。对SAN负载的进一步调查显示每一个VDI桌面启动后大约一个小时会产生平均超过40IOPS(SAN存储评价指标之一)——远远超出标准的IOPS以及在初始映像开发和测试阶段中检测到的IPOS。
最终,问题来源被确定:当非持久性桌面映像启动时,他们的杀毒agent从管理服务器获取新的病毒定义并更新病毒定义库,然后执行一次完整的系统扫描,以确定不存在新的可检测的风险。这是一个在物理桌面中常用的并且是完全合理的做法,但是在虚拟环境下,这种做法只会破坏底层的共享存储硬件并且除此之外别无他用。
作为测试,新病毒定义部署功能被禁用,其结果是在早上的数小时内减少了近10倍的磁盘I/O,即使此时很多新用户登录并启用了新的桌面—即有效地解决了上面的问题,尽管这也带来了需要手动更新病毒定义库的问题。
崩溃的SQL群集
在另外一个例子中,一个客户端报告说一个关键服务应用程序无响应。故障初步诊断表明高度冗余的集群数据库服务实际上已经处于离线状态。在服务器重启恢复服务后,SQL服务器日志显示,数据库服务器经历了一个非常高的磁盘延迟并最终导致了服务器放弃和终止了服务。
检查发现SAN自身没有不寻常的事件或失败发生。似乎问题一开始可能是和经历了该问题的数据库集群相关的,但是很难弄清楚实际发生了什么。更糟糕的是,SAN基础设施上的性能日志是不可用的,因此从SAN的角度进行进一步的调查是不可能的。
考虑到在一个大型虚拟化基础设施中物理数据库集群是共享物理磁盘资源的,调查的方向转向了观察在虚拟环境中经历失败时是否也会出现较高的延迟。事实上,确实会出现很高的延迟,而且难以置信的是这种延迟和前面所述的延迟在同一时间达到延迟峰值。
这还不是全部内容。在虚拟环境中不仅检测到了相同的延迟,而且在横跨八个主机的群集中的每一个主机还产生了约200MBps的I/O,每个I /O负载都超出了存储后端可以正常处理的范围。进一步调查显示,200个VM(虚拟机器)中约有一半正好在同一时间内向SAN中发出大量的I/O操作命令并且一直持续了大约15分钟才停止。
最后,问题真正的原因是:由于杀毒软件管理服务的配置问题导致了大量的VM还原到一个非托管的状态,这种状态下它们(VMs)将定义自己的病毒定义数据库,就像在上面的VDI例子中描述的那样,它们在更新数据库后立即执行系统扫描。
已经存在的解决方案
幸运的是,存在一些良好的解决方案可以解决这些问题。其中最主要的是迁移到杀毒平台,杀毒平台可以在虚拟机监控程序栈而不是在客户机操作系统中运行。虽然在市场上现有一些产品,但是第一个充分利用EPSEC在vSphere中的API的是拥有深安全产品的趋势科技。这些系统通过把一个扫描引擎集成到系统管理程序的磁盘I/O通路中和在一个集中的虚拟设备中管理该引擎来工作,这个虚拟设备控制着诸如签名更新等策略。
这种做法实现了较低的I/O延迟和主机CPU负载。它轻而易举地避免了我所描述的两个例子中共同的核心问题即杀毒软件引起的磁盘风暴此类问题。因为一个客户机杀毒软件agent会忽视这一事实:许多其他类似的agent可能会在同一主机上在其旁边运行,所以基于系统管理程序的agent可以串行的扫描VM——以确保不会产生杀毒风暴并保持整体安全。
即使你因为支付不起更换杀毒平台的费用而不这么做,你也应该学习认识什么是杀毒风暴以及它可能给你的虚拟化和存储基础设施带来的各种影响。精心管理集中式杀毒软件的策略和计划可以避免一些最恶劣的影响,尽管系统管理程序集成解决方案将产生最好的结果。
也许上面两种经历所体现的最重要的信息是:没有历史监控能力,要区分迟缓的SAN和杀毒软件导致的不寻常的磁盘负载几乎是不可能的。如果你什么都不做,请确保你为自己提供了关于你的基础设施尽可能全面、尽可能多的监控数据源。