Elastic Block Storage 存储什么类型的 "data"?

What type of "data" does Elastic Block Storage store?

我正在为我的 AWS SAA 考试学习,在复习各种服务时,我陷入了弹性块存储的概念、它到底存储了什么,以及它与 AWS RDS 有何不同。 让我详细说明。

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

我是 Rails 的 Ruby 开发人员。我购买了一个 EC2 实例并在 rails 上安装了 ruby、各种 gem、一个 mysql 数据库等。基本上我需要的一切都可以起床并 运行 创建一个社交媒体博客应用程序。所以我认为 EBS 所做的是将用户信息、博客、帖子、评论等作为数据库保存在 EBS 中(使用实例或块使用 ebs)。这对我来说很有意义。用户和他们的博客、帖子、评论等。需要存储在某个地方,如果我以某种方式丢失了我的 ec2 实例,我不应该担心,因为我有包含所有这些信息的 EBS。

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

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

你有没有去过 Best Buy 购买过 USB 外置硬盘?您知道...用于备份或加载电影送给朋友的类型。

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

这种类型的存储通常被称为块存储,因为磁盘被分成许多块,它只是被告知"store this data in block #433".

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

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

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

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

然而,

Amazon RDS是一个程序。您与程序通信,它会做一些事情。在这种情况下,该程序是一个 关系数据库 。关系数据库使用 SQL 来存储和查询数据。数据存储在 tables 中,看起来有点像电子表格 — 它有行和列,您可以 运行 queries 查询数据(例如 给我销售列的总数,其中 Country = New Zealand)。

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

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


关于您的子网问题,是的...如果您在 public 子网中的 Amazon EC2 实例上安装数据库,则数据库是 also 在 public 子网中。

Public 和私有子网是旧时代物理网络的遗留物。路由器用于保护网络的一部分——它们将安装在 "subnets" 之间,控制哪些流量可以进出子网。这个概念也被带到了云端。

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

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