在过去的 20 年里,我们见证了存储从一种具有固定可靠性、性能和容量的“哑”资源转变为一种更智能的资源,这种资源实际上可以在数据管理中发挥作用。然而,尽管存储系统的能力不断增强,但传统的存储管理模型使得有效地利用这些数据管理能力变得困难。最终结果是过度配置和未充分利用。简而言之,尽管承诺是智能共享存储将简化数据管理,但现实却并非如此。
为了解决数据管理的实际挑战和传统存储管理的缺点,我们提出了一个基于以下三个观察结果的新数据管理框架
在 NetApp,我们构建了这样一个框架,并发现它通过在数据管理员想要执行的数据管理任务的上下文中呈现存储管理,从而极大地简化了存储基础设施的管理。
在本文中,我们指出了导致我们拒绝传统数据管理模型的业务和数据管理趋势。然后,我们描述了我们构建的数据管理框架以及利用该框架的首批产品。
我们已经看到为了降低成本而转向更多共享基础设施的趋势。这种趋势,以及不断变化的数据管理需求,最终影响了数据和存储管理的实际完成方式。
主要的 IT 挑战是如何以合适的成本为电子邮件等功能服务配置附加了正确数据服务的功能服务。或者换句话说,电子邮件必须具有正确的副本数量,CEO 的电子邮件不得被删除,并且电子邮件服务必须能够容忍各种故障并从中恢复,而不会超出预算。未能做到这一点将导致停机——而停机时间,取决于当月的那一天,可能会影响业务。
为每个功能服务分配物理资源从根本上来说是一种不可持续的模型。设备和物理空间方面的成本使得这不可能实现。此外,现有设备未得到充分利用,因此企业试图在购买新设备之前充分利用现有设备。
利用共享资源需要某种形式的虚拟化,从而导致服务器和存储虚拟化的采用。服务器虚拟化用于将许多未充分利用的物理服务器整合到较少数量的物理服务器上。存储虚拟化用于创建大于或小于底层物理磁盘的存储容器,从而提高磁盘利用率。与服务器虚拟化一样,存储虚拟化的功能不仅仅是提高利用率。存储虚拟化可以成为透明数据迁移、数据复制、精简配置以及节省空间和时间的备份(称为快照)的基础。1 与服务器虚拟化不同,存储虚拟化的全部潜力尚未实现,原因在于两个明显的挑战:底层技术的局限性以及利用虚拟化功能所需的复杂管理握手。
作为这些挑战影响的一个例子,考虑需要备份的电子邮件应用程序。企业希望每小时进行一次备份。现实情况是,除非这些备份以节省空间和时间的方式完成,否则成本将过高。存储架构师已经虚拟化了存储,他观察到存储系统提供了一种节省空间的备份方案,可以满足应用程序的需求。这些备份(快照)只需几分钟即可完成,可以每小时执行一次。它们不会影响应用程序性能,并且仅消耗实际更改的空间量。因此,存储架构师向业务和应用程序管理员建议他们使用这些快照。
现在,存储架构师遇到了两个明显的问题。第一个问题是快照不是免费的,因为存储系统可能对可以拍摄多少快照有系统范围的限制。因此,存储架构师必须确保没有单个应用程序管理员拍摄过多的快照。第二个问题是应用程序管理员通常需要应用程序一致的快照,这需要跨应用程序、服务器和存储进行协调。实际上,协调需要跨多个管理组进行协调,这些管理组详细了解其基础设施的复杂性。
假设企业可以容忍每 12 小时执行一次备份,并且愿意容忍这些备份期间的某些性能下降。应用程序管理员可能能够说服企业购买更多存储并使用效率较低的基于应用程序的备份,而不是处理复杂的协调工作。这种类型的备份可能效率较低,因为它是一个数据的完整副本,然后进行压缩步骤。使用基于应用程序的备份,无需协调工作来限制快照的数量,也无需存储、服务器和应用程序组之间进行复杂的协商。存储基础设施管理的复杂性使得权衡效率较低的机制的简单性变得有价值。由于这种权衡,应用程序在容量方面被过度配置,而在数据保护方面被配置不足。
如果没有有效的存储虚拟化以及利用该存储虚拟化的能力,我们将面临所有可能情况中最糟糕的情况。我们的基础设施能力越来越强,但需要越来越复杂的管理员,这使得利用该基础设施的能力变得越来越困难。为了补偿这种管理复杂性,我们购买了更多存储。当然,这带来了如何更有效地利用我们拥有的资源的不同挑战。这又使我们回到了想要使用虚拟化的初衷……
传统上,数据管理是关于确保数据的活动副本可用,并且可以访问一定数量的副本。问题相对简单明了。监控主存储系统的健康状况。备份软件跟踪磁带上存在的副本数量。
这种数据管理方法可以描述为使用基础设施作为管理数据的代理。它假设只要您了解基础设施在做什么,您就可以推断出数据的管理方式。
只要代表单个数据 LUN(逻辑单元号)的基础设施组件数量较少,使用基础设施作为代理就可以正常工作。三种技术趋势和两种监管趋势打破了这种假设。
第一个技术趋势是磁盘作为存储副本的可行技术的出现。与磁带不同,磁盘可以用于只读和读写数据。事实上,只读副本和读写副本之间的区别是副本的语义,而不是介质的属性。因此,副本开始被视为可用于其他目的的读写副本。
第二个技术趋势是存储系统本身变得更智能。例如,创建节省空间的可写副本(例如 NetApp FlexClones2)的能力改变了创建多 TB 副本的经济性,从而实现了使用完整副本在根本上成本过高的用例。特别是,在测试和开发环境中,以一小部分成本和一小部分时间创建多 TB 数据库副本的能力改变了数据库开发的经济性。
这两种技术趋势都导致创建了更多的数据副本。与磁带不同,基于磁盘的副本可以用于除恢复以外的其他目的;因此,副本有自己的数据管理策略。然而,由于副本依赖于原始副本,因此管理逻辑数据单元需要管理主副本和所有相关副本。因此,对于任何单个逻辑数据单元,不同存储容器的数量都会增加,从而打破了作为数据管理代理的基础设施方法的潜在假设——即,每个 LUN 的存储容器数量很少。
第三个技术趋势是存储虚拟化本身的出现。这使得在相同数量的磁盘上创建更多的存储容器成为可能。此外,存储虚拟化使创建存储容器变得容易得多。
改变存储方法的第一个监管趋势是跟踪数据的需求。了解数据在哪里以及谁可以访问数据,以及安全删除数据的能力变得至关重要。由于必须跟踪包含数据的不同基础设施位的数量,因此在基础设施级别进行管理会受到限制。当这种趋势与可写副本的激增相结合时,会增加必须为任何单个 LUN 管理的存储容器的数量,从而打破了作为数据管理代理的基础设施方法的潜在假设。
第二个监管趋势是数据本身具有超越任何存储系统生命周期的寿命。磁盘和存储控制器必须在 10 年后更换。医疗数据必须可用 90 年。随着基础设施本身随时间推移而变化,使用基础设施来管理数据变得有问题。
作为使用基础设施作为数据管理代理的局限性的具体示例,请考虑 SAN(存储区域网络)上的 Oracle 数据库。假设 Oracle 数据库使用三个不同的 LUN 来存储不同的组件。假设数据库需要复制到远程站点以防止站点灾难。现在,单个 Oracle 数据库在远程系统上使用了另外三个 LUN。必须监控和跟踪这些辅助 LUN 和三个复制关系。
此外,假设我们在远程站点上创建了 10 个 Oracle 数据库克隆用于测试和开发,从而创建了 30 个新的 LUN。如果我们要使用基础设施来管理数据,我们将不得不管理 36 个 LUN、三个复制关系和两个存储系统,总共 39 个不同的对象,而实际上管理的只是一个 Oracle 数据库及其副本。
面对如何利用存储基础设施的复杂性,存储架构师面临两种基本方法:孤立主义和基础设施管理。
孤立主义,以 ILM(信息生命周期管理)或 HSM(分层存储管理)为代表,试图通过自动数据分类来解决数据管理问题。ILM 或 HSM 背后的想法是,您可以通过检查数据自动了解数据的价值。一旦您了解了价值,您就可以将策略应用于数据,从而解决整个数据管理问题。该模型的缺陷在于,尽管存储系统可能包含数据,但数据是不完整的,因为它在业务环境中具有价值,而这种价值无法通过简单的检查来推断出来。
基础设施管理,以 SRM(存储资源管理)为代表,试图通过编目整个基础设施来简化问题。假设是,如果您了解基础设施,那么您可以将基础设施用作管理数据的代理。当面对 SRM 空间的复杂性以及基础设施作为代理迫使管理员通过管理 223 个不同的组件来管理单个 Oracle 数据库的事实时,这种方法就失败了。
为了解决如何在不增加大量人员来管理虚拟化的情况下有效利用存储虚拟化的基本挑战,我们在 NetApp 采取了一种不同的方法,我们称之为 IDM(集成数据管理)3。这种方法的目标是使数据管理员能够直接管理他们的数据,同时让存储架构师对任何人可以使用他们控制的资源做什么拥有最终控制权。我们称之为集成数据管理,因为它通过自动化集成数据和存储管理,并通过特定于应用程序的集成集成应用程序和数据管理。
IDM 模型有三层。最上层以应用程序的上下文向数据管理员呈现数据服务。例如,我们提供允许 Oracle 数据库管理员直接备份数据库的工具,这些工具了解如何将数据库映射到底层存储容器和存储操作。
接下来是一组新的数据管理抽象和一个自动化层,该层由基于角色的访问控制机制、一致性引擎和一个包含这些对象定义的中央存储库组成。
IDM 模型的最低层由普遍存在的存储虚拟化组成,这使得存储基础设施重新配置成为可能。
我们用来解释 IDM 模型的类比是 ATM。通过 ATM,银行可以将在任何时候提取资金的权利委托给客户,但银行保留对可以提取多少资金以及在某些情况下提取资金成本的最终控制权。通过使用 ATM,银行能够减少提取的现金量,从而增加其整体资产。实际上,银行在降低成本和提高客户满意度的同时提高了资产利用率。
IDM 环境中的应用程序集成与传统的 SRM 不同。在 IDM 中,目标是将应用程序集成到我们的数据管理基础设施中,以便应用程序管理员可以控制数据的数据管理策略。在传统的 SRM 中,应用程序集成是关于提供主机代理,使存储管理员能够控制或至少监视应用程序的存储使用情况。区别在于目标受众及其功能。
在 NetApp,我们交付了多种产品,包括 SMO(SnapManager for Oracle),这些产品证明了这种形式的应用程序集成的价值。数据库管理员使用 SMO 来克隆其数据库或以一种利用底层 NetApp 存储虚拟化的方式执行热备份。实际上,SMO 将数据库和对数据库的所需操作(克隆或热备份)映射到数据库、服务器和存储系统上的一系列操作,使数据库管理员能够直接管理存储虚拟化,而无需成为存储专家。
应用程序集成的一个持续挑战是覆盖范围。最终,这种方法的成功将取决于应用程序供应商或管理员进行集成的容易程度。
IDM 的一个重要方面是引入了一组新的数据管理对象以及应用程序和数据管理员与之交互的相应自动化层。这些新对象和自动化层的目的是抽象出存储基础设施的细节,并使更高级别的工具或用户能够在无需学习基础设施细节的情况下与其数据进行交互。此外,这一层还提供了对存储资源的控制。
数据管理抽象是数据集、策略和资源池。数据集表示数据及其所有副本的集合,或者,表示文件或结构化数据及其副本的集合。它指的是包含在一组存储容器(例如 LUN)中的数据,而不是存储容器本身。数据集是所有数据管理员或与框架集成的应用程序使用的基本数据句柄。策略描述了应如何配置包含数据集的存储容器。此配置指定了数据集的配置方式以及应如何保护数据集。资源池是由存储管理员管理的物理存储资源的集合。
自动化是通过一致性引擎提供的,一致性引擎执行确保数据集策略和包含数据集的存储的实际配置匹配的关键任务。一致性引擎持续监视存储基础设施,将数据集策略与存储的当前配置进行比较。如果存在不匹配,则一致性引擎可以重新配置存储以满足策略。例如,如果数据集未被复制,并且策略要求对其进行复制,则一致性引擎将在辅助系统上创建存储对象,并在主系统和辅助系统之间配置复制。
灵活的 RBAC(基于角色的访问控制)系统控制哪个管理员可以对哪个对象执行哪个操作。4
考虑前面描述的电子邮件示例。存储架构师首先配置两个资源池:一个用于主存储,另一个用于远程存储。然后,存储架构师创建一个名为“电子邮件服务器”的策略,该策略描述了数据集的复制和配置方式。要配置新的电子邮件服务器,数据管理员只需选择“电子邮件服务器”策略,配置一些特定于每个数据集的参数(例如名称和大小),然后为主要和远程存储选择适当的资源池。然后,一致性引擎创建主要和辅助存储对象,并配置复制关系。稍后,如果存储架构师更改电子邮件服务器策略(例如,增加复制频率),则一致性引擎会将策略重新应用于存储,从而更改复制参数。
NetApp 的第一个包含数据集的系统是 Protection Manager。5 使用 Protection Manager,存储架构师可以定义描述应如何保护数据集的策略。然后,可以将这些策略委派给备份管理员,他们可以反过来使用这些策略来保护特定的数据集。Protection Manager 中的一致性引擎确保数据集得到正确保护,并且可以将任何特定问题(例如空间不足或备份失败)通知存储架构师或备份管理员。
不断变化的业务和数据管理需求正在推动 IT 行业寻找更好的数据管理方法。存储虚拟化简化了数据管理,因为它允许动态重新配置共享存储资源。然而,如果没有存储虚拟化和数据所有者之间正确的管理基础设施,杠杆作用将会丧失。传统的存储管理模型是不够的,因为它们要么完全关注基础设施,要么不允许数据所有者管理数据。
集成数据管理是我们 NetApp 为利用我们核心平台中的虚拟化来简化数据管理而采取的一种方法。这种方法已经产生了一些有希望的早期结果。但是,还有更多工作要做。
KOSTADIS ROUSSOS (http://www.krung.net/blog) 是 Network Appliance 的技术总监,他将大部分时间用于开发利用存储虚拟化和应用程序集成来简化数据管理的产品。他目前专注于架构工具。
最初发表于 Queue vol. 5, no. 6—
在 数字图书馆 中评论本文
Pat Helland - 关注您的状态以了解您的心态
应用程序在进入分布式和可扩展世界时经历了有趣的演变。同样,存储及其近亲数据库也与应用程序并肩发展。很多时候,存储和应用程序的语义、性能和故障模型都在微妙地变化,以支持不断变化的业务需求和环境挑战。在组合中添加规模确实激起了波澜。本文着眼于其中的一些问题及其对系统的影响。
Alex Petrov - 现代存储系统背后的算法
本文仔细研究了现代数据库(读取优化的 B 树和写入优化的 LSM(日志结构合并)树)中使用的两种存储系统设计方法,并描述了它们的使用案例和权衡。
Mihir Nanavati, Malte Schwarzkopf, Jake Wires, Andrew Warfield - 非易失性存储
对于大多数执业计算机科学家的整个职业生涯而言,一个基本观察始终成立:CPU 的性能和成本都显着高于 I/O 设备。CPU 能够以极高的速率处理数据,同时为多个 I/O 设备提供服务,这一事实对各种规模系统的硬件和软件设计产生了深远的影响,几乎只要我们一直在构建它们。
Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau - 崩溃一致性
数据的读取和写入是任何冯·诺依曼计算机最基本的方面之一,但却出奇地微妙且充满细微差别。例如,考虑在具有多个处理器的系统中访问共享内存。虽然程序员最容易理解一种称为强一致性的简单直观的方法,但许多较弱的模型已被广泛使用(例如,x86 总存储顺序);这些方法提高了系统性能,但代价是使关于系统行为的推理更加复杂且容易出错。