【问题标题】:What type of "data" does Elastic Block Storage store?Elastic Block Storage 存储什么类型的“数据”?
【发布时间】:2020-02-11 11:54:04
【问题描述】:

我正在准备我的 AWS SAA 考试,在复习各种服务时,我陷入了 Elastic Block Storage 的概念、它究竟存储了什么以及它与 AWS RDS 有何不同。 让我详细说明。

所以据我了解,EBS 是一种将数据保存在 EC2 实例上的存储服务。这很简单,但是当我使用 RDS 时,我对块存储上存储的数据类型以及快照和备份的数据类型感到困惑。这是一个例子。

我是一名 Ruby on Rails 开发人员。我购买了一个 EC2 实例并安装了 ruby​​ on rails、各种 gems、一个 mysql 数据库等。基本上我需要启动并运行以创建一个社交媒体博客应用程序。所以我认为 EBS 所做的是将 EBS 中的用户信息、博客、帖子、cmets 等保存为数据库(使用实例的临时性或使用 ebs 的块)。这对我来说很有意义。用户及其博客、帖子、cmets 等需要存储在某个地方,如果我不知何故丢失了我的 ec2 实例,我不应该担心,因为我拥有包含所有这些信息的 EBS。

现在我切换到 AWS RDS,现在我想知道为什么我什至还需要 EBS?例如,我的 mySQL rds 数据库具有自己的备份和快照,与存储用户数据、博客等的 ec2 实例分开。为什么我现在需要 EBS?我现在还需要吗?如果我确实需要它,既然我将用户信息保存在 RDS 中,那么它在其中存储了什么有价值的东西?如果有人能帮助我理解其中的区别,我将不胜感激。

另外,作为附加问题,我了解 EC2 实例位于 VPC 的公共子网中。此外,我知道根据 AWS,数据库应该位于私有子网上。所以如果我有一个 linux ec2 然后运行sudo apt-get mysql 来安装一个带有 ruby​​ on rails 的数据库,那不是我的 ec2 机器上公共子网中的那个 mysql 数据库吗?

【问题讨论】:

    标签: amazon-web-services amazon-rds amazon-ebs


    【解决方案1】:

    您是否曾经踏上百思买之路并购买了 USB 外置硬盘?您知道...您将用于备份或加载电影以提供给您的朋友的类型。

    好吧,将 Amazon EBS 卷视为该磁盘。它是一个外部磁盘,因此它不是计算机“内部”。您可以将其从一台计算机上拔下,然后将其插入另一台计算机。您可以在其上加载任何类型的文件(Word 文档、PDF、图像、视频)。磁盘本身是愚蠢的——它只是将信息存储在磁盘“块”上。操作系统(Windows、Mac、Linux)知道如何解释信息,以便您可以列出目录、创建文件和读取内容。

    这种类型的存储通常被称为块存储,因为磁盘被分成许多块,它只是被告知“将此数据存储在块 #433” em>。

    Amazon EC2 实例需要磁盘,因为 Windows、Linux 和 Mac 都需要磁盘。操作系统本身存储在磁盘上。当您打开和保存文件时,它们会进入磁盘。您无法在没有磁盘的情况下启动 EC2 实例,因为磁盘包含操作系统。

    但是...虽然您可以将数据存储在附加到 EC2 实例的 Amazon EBS 卷上,但这不一定是一个好主意。如果在 EC2 上运行的应用程序将其重要数据存储在实例外部会更好,因为:

    • 如果实例失败,数据是安全的
    • 多个 EC2 实例可以访问数据(一个 Amazon EBS 卷一次只能附加到一个实例)
    • 可以在不影响数据的情况下升级应用程序

    因此,应用程序应将其数据存储在数据库(Amazon RDS、Amazon DynamoDB 等)或对象存储 (Amazon S3) 等服务中。

    但是,

    Amazon RDS 是一个程序。你与程序沟通,它会做一些事情。在这种情况下,该程序是一个关系数据库。关系数据库使用 SQL 来存储和查询数据。数据存储在表格中,看起来有点像电子表格——它有行和列,您可以对数据运行查询(例如给我国家 = 新西兰的销售额列)。

    但是数据库程序本身在哪里存储数据呢?在磁盘上!事实上,Amazon RDS 将其数据存储在 Amazon EBS 磁盘卷上。数据库程序的工作是告诉磁盘在哪里存储数据以及在哪里读取数据。数据库程序做了所有聪明的事情。

    因此,即使您的 EC2 实例将数据存储在 Amazon RDS 而不是本地磁盘中,数据最终还是会存储在 Amazon EBS 磁盘卷上!不同之处在于该磁盘的内容由数据库管理。您没有对该磁盘的任何直接访问权限。


    至于您的子网问题,是的...如果您在公有子网中的 Amazon EC2 实例上安装数据库,那么该数据库在公有子网中。

    公共子网和私有子网是过去物理网络的遗留物。路由器用于保护网络的某些部分——它们将安装在“子网”之间,控制可以进出子网的流量。这个概念也被带到了云端。

    但是,云甚至比这种类型的网络更好。 AWS 有一个安全组的概念,它就像一个防火墙在每个 EC2 实例上,而不仅仅是子网之间。安全组允许您控制进出 EC2 实例的流量类型。因此,您实际上可以抛弃公共子网和私有子网的概念,而只使用安全组来控制网络流量。然而,网络人喜欢旧概念和它们提供的额外安全级别。因此,他们同时使用安全组和公共/私有子网来添加额外的安全层。

    所以,是的,您可以将数据库放在公共子网中。您可以使用安全组对其进行保护,它将非常安全。但是将它放在私有子网中会增加另一层安全性,当您谈论保护重要数据时,这通常是一个好主意。这就像人们在自家门前安了一道防盗门——这是一道额外的安全保障,让他们感到更加安全。

    【讨论】:

    • 哇,非常感谢这个全面的答案。你的 112k 声望是当之无愧的,我喜欢你把它简单地分解成像我这样的傻瓜:) EBS 作为 USB 的例子确实帮助我巩固了这个概念。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多