简介
Elastic File System(EFS)是 AWS 提供的一种全托管的文件存储服务。它提供了一个简单、可扩展且高度可用的共享文件系统,可以在多个EC2实例之间共享数据
EC2 与 EFS 区别
在 Elastic Compute Cloud (EC2) 上,一个实例可以连接多个EBS 卷,这些卷可以用作该实例的附加存储设备。但是,每个EBS 卷只能附加到一个EC2 实例,不能同时附加到多个实例
每个EBS 卷都是针对一个特定的EC2 实例创建的,因此它只能与该实例关联。如果希望在多个实例之间共享数据,可以使用EFS 服务,它是 AWS 提供的一种共享文件存储服务,允许多个EC2 实例共享相同的数据
EFS 特点
- 共享文件系统:可以轻松地在多个
EC2 实例之间共享文件,使多个实例可以访问和共享相同的数据 - 弹性扩展:是一个高度可扩展的存储服务,可以根据需要自动调整存储容量和性能,无需预配置
- 数据一致性:确保所有
EC2 实例都可以看到相同的数据,并提供文件级别的一致性 - 多区域复制:可以选择将
EFS 文件系统复制到不同的AWS 区域,以增加数据的可用性和持久性 - 多协议支持:支持多种文件系统协议,包括
NFSv4和SMB(通过 AWS DataSync) - 安全性:可以与
VPC进行集成,确保数据在虚拟私有云内得到保护 - 按使用量付费:采用按使用量计费的模式,只需支付您实际使用的存储容量
EC2 实例挂载 EFS
EFS 文件系统是一个VPC 资源,它在VPC内创建和管理。与EBS 卷作为一种能直接附加到EC2 实例的存储设备不同。因为EFS是一种托管的网络文件系统,它需要在VPC中创建和管理,并且需要将其关联到一个或多个子网
EC2 实例挂载 EFS 需要满足的条件
- 同一VPC: 确保
EC2 实例和EFS 文件系统在同一个VPC - VPC子网:
EC2 实例和EFS 文件系统都在相同的VPC子网中 - 安全组设置:
EC2 实例和EFS 文件系统都配置在允许相互通信的安全组内 - 网络访问控制列表 (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的原因:
- 安全性: 通过将
EFS 文件系统与VPC关联,可以控制哪些子网可以访问该文件系统。这提供了更好的安全性,确保只有授权的实例可以挂载和访问文件系统 - 网络隔离: 使用
VPC可以将EFS 文件系统与其他资源隔离开来,以便更好地管理和控制资源之间的通信和访问 - 文件系统挂载: 将
EFS 文件系统与VPC关联后,可以在关联的子网上使用NFS 协议挂载和访问文件系统。这样,位于同一个VPC下的EC2 实例可以共享和访问同一个文件系统
总结而言,尽管不需要跨区域使用EFS,也仍然需要设置VPC来创建和管理EFS 文件系统,并与EC2 实例进行关联,以实现数据共享和访问