它在备份地狱中的孤儿数据:否,它不是关于存储管理员的netflix系列...

...这是生产应用程序的生产


面试 感谢您当地的Devops团队,集装箱应用正在进行生产环境。但是,这可能是存储管理员受伤世界的开头。

与当前的生产环境不同,没有备份数据参考框架可以打电话给集装箱应用程序,这导致孤儿数据等问题和保护不足。

瑞典人 谈到架构它的Guru Chris Evans关于这个问题的克里斯埃文斯。他告诉我们,集装箱的文件系统提供的数据将比块存储更好,因为它可以提供必要的元数据挂钩以使备份可用。

企业技术新闻:您可以原则上解释为什么备份数据需要某种参考框架,以便有用吗?

克里斯埃文斯: 非常简单地,应用程序包(服务器,虚拟服务器,容器)具有有限的生命周期,并且将生存在于它们包含的数据。我们需要一种外部方式来显示应用程序数据在其寿命上存在的位置。

El Reg.:如果备份数据没有参考框架,则是什么情况?它基本上没用,因为它无法恢复?这是为什么?

克里斯埃文斯: 想象有数百或数千个虚拟服务器的网站。每个服务器都不太可能被提供有意义的名称。相反,将使用通用名称,其中包括Location,虚拟环境,平台等等引用。某种形式的应用可能可能是可见的,但具有有限的角色,这是不可能完全描述的。

这里的一个解决方案是在虚拟环境中使用VM的标记(尽管标签是自由形式,并且再次是问题)。如果从虚拟环境中删除任何虚拟服务器,则在搜索中不再存在并且不可见。然后,其存在的唯一记录在备份环境中。

如果备份环境不保留标签,则应用程序上唯一的信息是服务器名称。在六到12个月后发现这个名称可能是一个真正的挑战。

El Reg.:作为计算的参考框架的这一概念如何通过其大型机,迷你计算机,服务器和虚拟化服务器的阶段来传递?

克里斯埃文斯: 多年来,我们已经从大型机移动到专用客户端/服务器硬件,以便虚拟化。在每个阶段,“源”应用程序相对容易识别。因为:

  • 大型机 - 永久部署,持续的岁月。通常通过具有合理名称或在应用程序池中的卷(LUN)备份的数据。由于环境的静态性质,易于映射应用程序/数据。
  • 服务器硬件 - 有效的永久应用主机。服务器部署3-5 +年,使用标准命名,应用程序/数据仅在刷新服务器时在其他地方移动。唯一有风险的时间是刷新应用程序或移动到另一台服务器时。支持团队需要知道申请先前在哪里。
  • 虚拟服务器 - 通常最多3年的寿命,通常是静态名称。相对容易知道应用程序生活在哪里,尽管刷新可能更频繁地发生到新的VM,因为它有时更容易从头开始构建而不是升级到位。 IT组织越来越多地重建来自模板或“代码”的VM,并重建时注入数据,而不是恢复整个VM。这是从应用程序代码和“包装器”的应用数据(例如,VM和操作系统)分离。

在上述所有示例中,跟踪应用程序的元数据的库存可以与物理或虚拟服务器对齐。

数据保护系统需要提供某种形式的库存/元数据,允许将应用程序名称易于映射到应用程序包。通过长时间运行的系统,即使库存实践差,本地网站知识趋于帮助(开发人员知道他们支持的应用程序/服务器的名称)。

但是,IT组织不应依赖备份系统作为记录系统,因为服务器被删除/刷新并在灾难发生时,执行恢复的工作人员可能没有网站知识。

El Reg.:使用文件或块(LUN)是否更好备份?

克里斯埃文斯: 如果我们随着时间的推移回顾备份环境,所有备份系统都备份了文件或应用程序级别。这是因为数据本身具有与之关联的元数据。

文件备份具有文件名,日期,时间等。数据库备份具有数据库名称,表名称等。

RAW“LUN”没有与之相关的元数据。我们无法看到内容,除非有某种方式将元数据分配给LUN,我们无法识别它来自的位置,安全协议或任何有价值的东西。

备份系统无法(轻松)索引LUN图像副本,我们只能执行块的基本重复数据删除以保存备份空间。例如,我们不能从LUN图像复制中部分恢复,除非我们可以看到内容。

值得注意的是,当然,备份系统可以安装卷并尝试阅读它。这是一个多年前从快照或克隆索引/备份数据的过程,但它是乏味的。 LUN快照将“崩溃一致”,除非我们有一些主机代理以在拍摄副本之前静止应用程序。无法保证可以成功恢复崩溃一致的卷。

El Reg.:Containeration是否完全改变了事物?

克里斯埃文斯: 容器延长寿命范例,可以存在数小时或数天,甚至几分钟。

繁忙的集装箱环境每天可以创造和销售数百万个集装箱。这可能是有各种原因:

  • 扩展/下降处理以满足需求(想想Web服务器进程增加,以管理日间流量并在夜间减少)
  • 由于错误 - 容器应用程序崩溃并重新启动。
  • 代码升级。添加了一个新功能的应用程序。容器图像简单地从新代码重新启动以实现更改。

现在我们已经将数据与应用程序“包”分开。两者都独立运作。这对开发人员来说具有很大的好处,因为分离允许它们彼此并行地测试测试/开发图像,而不是必须共享一个或两个测试/开发环境。将代码推向生产更容易,因为只需要指向生产数据。

与容器的第二个挑战是持久数据已映射到它们的方式。原始可笑的假设是所有容器都是短暂的,并且是临时数据来源。

应用程序将受到基于应用程序的复制保护,因此如果任何单个容器死亡,运行应用程序的剩余容器将在重生新容器的同时保持运行的东西,并且重新保护数据(有点像在RAID中恢复失败的驱动器) 。

这当然是胡说八道 并且永远不会在一个体面的企业中过去任何审计员,因为数据丢失的风险非常伟大。

此外,当由于各种原因(如勒索软件)复制/复制数据时,它没有意义。快速业界意识到需要持久存储,但决定拆除映射到运行容器的主机的LUN路由,然后将文件系统格式化到其中。然后将LUN作为文件系统(例如/数据)呈现给容器中。

这个过程有效,但有问题。如果容器主机DIES,则必须将LUN映射到新的容器主机(新的物理或虚拟服务器)。如果有几十个或数百LUN连接到单个服务器,这可能是一个很大问题。

其次,某些操作系统对映射到单个操作系统实例的LUN的数量限制。这立即限制了主机可以运行的容器的数量。

第三,安全模型意味着我们必须允许任何可能在该主机上运行的容器访问LUN - 这是整个主机的安全性或全部。因此,我们需要辅助安全机制,以确保LUN仅映射到我们的应用程序容器。这在像Docker这样的平台的初始实现中,从未存在过。

因此,集装箱引入了许多问题,因为LUN最初是伪物理磁盘,而不是数据的位置。

El Reg.:它是一种情况,它是一个文件的VM可以备份,应用程序是VM,而没有包含包含容器的VM样框架,以便应用程序不能被引用为某种VM - 般的集装箱系统构建体?

克里斯埃文斯: 将VMS与集装箱进行比较;通常,VM将包含数据和应用程序。数据可能位于单独的卷上,这将是一个单独的vmdk文件。使用集装箱生态系统,没有我们可以使用的逻辑连接,因为容器和数据不是“紧密耦合”,因为它们在VM中。

编排了串可所述的容器,如Rubik的立方体的小区,以形成一个应用程序。您无法在容器级别备份,因为您不知道容器在没有参考框架的情况下如何合适。

El Reg.:Kubernetes是否提供所需的框架参考?

克里斯埃文斯: 到一个学位Kubernetes(K8S)有助于帮助。环境使用卷,这些卷具有“POD”的寿命。 POD基本上是组成部分或全部应用程序的集装箱组。如果单个容器模具,则POD允许重新启动,而不会丢失数据。

同样,可以在窗口中的容器之间共享卷。卷的逻辑实现取决于存储它的背衬存储。在AWS上,这是EC2 EBS(提前创建)。像Portworx,StorageOS,Scaleo,Ceph等的解决方案,实现自己的驱动程序,以将卷模拟到POD /容器,同时将数据存储在其平台中。

这些实现大多是用文件系统格式化并呈现给容器的LUN。 K8S中的持久卷现出单个容器,可用于持续数据存储。 CSI(容器存储接口)提供了一些抽象来允许任何供应商对其进行编程,因此传统供​​应商可以将传统LUN的映射映射到容器环境。

K8S中持久卷抽象的问题是平台内置备份界面。 VMware最终将备份API引入vSphere,该vSphere提供了每个VM的已更改数据流。 K8s中没有等同物。因此,您必须从底层背衬存储平台上备份数据。一旦执行此操作,您就会出现打破应用程序和数据之间的关系。

El Reg.:如果服务器运行包含备份的容器化应用程序将恢复该服务器,那么可以恢复备份,在该备份中可以恢复?

克里斯埃文斯: 潜在的作品,但当然集装箱被设计为便携式。将容器应用程序限制为单个服务器意味着您无法在多个物理服务器上缩放和重新分配工作负载。

El Reg.:如果在公共云中运行集装箱应用程序会导致问题?

克里斯埃文斯: 公共云代表另一个挑战。这是因为底层数据平台可以从用户困扰,或者与本地或其他云提供商不兼容。如果你想在一个云中运行但不适合数据便携性,这很棒。

AWS FARGATE(我的知识)是一个没有持久卷数据能力的容器服务。 AWS ECS(ECS Service)有效地是用于自动化容器环境的脚本过程,因此您必须将持久卷映射到代表您构建的主机。这些具有容器的寿命,或者可以与运行ECS的服务器相关联。因此,您必须在该服务器周围构建数据保护。

El Reg.:Containized Apps的备份是否必须只有数据,具有元数据的数据使其可恢复?

克里斯埃文斯: 分别备份数据和容器信息是有道理的。容器(和k8s)定义基本上是yaml代码,因此您将其作为项目分别返回到项目并将其分开备份。

El Reg.:是否需要有一些行业协议,了解需要做什么?这是SNIA的问题吗?

克里斯埃文斯: 我们需要了解在存储级别和数据管理中了解数据挑战的人。这似乎已经悲伤地缺乏码头和K8S社区。斯诺伊可以是一个努力的组织,但我认为他们太专注于基础设施级别。

如果我们使用映射到容器的文件共享(例如,带有客户端演示程序的NFS / SMB或解决运行容器的主机),那么数据将从平台和操作系统中抽象,并且可以由传统备份系统备份。我们可以使用逻辑结构来表示数据 - 例如喜欢那些 微软的DFS - 还可以通过某种令牌系统分配容器环境的文件系统级别的权限。

因此,数据管理,访问,安全性,审计都将在文件服务器级别完成,无论数据是在图形或云中。这就是为什么我认为我们使用(分布式)文件系统进行容器数据更好。 ®


咬住它的手©1998-2021