本文针对数据中心的能源消耗问题,通过设计存储虚拟化层实现一个能源比例存储系统
SRCMap: Energy Proportional Storage using Dynamic Consolidations
DOI: 10.5555/1855511.1855531
FAST' 2010
简介
一句话总结
本文针对数据中心的能源消耗问题,通过动态的存储合并和设计存储虚拟化层实现一个能源比例存储系统。SRCMap中SRC分别表示Sample(采样),Replicate(复制)以及Consolidate(整合),也就是对每个卷进行采样,确定其工作集,然后复制这些工作集到其他卷,并在低负载时将I/O工作负载按比例整合到相对较少的活跃卷上。
设计目标
存储系统的设计目标包括:细粒度能源比例、低空间开销、可靠性、工作负载转换适应以及异构性支持等。
细粒度能源比例具有多级 performance-power 水平,它满足这个式子:当工作负载为
需要尽量减少空间开销。
可靠性则需要确保在磁盘的预期寿命期间产生的磁盘启动循环次数明显小于制造商指定的最大启动循环数,也就是要保证磁盘寿命。
工作负载转换适应则是指,活跃数据会随着时间的推移而发生变化,需要确保系统也能够随着活跃数据的变化而发生变化,并保持能源比例的特性。
异构性支持则指的是数据中心通常由几个基本不同的存储系统组成(例如,具有不同数量和类型的驱动器)
。理想的能量比例存储系统应考虑其性能功率比的差异,以在每个主机级别提供最佳性能。
先前工作
先前的工作包括:单个冗余、Geared RAIDs、Caching Systems 以及 Write Offloading 等。
单个冗余方案的核心思想是在低 I/O 负载期间关闭具有冗余数据的磁盘,但是这种方案的局限性在于无法实现能源成比例的问题;Geared RAIDs 基于奇偶校验的 RAID 的换档机制(每关闭一个磁盘代表一个换档)。要在存储 X 的 N 磁盘阵列中实现 N−1 档,需要 O(X log N) 空间
,即使我们忽略了存储奇偶校验信息所需的空间,但是问题在于会产生较大的空间开销,并且它们不能处理由具有不同 I/O 工作负载强度的多个卷组成的异构存储系统;Caching Systems 的主要思想是将活跃数据缓存在额外的存储(额外磁盘,闪存等)上,以关闭主驱动器,问题在于不能提供细粒度能源比例,且只有在 I/O 负载较低并且缓存能够提供服务时才能够节省能源,且没有考虑频繁的磁盘启动关闭可能对可靠性产生影响;Write Offloading 则是将写操作进行重定向卸载到不同的磁盘以增加空闲时间,但磁盘的频繁启动会潜在影响可靠性,且没有明确指明哪个活跃 disk 是非活跃 disk 的卸载目标,而 SRCMap 解决了这个问题。表中可以看出大部分方案只能满足其中几个设计目标,并且都无法完全满足能源成比例的目标,而 SRCMap 则能够实现这 5 个目标。
创新点
SRCMap 的创新点在于,作者考虑到服务器的虚拟化整合方案(利用异构性在任何时间选择最节能的服务器;利用低开销的实时虚拟机迁移来根据工作负载变化改变活跃服务器的数量;通过允许活跃服务器的数量一次增加或减少一个来提供对功耗的细粒度控制)
,它通过把工作负载集中在一部分物理卷上,使存储系统的能源消耗与 I/O 工作负载强度成比例。SRCMap 通过对每个卷进行采样得到工作集,并将工作集在其他物理卷上进行复制来实现。在给定的合并间隔内(SRCMap 系统进行一次合并操作的时间间隔。这个间隔通常被设置为 2 小时,目的是限制磁盘驱动器的最坏情况启动次数)
,SRCMap 仅激活最少量的物理卷来处理工作负载,同时让其他卷休眠,并把它们的工作负载重定向到活跃卷上的活跃副本。SRCMap 能够在 N 个卷上实现接近 N 级功耗-性能水平,实现存储能源消耗与 I/O 工作负载强度成比例。
存储工作负载特性
接下来作者使用了 3 个生产系统来观察 I/O 工作负载的性质,包括一个 email 服务器(mail 工作负载)和一个运行两个 Web 服务器(web-vm 工作负载)和一个文件服务器(home 工作负载)的虚拟机。作者进行了为期 3 周的观察,得到 4 个观察结果。(1)作者在每个系统中收集了 I/O 跟踪数据,得到了平均每周的统计数据,其中每周工作集(一周内 unique accesses)
是总体积大小(1.5 - 6.5%)的小部分,并且这种趋势在所有卷中一致,因此可以得到第 1 个观察结果:活跃数据集通常是总使用存储的一小部分
;(2)之后作者用图 1 分别展示了三个工作负载的负载强度,可以发现在最低工作负载和最高工作负载强度级别之间可以高达 5-6 个数量级,因此第 2 个观察结果为:磁盘 I/O 工作负载强度存在显着差异
,并且可以反应存储系统可以按能源比例进行节能的潜力;(3)之后作者对数据使用情况进行了研究,作者提出了一个假设:通过在具有多余带宽的其他卷上复制小型活跃工作集,可以关闭利用率明显不高的物理卷。作者通过研究卷的工作集稳定性来验证这一假设。研究使用了三种不同的工作集定义(在第一个场景中,根据近期访问历史计算经典工作集;在第二个场景中,假设可以卸载写操作,并将所有写操作标记为命中;在第三个场景中,进一步扩展了工作集,包括最近的写操作和过去错过的读操作)
,并计算了命中率。观察结果显示,数据使用表现出高度的时间局部性,并且包含最近访问的工作集相对稳定,因此得出第3个观察结果:超过 99% 的工作集,由一些“非常活跃”数据和“最近访问”数据组成
;(4)最后,研究了一种更简单的写卸载技术对构建能源比例存储系统的适用性。作者发现写卸载可以使卷的空闲时间占比大约为 79%,但却会导致需要频繁地开启和关闭磁盘驱动器,从而降低了可靠性,因此需要开发新的技术来显著增加平均读空闲时间持续时间。(图3展示了三个工作负载的读空闲时间分布情况。观察结果显示,home 和 mail 工作负载的空闲时间持续时间都小于等于 2 分钟,而 web-vm 工作负载则大部分小于等于 5 分钟但全部小于 30 分钟)
。
观察结果 1
活跃数据集通常是总使用存储的一小部分
观察结果 2
存储卷的 I/O 工作负载强度存在显著差异
观察结果 3
超过 99% 的工作集,由一些“非常活跃”数据和“最近访问”数据组成
观察结果 4
I/O 工作负载的读取空闲时间分布主要由小持续时间(通常小于5 min)主导
SRCMap 设计决策
SRCMap 运行在 torage Virtualization Manager 上,存储虚拟化管理器可以通过在数据中心中提供不同存储资源的统一视图来简化存储管理,虚拟磁盘称为 vdisks,物理磁盘成为 mdisks,且对只查看逻辑 vdisk 卷的主机来说完全透明,虚拟化层的一个特性是能够完全灵活地将 mdisk 扩展分配给 vdisk。SRCMap 使用存储虚拟化层作为 I/O 重定向机制,提供了一种实际可行的能源比例解决方案,并且因为在虚拟化层,它不会改变底层物理卷(如 RAID)控制器的基本属性。以下是 SRCMap 的几个设计决策。
设计决策 1 - 多重复制目标
细粒度能源比例性能需要能够一次一个地增加或减少活跃物理卷数量的灵活性,在 SRCMap 中,作者为每个 vdisk 创建一个主 mdisk,并在多个辅助 mdisks 上仅复制每个 vdisk 的工作集。这确保了每个 vdisk 都可以被转移到多个目标 mdisks 中的一个上,并且每个目标 mdisk 可以为多个 vdisks 提供 I/O 工作负载。高负载期间,每个 vdisk 将映射到它的主 mdisk,所有 mdisks 都处于活跃状态;低负载期间,SRCMap 会按比例选择一小部分 mdisks,这些子集可以支持所有 vdisks 的聚合 I/O 工作负载。
设计决策 2 - 采样
创建多个 vdisks 的完整副本是不可行的,因为空间开销很大。根据观察结果1(活跃数据集通常是总使用存储的一小部分)
,SRCMap 通过仅对每个 vdisk 的工作集进行采样并复制工作集,来大大减少维护多个副本的空间开销。由于工作集通常不大,因此空间开销很低。
设计决策 3 - 有序副本放置
虽然“采样”有助于减少副本大小,但为每个样本创建多个副本仍然会导致较大空间开销。作者观察到并非所有的副本价值都是一致的:例如,复制轻负载卷比复制重负载卷更有利,因为重负载卷可能经常处于活跃状态(那么复制重负载卷的益处不大)
;大工作集需要更多空间开销,因此 SRCMap 会选择创建更少副本并尽可能保持其活跃状态。因此按照某种属性来排序副本
有助于最小化活跃磁盘数量,实现细粒度能源比例。
设计决策 4 - 动态源到目标映射和双数据同步
根据观察结果 2,工作负载可能在一段时间内有很大的变化。因此,无法事先确定哪些卷需要处于活跃状态,磁盘关闭时用于任何卷的目标副本选择必须是动态的决策。SRCMap 使用两种机制来更新副本:对于活跃副本,在读取失败的情况下立即进行同步,确保活跃副本不断适应工作负载的变化;对于辅助副本,在主副本和活跃 mdisks 上的任何辅助副本之间使用延迟、增量的后台数据同步。这确保了在副本之间切换只需要最少的数据复制,并且能够很快执行。
设计决策 5 - 粗粒度电源循环
它指的是 SRCMap 实现粗粒度的整合间隔(以2小时为间隔单位)
,在此期间,SRCMap 选择的活跃 mdisks 不会改变。与现有的大多数依赖细粒度磁盘电源模式切换的方案相比,确保了正常的磁盘寿命,提高了可靠性。
SRCMap 架构
组件
Load Monitor 负载监视器
它记录在虚拟化层 vdisk 上的数据访问,并提供两个接口,分别是由复制放置控制器调用的长期工作负载数据接口和由活跃磁盘管理器调用的预测短期工作负载数据接口。
Replica Placement Controller 副本放置控制器
副本放置控制器控制采样和在一个或多个目标磁盘上复制的过程,并在 Replica Disk Map(RDM)中存放工作集与 mdisks 映射关系。
Active Disk Manager 活跃磁盘管理器
在 SRCMap 中管理 Consolidation 步骤。该模块将每个 vdisk 的工作负载强度作为输入,并确定是否可以通过将工作负载重定向到承载其副本的辅助 mdisk 之一来关闭主 mdisk。确定了活跃 mdisks 和活跃副本后,活跃磁盘管理器就会同步已确定的活跃主副本或活跃辅助副本,并更新存储虚拟化管理器的虚拟到物理映射,以便可以重定向 I/O 请求。之后活跃磁盘管理器使用一致性管理器进行同步操作。
Consistency Manager 一致性管理器
它确保主 mdisk 和副本之间的一致性。在关闭一个 mdisk 并激活一个新副本之前,将新的活跃副本与前一个副本保持一致。为了确保重新同步期间的开销最小,活跃数据(主mdisk或活跃副本之一)
与相同数据的所有其他副本之间维护增量关系,定期在他们之间执行同步操作,这样当关闭或激活一个 mdisk 时,能够使需要同步的数据量很小。
Replica Manager 副本管理器
复制副本管理器确保 vdisk 的复制副本数据集能够 vdisk 的工作集变化而变化。如果读取了 vdisk 的活跃副本上不可用的块,导致 Replica Miss,则复制副本管理器会将该块复制到分配给活跃副本的 Replica space,并相应地将该块添加到副本元数据中。最后,在分配给副本的 Replica space 已满的情况下,副本管理器使用最近最少使用(LRU)策略来收回较旧的块;如果活跃数据集发生剧烈变化,则可能会出现大量复制副本未命中。所有这些 Replica Miss 都可以通过主 mdisk 的一次启动来处理。获得新工作集中的所有数据后,主 mdisk 就可以关闭,因为活跃副本现在是最新的。副本元数据的持续更新使 SRCMap 能够满足工作负载转换适应的目标,而无需重新进行的副本生成流程(流程 A)。只有在发生中断性更改时(如向卷添加新工作负载、新卷或新磁盘)
,复制副本生成流程才需要重新运行。
控制流
the replica generation flow(A)
副本生成流(流 A)采样每个 vdisk 的工作集,并将其复制到多个 mdisks 上。此流程由副本放置控制器控制,当 SRCMap 初始化以及配置更改(例如,添加新工作负载或新磁盘)发生时会触发一次。副本放置控制器会从负载监视器获取历史工作负载跟踪,并计算每个 vdisk 工作集和长期工作负载强度。然后将工作集复制到一个或多个 mdisks 上。工作集和目标 mdisks 的映射关系保存在 RDM 中。
the active disk identification flow(B)
活跃磁盘标识流(流 B)在时间段 T 内标识活跃 mdisks 和每个非活跃 mdisk 的活跃副本。该流在合并间隔 T 开始时触发(例如,每 2 小时),并由 Active Disk Manager 管理。Active Disk Manager 向负载监视器查询周期 T 中每个 vdisk 的预期工作负载强度,然后标识活跃 mdisk 和每个非活跃 mdisk 的活跃副本,通过一致性管理器维护一致性,并更新虚拟到物理映射,以将工作负载重定向到适当的 mdisk。
the I/O redirection flow(C)
I/O 重定向流(流 C)用于将 I/O 请求重定向到主副本或活跃副本。确保每个 vdisk 的工作集保持最新,并能够处理 Replica Miss 等情况。
算法
之前提到作者认为所有创建的副本都有不同成本和效益,如果 vdisk 工作集较小的话,则创建副本的空间成本较低;如果 vdisk 工作集稳定且平均负载较小,则可以很容易在目标 mdisk 上找到空闲带宽。因此,两个算法的目标都是确保为具有更高成本效益比的 vdisks 创建更多副本。
Replica Placement Alogorithm
Replica Placement Alogorithm 副本放置算法的目标是如果活动磁盘管理器决定关闭 vdisk 的主 mdisk,则它需要能够找到至少一个承载其副本的活动目标 mdisk,并且保持顺序性 Ordering Property。顺序性
指的是对于任意两个 vdisk “初始 vdisk 排序”
,基于它们的成本-收益权衡在 vdisks 之间创建一个排序的顺序。对于每个磁盘
其中 (峰值 I/O 带宽与峰值功率之间的比率)
,(以 IOPS 为单位)
,(常见的磁盘主轴数有单盘面和双盘面)
。而
第 2 步是“二部图创建”
,创建一个二部图 G(V → M),每个 vdisk 作为源节点 ($P_i$ 较大的磁盘位于顶部)
,初始化每个边缘(“源-目标映射”
,算法选取 Replica space 尚未分配的最顶层目标 mdisk “重新调整边缘权重”
,假设 vdisk ($M_{least}$ 是 $T_i$ 中 $P_i$ 最小的 mdisk)
。如果一组目标 mdisks 中的某个 mdisk 停止运行,那么有可能需要分配一个新的目标 mdisk。在活跃磁盘识别期间, (k 应该指的是新的目标 mdisk,而 j 指的是停止运行的目标 mdisk)
重新计算了权重后,从源-目标映射步骤再开始迭代,直到所有副本都分配给了目标 mdisks。
Active Disk Identification
目标是识别出活跃 mdisks 和活跃副本。首先是“活跃 mdisk 选择”
,使用前一个间隔期(指两次磁盘调度之间的时间间隔)
内 vdisk 的工作负载作为下一个间隔期内 vdisk 的预测工作负载。并将所有 vdisks 的预测工作负载之和作为预期聚合负载,使用此预期聚合负载来识别最小的一组 mdisks(按照
第 2 步是“活跃副本识别”
,为每个非活跃 mdisk 在一个活跃 mdisk 上标识一个副本,以处理从非活跃 mdisk 重定向的工作负载,并且使具有较大
最后就是进行“迭代”
,若成功找到所有非活跃 mdisks 的活跃副本,则算法终止;否则,活跃 mdisk 数量加 1,算法重复执行活跃副本识别步骤。
实验评估
作者使用了两组实验进行评估,一个使用基于 SRCMap 的存储虚拟化管理器原型,另一个使用植入原型的能量模拟器。使用的工作负载包括对8个独立数据卷的 I/O 请求,每个数据卷映射到一个独立的磁盘驱动器(如表 3,包括平均工作负载能力和最大工作负载能力)
。Testbed 是一个单机 Intel Pentium 4 HT 3GHz,内存 1 G,通过 SATA-II A 和 B 连接 8 个磁盘(如图 8,展示了整个实验设置)
;测试的 Baseline 包括:(Prototype 下)没有进行任何合并操作且所有磁盘一直处于活动状态;(Simulator 下)是 Caching-1、Caching-2、Replication 这三个对比方案。所有实验的配置参数包括:Consolidation 间隔设置为 2h,以保证磁盘可靠性;非活跃磁盘,使用了 2min 超时时间,超过 2min 会被关闭;在一个 Consolidation 间隔内,活跃 mdisk 保持持续活动;工作集和副本是基于三周的工作负载数据创建,因此为了简洁,作者报告了随后 24 小时的持续时间结果。作者使用 5 个 IOPS 估算等级(L0 到 L4),以模拟不同负载因子下的 Testbeds ,表 4(a)中提供每个卷在不同登记下的可持续 IOPS,活跃 mdisk 数量不同时存储系统功耗在表 4(b)中呈现。原型测试根据真实的存储系统运行评估 SRCMap,通过 Reporting 模块实现对功耗和 I/O 性能的影响的实际测量;模拟器测试能够在模拟时间内进行较长时间的实验,可以模拟各类型 storage testbeds 以研究在各种负载条件下的性能。
Prototype结果
图 9 是 SRCMap 的能耗节省情况。使用 L0 级 IOPS,平均每次能将 4 个左右 mdisks 停转,可以节能约 35%;使用 L3 级 IOPS,能将 7 个 mdisks 停转,节能约 60%。功耗的波动与计划和非计划(由于读取未命中)
的 mdisks 激活有关,这些情况很少发生。
图 10 是 Consolidation 带来的损失情况,描述了三种不同配置(baseline-on, L0,L3)的响应时间的累积概率密度函数。为了减少同步 I/O 的干扰,将同步 I/O 限制为每 10 毫秒一个。上图中,对于大于 1ms 响应时间,baseline 性能优于 L0 和 L3;小于 1ms 响应时间 L0 和 L3 性能优于 baseline。由于 L0 相比 L3 有更多的 mdisk 可用,响应时间比 L3 稍微更好。之后作者进行 2 次附加实验研究同步 I/O 的影响。第 1 次禁用了所有同步 I/O,第 2 次禁用了所有前台 I/O,只有同步 I/O。图中可以说明同步读取导致了 L0 和 L3 响应时间的增加。没有同步 I/O 的 CDF与 baseline 更接近,请求延迟大于 1 毫秒的个数减少了约 10%。
Simulator 结果
首先是能耗的对比实验。实验组是 SRCMap 的 L0 级 IOPS 和三个备选方案(Caching-1、Caching-2 和 Replication)
。其中,Caching-1 是使用 1 个额外的物理卷作为缓存,如果观察到的总负载小于缓存的 IOPS,则将工作负载重定向到缓存,否则使用原始 mdisk;Caching-2 使用 2 个缓存;Replication 则是创建副本对,其中一卷上的所有数据在另一卷上进行复制。如果总负载低于其中一个卷的 IOPS,则只保持一卷处于活跃状态,否则两个都保持活跃状态。图 11 是能耗对比。SRCMap 如果发生读取不命中,会产生瞬时功耗峰值,需要激活额外的 mdisk。每个方案在不同整合间隔上表现出不同程度的能源比例。SRCMap(L0)在所有间隔上均消耗了最少的功耗,且其功耗与负载成比例。Replication 也展示出较好的能源比例性,但平均功耗较高。Caching-1,2 的能源比例最低,只有两个有效的能源水平可供使用。在每个整合间隔中,SRCMap 重新映射(即更改活跃副本)
的 mdisks 数量最少。作者还测试了 Caching-1、Caching-2 和 Replication 分别使用了额外的存储空间 12.5%、25% 和 100%,结合图 13 的空间开销情况,SRCMap 只需额外的 10% 存储空间就能实现几乎所有的节能。图 12 是 SRCMap 在 L3 级 IOPS 下的功耗统计,SRCMap 将工作负载整合在 D2 和 D3 上,可以看出各个 disk 的启动次数都不超过 6 次,因此不会牺牲磁盘的可靠性。图 14 是作者针对 5 个 IOPS 估计水平 L0 到 L4 级,在每个 2 小时的整合间隔内评估了能耗情况。负载因子(负载因子是观察到的平均 IOPS 负载与所有卷的预估 IOPS(负载估计水平)之间的百分比关系)
是一个连续变量,但是 SRCMap 的能耗是离散的。SRCMap 每次只能改变一个 disk,因此 SRCMa p中不同的功耗水平之间的差异大约是一个物理卷的差异。因此 SRCMap 在具有 N 个 mdisks 的系统中能够实现接近 N 级的能源比例。
总结
作者针对数据中心的能源消耗问题,通过设计存储虚拟化层实现一个能源比例存储系统。通过采样工作集,使 workload 集中在少数活跃 mdisks 上,从而让能源消耗与 I/O 工作负载强度成比例,并且能够满足细粒度能量比例、低空间开销、可靠性、工作负载转换适应和异构支持的所有期望设计目标。后续的研究方向可以朝着以下方向发展:优化 consolidation 性能的新模型、调查 consolidation 期间逻辑卷之间工作负载相关性、优化副本同步的调度以最小化对前台 I/O 的影响等等。