能耗管理是企业数据中心的主要问题之一,它影响到服务器密度和总拥有成本。电能管理正在改变数据中心设置和管理。一些组件已经支持电能管理功能:例如,服务器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 性能
通过在硬件测试床中重播这些跟踪,我们衡量了写入卸载对能耗节约和性能的影响。我们采用的测试床使用的是典型的高性能存储硬件:希捷Cheetah 1.5万转磁盘和惠普SmartArray 6400 RAID控制器。从一周的跟踪结果中,我们重播了两天的所有卷跟踪:I/O请求闲置时间最长的一天和最短的一天。
我们看到,仅仅是在闲置的时候将磁盘降速就可以节约很多能源;启用写入卸载功能则可以节约更多的能源,而且这种能耗节约在写入卸载范围增大的时候也随之增加。通过机架层面的卸载,当工作负荷比较低且写入操作占主导的时候,一个正常速度的卷就可以吸收整个机架写入卸载,也就是说所有其他卷都可以实现降速。
不过,磁盘降速会牺牲一定的性能。发送给降速卷的请求会遭到一定的延迟:虽然这种情况的发生几率比较小,但是响应时间会变长许多。我们注意到"普通的"磁盘降速会导致读取和写入的响应时间增加许多,但是如果启用机架层次的写入卸载功能,则写入操作的响应时间几乎不会受到任何影响。实际上,通过在多个卷上对突发写入的负载均衡,以及通过在远程卷上使用写入优化后的日志布局,写入卸载改善了平均响应时间。通过设备层面上的卸载,最差情况下的响应时间得到了稍微改善:这是因为有时我们一个配置良好但已经降速的卷会遇到突发的写入,这时只好将写入卸载到同一设备上另一个配置稍差的卷。通过机架层面的卸载,这种情况就不是问题了,因为突发写入可以在不同服务器上的多个卷中进行负载均衡。
降速和写入卸载都可以在每个卷上进行(一个给定的卷可以设置成可以进行卸载,或者可以接收卸载后的写入,或两者皆可,或两者皆不可),管理员不应该在承载应用程序的卷上启用降速功能,以防应用程序遭到性能上的损失。一般来说,系统卷也不能启用写入卸载功能,以防系统数据(比如操作系统包)被卸载。
小结
由于全日制使用模式,许多服务器的I/O工作负荷在卷层面上都有较多的闲置时间。我们可以挖掘这些闲置时间,并通过使闲置卷的磁盘降速或使其进入节电模式,实现可观的电能节约。如果我们能够利用写入卸载来延长闲置时间,那么企业存储硬件,比如磁盘、RAID控制器等硬件,则可以通过降速节能模式实现更多的电能节约。
7/12/2009
|