引用:TechTarget中国
组件和系统的设计者在很久之前就知道了数据读写过程所产生的延迟会降低负载的性能表现。通过将需要经常访问的数据存放在靠近应用程序的高速内存当中,缓存技术可以帮助降低延迟。缓存技术已经被用于服务器的很多关键领域当中:处理器、磁盘甚至是网络设备。现在,固态存储设备的快速发展使得增加一个新的高性能、低延迟的存储层来缓存虚拟机内容变为可能。下面让我们来介绍一下这种新一代flash缓存以及其在虚拟化服务器中的使用情况。
本地flash存储为虚拟机带来的好处
Flash缓存是一种存储技术,其可以利用本地flash存储设备(比如串行硬件驱动器接口[SATA] 、固态硬盘[SSD]或者外围组件互联总线[PCIe]、 输入/输出加速器)组成资源池,作为分配给服务器虚拟机的缓存资源。VMware将这种技术称之为vSphere Flash Read Cache(vFRC)。而其他供应商则是利用基于硬件的模式来提供这种特性,比如NetApp的Flash Cache 和 Flash Cache 2等产品。
简单来说,虚拟的flash存储层可以为虚拟机提供读缓存。将需要经常访问的数据存储在本地读缓存当中,这样就可以提高虚拟机的性能表现并且减少网络流量,因为想要读取的内容已经被存放在本地缓存当中(高速缓存命中)。降低延迟可以加速应用程序的性能表现,缩短负载的响应时间。如果所需的数据没有存放在缓存当中(缓存未命中),虚拟机将会像平时一样从存储区域网络(SAN)或者网络附加存储(NAS)中访问数据。
需要引起特别注意的一点是每种应用程序使用缓存的方式都不尽相同,所以对于特定的应用程序,缓存可以发挥的作用也不尽相同。对于总是使用相同数据的读取密集型负载可以通过使用读缓存来提升速度。对于大部分使用读缓存的负载,我们可以为其分配更多的读缓存空间,但是为其他负载所分配的读缓存空间就要相应减少。
VMware vFRC也使用写入缓存,所以通常在应用程序确认之前,数据就已经被写到存储当中了。这样就防止了因为电源突然中断或者其他系统故障而导致的数据丢失。
像vFRC这样的架构允许管理员针对单独的虚拟机自定义缓存数量和块大小等特性。比如,管理员应该配置一个具有足够大flash存储空间的缓存来存放某个负载中的全部读数据,但是同时不能浪费很多存储空间。与之形成对比的是,设定缓存块大小将会影响创建缓存内容索引所需的内存数量。为了寻找块大小和内存索引大小之间的最佳平衡点,通常需要进行一些测试和性能监控。
此外,读缓存的性能也会受到本地flash存储工作方式的影响。比如,固态PCIe I/O加速器类设备的性能表现通常比SSD设备更好,同一等级flash设备的性能表现比多个等级的混合设备更好。所以,正在选择flash缓存的企业应该在flash存储设备的开销和性能之间寻找平衡点,以满足负载的缓存需求。