大型企业的存储管理员可以借鉴全球主要的超大规模云计算提供商的基础设施设计原则来优化自己的存储系统和操作。
为超大规模云平台提供动力的数据中心和IT系统代表了IT基础设施设计和实施的顶峰。它们提供超出企业需要的可扩展性、可靠性和吞吐量水平。
也就是说,包括存储管理员在内的企业IT团队可以从Google、AWS和其他全球主要公有云提供商那里学到很多东西。通过采用某些超大规模数据中心设计原则,存储管理员可以致力于打造更具可扩展性、弹性和自动化的IT存储系统。
关键的相似性和差异
超大规模云计算提供商和企业IT运营商都在努力适应数据的爆炸式增长。在支出方面,他们也有相似之处。在构建服务器和存储系统时,这些支出对云计算运营商和在线服务提供商都很重要,由于IT系统中的设备数以万计,看似很小的成本将会积少成多。虽然有些企业不太关注这样的成本,并且愿意为值得信赖的云计算供应商的产品支付更多费用,但没有任何IT组织愿意浪费。
为了最大限度地降低运营成本(这是IT成本优化的一个关键方面),超大规模云计算提供商并不需要人工监督的每项任务实现自动化。任务自动化的关键是软件,在云计算基础设施的背景下,它需要用可以在标准服务器上运行的可扩展软件替换特定功能的硬件。
超大规模云计算运营商的这些和其他要求以多种方式重塑了服务器、网络和存储行业,其中包括:
- 分布式冗余和可扩展性的新技术;
- 专注于由商品组件构建的灵活硬件;
- 伴随着从专用设备到在易于更换的标准服务器上运行的软件定义服务的转变。
一旦IT组织和工程师采用云计算方法来处理,它就将所有IT服务(无论是计算资源还是存储池)转换为软件处理。
超大规模数据中心设计和存储影响
虽然传统企业和公有云基础设施之间存在相似之处,但这种类比并不适合。例如,传统架构往往涉及IT团队必须人工管理和修改的高成本基础设施。这些架构也往往具有少量固定数量的组件。然而,这种传统的固定基础设施对于公有云来说没有意义,因为云计算具有按次付费模式;如果企业减少其基础设施足迹,就可以降低成本。公有云资源也会自动扩展。因此,随需应变的云服务属性不适用于私有基础设施。
尽管如此,IT团队可以应用以下超大规模数据中心设计原则来优化企业存储:
(1)采用软件抽象层
服务器是第一个虚拟化的基础设施层,在物理硬件和逻辑资源之间有一个软件抽象层。虚拟机(VM)成为企业应用程序的标准运行时环境。在过去的十年中,随着虚拟机演变为容器,软件虚拟化已经遍布整个数据中心。软件定义网络催生了软件定义广域网、网络功能虚拟化和虚拟网络覆盖。软件定义存储(SDS)已将数据存储设备与信息管理和数据放置控制平台分离。
最初的软件定义存储(SDS)平台是为特定用途而设计的,例如为虚拟机实例和数据库提供块卷。最近的产品变得与格式和协议无关,能够跨多个节点分片数据并将其呈现为逻辑卷、网络文件共享或对象存储。为了提供硬件的灵活性,软件定义存储(SDS)还可以与具有集成JBOD SSD、HDD硬盘和NVMe设备的标准服务器配套使用。
(2)构建服务而不是基础设施
通过将资源与物理硬件隔离,软件抽象层提供了混合和匹配硬件的灵活性,可以让团队将资源打包为服务而不是原始基础设施。企业从超大规模云计算提供商那里获得启发,使用软件定义存储(SDS)提供对象、文件或卷服务,这些服务不仅包括容量,还包括备份、长期存档、版本控制和质量保证(QoS)级别等具有价值的辅助功能。
交付服务而不是基础设施也为基础设施设计和相关服务的打包提供了灵活性。它可以在不更改交付和计费模型的情况下实现功能和性能升级。借助存储即服务,管理员还可以使用具有不同性能和成本特征的服务器和驱动器来提供不同的服务层,以及将数据分布在多个数据中心和区域之间以获得更高的可用性。
(3)自动化设计
用软件定义的数据和信息管理服务代替原始存储也促进了任务自动化。这反过来又降低了运营支出,减少了配置时间,并提高了可靠性。软件定义存储(SDS)支持编程控制,因为它公开了大量用于存储配置、部署、软件更新和用户配置的API。如果希望像超大规模云计算提供商一样提供存储,可以在Terraform、Ansible、SaltStack或VMwarev Realize Automation等自动化和基础设施即代码平台中使用软件定义存储(SDS)产品公开的API,因为这会将人工流程转换为可编程脚本。
(4)计划失败
服务器和存储设备经常宕机。而对于拥有数十万台服务器和数百万个驱动器的云计算提供商来说,发生故障屡见不鲜。应该为应对失败进行设计,确保宕机的驱动器或服务器不会破坏存储卷或对象blob。一种标准技术涉及将文件、blob或卷分片为在多个驱动器、节点和数据中心之间复制和分布的块,使用纠删码、散列或类似算法来保证数据完整性。
有些故障不涉及数据破坏,而是损坏或性能损失。云计算运营商可以持续监控此类事件,并使用自动通知系统和脚本来修复或减轻损害,而无需人工干预——并且希望在用户注意到之前解决。监控还可以确定任何损坏或中断的程度,并将传入的存储请求路由到完整的副本和未受影响的数据中心。
(5)强调可扩展性
IT团队一直在努力满足存储容量需求。但是如今,加速的数据增长已经在许多企业中带来了危机。要像超大规模云平台一样构建存储,需要按照摩尔定律类型的增长进行设计。管理员应该能够添加存储节点和JBOD阵列以无中断地扩展横向扩展系统。
软件定义存储(SDS)对此类设计至关重要,因为它将控制平台(卷、文件和节点管理和配置)与数据平台(存储节点和阵列)分开。因此,向分布式系统添加容量不需要删除和迁移卷。相反,IT人员可以添加节点,并使系统能够在新的可用容量之间自动重新分配数据。
与传统的基于SAN的企业存储设计不同,超大规模云平台不会纵向扩展和整合——它们横向扩展和分布。他们还使用监控遥测和预测机器学习算法来确定容量增加的扩展配置文件,其目标是在不浪费太多预留空间的情况下拥有足够的容量。
(6)记住机器是可替代的
与传统存储系统相比,运行软件定义存储(SDS)堆栈的标准服务器可以节省资金。企业可以采用廉价的商品服务器替代昂贵的专有存储硬件。然而,这些服务器是可替代的,由于每个文件或数据块都在多个节点上的驱动器之间复制,因此一两个系统的故障不会影响整个数据量。机器互换性和数据冗余还让IT人员可以在方便的时间批量进行维修或更换。
企业的IT组织必须能够证明横向扩展分布式设计所需的系统数量是合理的。