杀毒软件:沉默的虚拟化杀手

IT领域中的生活充满了艰巨的任务。在进行备份或者维护修补方案时,你必须确保多层反恶意软件被适当部署。不幸的是,在高度虚拟化的环境中,管理杀毒软件会是一件非常痛苦的事情,杀毒软件自身实际上构成了一种威胁。就像俗话说的那样:治疗有时比疾病本身更糟糕。

  也许任何人都不会对杀毒软件会使机器运行速度变慢这一点感到惊讶。任何监控每一个磁盘I/O并检查其是否存在威胁的软件都会给系统带来额外的开销。对于大多数情况,这体现在较高的磁盘延迟和CPU负载上面。尽管如此,杀毒软件在进行扫描排除时都会很小心,因此它们通常不会造成系统瘫痪。

  最近,我提出了两个很好的例子,这些例子为我们展示了杀毒软件在失去控制时是怎样对系统性能造成巨大的整体影响的,同时还显示了检测其中的原因是多么的困难---除非你知道去寻找原因并且拥有这样做必需的监测数据。

  新的VDI环境

  在第一个例子中,客户处在将新的VDI环境带进生产的过程中。基础映像已经被全面测试,用户群为他们摆脱了传统的桌面而使用VDI为他们带来的可移植会话感到兴奋。初始用户测试进展顺利并且没有发现问题。

  尽管如此,由于大量自动部署的桌面和不断扩大的用户数量,一系列的性能问题产生了。首先,响应时间变慢,而且随着铺设的进行,这种问题会急剧恶化,甚至到用户开始想念旧的桌面的程度。而在虚拟主机上的初步调查表明不存在任何重大的CPU或内存竞争,因此,人们的注意力迅速转向到SAN。

  通过挖掘SAN的管理接口,问题立刻变得很清晰:这的确是与存储相关的问题,而且响应时间的延迟高峰远高于20ms。往往是在这种情况下,用户开始害怕SAN不能提供VDI环境服务。幸运的是,故障排除过程并没有就此停止。对SAN负载的进一步调查显示每一个VDI桌面启动后大约一个小时会产生平均超过40IOPS(SAN存储评价指标之一)——远远超出标准的IOPS以及在初始映像开发和测试阶段中检测到的IPOS。

  最终,问题来源被确定:当非持久性桌面映像启动时,他们的杀毒agent从管理服务器获取新的病毒定义并更新病毒定义库,然后执行一次完整的系统扫描,以确定不存在新的可检测的风险。这是一个在物理桌面中常用的并且是完全合理的做法,但是在虚拟环境下,这种做法只会破坏底层的共享存储硬件并且除此之外别无他用。

  作为测试,新病毒定义部署功能被禁用,其结果是在早上的数小时内减少了近10倍的磁盘I/O,即使此时很多新用户登录并启用了新的桌面---即有效地解决了上面的问题,尽管这也带来了需要手动更新病毒定义库的问题。