AWS 之 EFS

211 阅读4分钟

简介

Elastic File System(EFS)是 AWS 提供的一种全托管的文件存储服务。它提供了一个简单、可扩展且高度可用的共享文件系统,可以在多个EC2实例之间共享数据

EC2 与 EFS 区别

在 Elastic Compute Cloud (EC2) 上,一个实例可以连接多个EBS 卷,这些卷可以用作该实例的附加存储设备。但是,每个EBS 卷只能附加到一个EC2 实例,不能同时附加到多个实例

每个EBS 卷都是针对一个特定的EC2 实例创建的,因此它只能与该实例关联。如果希望在多个实例之间共享数据,可以使用EFS 服务,它是 AWS 提供的一种共享文件存储服务,允许多个EC2 实例共享相同的数据

EFS 特点

  1. 共享文件系统:可以轻松地在多个EC2 实例之间共享文件,使多个实例可以访问和共享相同的数据
  2. 弹性扩展:是一个高度可扩展的存储服务,可以根据需要自动调整存储容量和性能,无需预配置
  3. 数据一致性:确保所有EC2 实例都可以看到相同的数据,并提供文件级别的一致性
  4. 多区域复制:可以选择将EFS 文件系统复制到不同的AWS 区域,以增加数据的可用性和持久性
  5. 多协议支持:支持多种文件系统协议,包括NFSv4SMB(通过 AWS DataSync)
  6. 安全性:可以与VPC进行集成,确保数据在虚拟私有云内得到保护
  7. 按使用量付费:采用按使用量计费的模式,只需支付您实际使用的存储容量

EC2 实例挂载 EFS

EFS 文件系统是一个VPC 资源,它在VPC内创建和管理。与EBS 卷作为一种能直接附加到EC2 实例的存储设备不同。因为EFS是一种托管的网络文件系统,它需要在VPC中创建和管理,并且需要将其关联到一个或多个子网

EC2 实例挂载 EFS 需要满足的条件

  1. 同一VPC: 确保EC2 实例EFS 文件系统在同一个VPC
  2. VPC子网: EC2 实例EFS 文件系统都在相同的VPC子网中
  3. 安全组设置: EC2 实例EFS 文件系统都配置在允许相互通信的安全组内
  4. 网络访问控制列表 (Network ACL): 如果在VPC中使用了Network ACL,确保允许EC2 实例EFS 文件系统之间的必要网络通信

所以,创建EFS 文件系统首先需要指定一个VPC,然后在这个VPC下的所有子网都可以与EFS关联,然后在创建EC2 实例时就可以选择挂载已创建的EFS 文件系统,而这个EC2 实例的子网只要和EFS 文件系统关联的任何一个子网对应,就可以访问EFS 文件系统

拓展

EC2 实例能在创建后再挂载 EFS 吗?

在 AWS 中,EC2 实例EFS 文件系统的挂载是在实例启动时完成的,而不是在实例运行期间。如果在创建EC2 实例时没有选择挂载EFS 文件系统,那么在实例启动后是不能再挂载EFS

查询 EC2 实例和挂载的 EFS

目前在控制台,我并未找到在EC2 实例下查找挂载的EFS,或者在EFS 文件系统下查找哪个EC2 实例在使用。查阅文档,了解到目前仅支持通过指令来查询

EFS 支持配置只在一个区域使用,那还需要设置 VPC 吗?

EFS是一种托管的网络文件系统,它在 VPC 中创建和管理。即使在同一个区域内使用EFS,仍然需要在同一个 VPC下创建EFS 文件系统,并将其关联到一个或多个子网

以下是为什么需要VPC来使用EFS的原因:

  1. 安全性: 通过将EFS 文件系统VPC关联,可以控制哪些子网可以访问该文件系统。这提供了更好的安全性,确保只有授权的实例可以挂载和访问文件系统
  2. 网络隔离: 使用VPC可以将EFS 文件系统与其他资源隔离开来,以便更好地管理和控制资源之间的通信和访问
  3. 文件系统挂载:EFS 文件系统VPC关联后,可以在关联的子网上使用NFS 协议挂载和访问文件系统。这样,位于同一个VPC下的EC2 实例可以共享和访问同一个文件系统

总结而言,尽管不需要跨区域使用EFS,也仍然需要设置VPC来创建和管理EFS 文件系统,并与EC2 实例进行关联,以实现数据共享和访问