能耗管理是企业数据中心的主要问题之一,它影响到服务器密度和总拥有成本。电能管理正在改变数据中心设置和管理。一些组件已经支持电能管理功能:例如,服务器CPU可以使用低能耗状态,动态时钟和电压调节来显著减少闲置期的电能消耗。企业存储子系统没有这么先进的电能管理功能,并在数据中心消耗很大部分电能。一个企业级磁盘,比如希捷Cheetah 15K.4,即使在闲置状态下每小时也要消耗12W电能,而双核的英特尔Xeon处理器在闲置的时候每小时消耗24W电能。因此,在一个带双核处理器和两个磁盘的设备中,磁盘和处理器的电能消耗量是一样的。但是,在通常的数据中心中,一个核心服务器平均拥有超过13个磁盘。
>简单地购买更少的磁盘并不是常用的解决方案,因为这会导致高峰性能和/或容量的减少。另一种方案就是在磁盘闲置的时候将磁盘降速。传统的观点是服务器工作负荷闲置的时间过短,因此这种方法不能奏效。不过,通过我们对实际的服务器工作负荷的分析,我们发现存储卷层面实际上有很多闲置时间。我们同时还预计–同时前面的工作已经证实–主记忆体高速缓存可以有效地吸收读取操作,但是对写入的效果则不佳。因此,我们预计,当所有的传输都是写入传输的时候,存储层面将很少闲置时间。我们的分析表明确实是这样,在很大部分时间中,请求流是写入主导的。
>这个分析推动了我们称之为写入卸载的技术(write off-loading)。该技术可以让写入某卷的块重定向到数据中心中的其他存储。在写入操作为主导的期间,磁盘被降速,然后写入被重定向,使得卷的一些块被卸载。块的卸载是临时的,时间有可能是数分钟,也有可能是数小时,在主卷的磁盘恢复正常速度后,可以在后台慢慢地重新回收这些块。
>写入卸载改变了卷前访问模式,使得所有的磁盘都可以在同一闲置期间降速。根据我们的观察,这使得各个卷的平均闲置时间达到了79%。这样做的缺点就是,如果需要对没有卸载的块进行读取操作,那么随着磁盘恢复正常速度,会有很大的延迟。不过,我们的观察表明这种情况的几率很小。
>写入卸载是在块层面部署的,对文件系统和服务器上运行的应用程序是透明的。块可以从任何一个卷卸载到数据中心任何可用的持续存储,卸载后的目标地址可以是在同一个设备内也可以是在另一个设备中。存储介质可以是磁盘、NVRAM(非易失性随机存储记忆体)或固态记忆体,比如闪存。卸载使用的是现有卷的空余容量和带宽,因此不需要配置额外的存储。写入卸载还可以用于各种存储架构。我们的跟踪分析和评估都是基于直连式存储(DAS)模式,在这种模式中,每台服务器都是直接连到一套磁盘,这些磁盘通常设置为一个或多个RAID(独立磁盘冗余阵列)阵列。DAS是小型数据中心(比如服务于单个办公建筑物的数据中心)典型的设置。写入卸载还可以用于网络附加存储(NAS)和存储局域网(SAN)。
>在进行写入卸载的时候,一个主要的挑战就是如何确保一致性。每个写入请求会根据一系列标准(包括电能状态和目标地址的当前负载)卸载到另外一处地方。这种每次操作都进行的负载均衡可以改善性能,但是同时也意味着同一逻辑块的连续写入被卸载到不同的地点。因此必须保证原始卷的一致性(即使在在发生故障的情况下)。我们的方法是,保存足够的元数据以反映每个卸载写入的信息,这样就可以在故障发生后重新构建每个块的最近一个版本。这种元数据在记忆体中予以高速缓存,处于软状态中,以便能够快速访问。
>写入卸载同时还可以维护数据的持久性和可靠性。卸载后的目标地点可以限定为远程站点,这些远程站点应有和卸载卷一样的容错机制或更强的容错机制,即RAID卷只能卸载到其他的RAID卷。此外,卸载机制同时还支持远程复制,也就是说,每个卸载后的写入操作都可以发送到多个远程站点。
>卷访问模式
>传统观点认为,因为服务器工作负荷闲置时间过短,让旋转中的磁盘降速并不能带来很好的效果。不过,许多企业级服务器的I/O密集程度低于TPC标杆–TPC标杆特意将标准设得比较高以测试系统在压力状态下的表现。在不同时间里,企业负载的起伏波动也比较大,比如在全日模式下。
>为了更好地理解标准的数据中心服务器的I/O模式,我们跟踪我们大楼里的数据中心,以便获得每个卷在一周时间内的块层次上的跟踪数据。我们总共跟踪了36个卷,包括13个服务器上的179个磁盘。系统启动卷都是RAID-1的,其他都是RAID-5的。
>我们认为这些服务器、数据卷和它们的访问模式可以代表很大部分中小型企业数据中心的状况。虽然系统卷的访问模式可能依赖于服务器的操作系统,但是在数据卷中,访问模式的差别很小。
>我们采集了文件系统下每个卷的状态,并采集了36个卷上所有块层次读取和写入操作。跟踪时间为168个小时(一周时间),从2007年2月22日GMT(格林尼治时间)下午5点开始。我们使用Event Tracing For Windows(ETW:Windows事件跟踪)来采集数据,每个事件都是一个I/O请求。我们可以看到每个Windows磁盘设备(也就是卷)的事件,其信息包括时间,磁盘号码,起始逻辑块号码,被传输的块的数量,传输类型(读取或写入)。跟踪到的总请求数为4.34亿个,其中70%是写入请求;跟踪数据的总大小为29GB。在跟踪期间,总共有8.5TB的数据被读取,2.3TB的数据被写入。
>整体上,总的工作负荷是读取主导的:读取与写入请求之比为2.37。不过,在36个卷中,有19个卷的读取/写入比率低于1.0,而且这些卷整体的读取/写入比率仅有0.18。进一步的分析表明,在大部分卷中,读取工作负荷是突发的。因此,从直觉上来看,将写入请求从工作负荷中移去可以极大地增加闲置时间。
>能耗节约 vs 性能
>通过在硬件测试床中重播这些跟踪,我们衡量了写入卸载对能耗节约和性能的影响。我们采用的测试床使用的是典型的高性能存储硬