AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)

1. 前言

2. 关于Amazon EFS

2.1 Amazon EFS全称

  • 如下:
    • Amazon Elastic File System
    • Amazon Elastic File System,可扩展且有弹性的原生云 NFS 文件系统
    • Amazon Elastic File System (Amazon EFS)面向通用工作负载提供了一个简单、可扩展且有弹性的文件系统,可与 AWS 云服务和本地资源结合使用。

2.2 什么是Amazon EFS

  • 简单解释
    • Amazon EFS 是一种云原生数据存储,可为基于Linux的业务应用程序提供简单的可扩展共享文件存储,它可以增长到PB(petabytes),同时提供一致的低遗留数据和高水平的吞吐量,而且它是完全托管的,所以不必担心持续维护Amazon EFS。
    • 易于设置,只需使用AWS管理控制平台 API 或命令界面即可创建文件系统,并使其可安全地供您的 EC2 实例的一台或多台 Amazon VPC 使用,然后挂载你的文件系统来存储和访问数据,你也可以使用AWS direct connect 或 AWS VPN将本地服务器挂载到EFS,轻松将数据迁移到EFS启用云爆发 或将本地数据备份到EFS。
    • EFS文件系统具有弹性,可以在你添加和删除文件时,自动增长和收缩,你可以在两种性能模式之间进行选择,以便根据应用程序需求定制文件系统性能,文件系统的吞吐量会随着容量的增长而自动扩展。对于具有高吞吐量要求和低容量需求的工作负载,吞吐量可以独立于容量进行配置,但频率较低,你可以将 EFS 配置为将数据存储在成本优化的不频繁访问存储类中。
    • Amazon EFS 可与你已使用的工具和应用程序配合使用,它专为实现高可用性和持久性而设计,通过EFS可以跨多个可用区存储你冗余的数据。你可以始终这样,当你需要时提供所需的容量,而无需提前预置存储。
    • 只为您使用的内容付费,没有最低费用或设置成本,它消除了存储管理任务。
  • 总之,概括起来就是:
    Amazon Elastic File System (Amazon EFS)提供的是简单、可扩展、完全托管的弹性 NFS 文件系统,可与 AWS 云服务和本地资源结合使用。它可在不中断应用程序的情况下按需扩展至 PB 级,并可在您添加和删除文件时自动扩展或缩减,从而使您无需预置和管理容量便可适应文件系统的增长。Amazon EFS 旨在提供对数千个 Amazon EC2 实例的大规模并行共享访问,使您的应用程序能够始终以低延迟实现高水平的聚合吞吐量和 IOPS。

2.3 优点和功能

  • 动态弹性
    Amazon EFS 可在您添加或删除文件时自动即时地扩大或缩小您的文件存储容量,不会中断您的应用程序,可在您需要时为您提供所需的存储空间。您只需创建文件系统和开始添加文件,无需提前预置存储。
  • 可扩展的性能
    Amazon EFS 旨在提供通用工作负载所需的吞吐量、IOPS 和低延迟。吞吐量和 IOPS 可以随文件系统增长而扩展,并且可以在短时间内突增到较高的吞吐量水平,以支持不可预测的文件工作负载性能需求。对于最苛刻的工作负载,Amazon EFS 可以支持超过 10 GB/秒的性能和高达 500000 次 IOPS。
  • 完全托管
    Amazon EFS 是一项完全托管型服务,可为通用工作负载提供共享文件系统存储。它提供简单的界面,可使您快速创建和配置文件系统并为您管理文件存储基础设施,从而消除部署、修补和维护文件系统基础的复杂性。
  • 共享文件存储
    Amazon EFS 可为数千个连接提供安全访问。Amazon EC2 实例和本地服务器可以使用传统的文件许可模型、文件锁定功能和分层目录结构通过 NFSv4 协议同时访问 Amazon EFS 共享文件系统。Amazon EC2 实例可以跨可用区AWS 区域访问您的文件系统,而本地服务器可以使用 AWS Direct Connect 或 AWS VPN 进行访问。

2.4 参考官网

3. 创建文件系统

3.1 创建 EC2 实例

3.2 创建文件系统

  • 创建如下:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

4. 在Linux实例上挂载Amazon EFS文件系统

4.1 查看如何挂载

  • 首先:
    在这里插入图片描述

  • 然后:
    在这里插入图片描述

  • 接着
    在这里插入图片描述

  • 最后,打开帮助文档
    文档地址:

    https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-helper-ec2-linux.html
    

    在这里插入图片描述

4.2 连接EC2实例

  • 连接两个EC2实例,一个是 Amazon Linux 2023 ,一个是 Amazon Linux 2 AMI(具体怎么连接,看上篇文章),如下:
    在这里插入图片描述
    在这里插入图片描述

4.3 安装amazon-efs-utils

  • 安装参考地址:
    https://docs.aws.amazon.com/efs/latest/ug/installing-amazon-efs-utils.html
    
  • 安装命令:
    sudo yum install -y amazon-efs-utils
    
    在这里插入图片描述
  • 安装如下:
    sudo -s
    yum install -y amazon-efs-utils
    
    在这里插入图片描述

4.4 创建efs目录

  • 使用以下命令创建一个目录efs,作为文件系统的挂载点,如下:

    mkdir efs
    

    在这里插入图片描述

4.5 执行挂载命令进行挂载

  • 复制挂载命令,如下:
    sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 文件挂载系统的DNS名称:/ efs
    
    在这里插入图片描述
    在这里插入图片描述
  • 执行挂载命令,挂载成功的话,如下
    df -h
    
    在这里插入图片描述
    此步骤如有问题,请参考看下面的 《6. 遇到的问题》,找对应的解决方案。
  • 挂载第二台EC2实例
    用同样的方法,将另一台EC2实例也挂载上去,不多说了。

5. 简单使用

5.1 简单演示一下写与读

  • 如下,可以看到,在一台EC2实例上写入的数据,在另一台EC2实例上可以读到(前提是:挂载了EFS),删除也是没问题的,都是弹性的。
    在这里插入图片描述

6. 遇到的问题

6.1 执行挂载命令超时

6.1.1 问题描述

  • 问题描述,如下:
    mount.nfs4: Connection timed out
    
    在这里插入图片描述

6.1.2 解决问题——新建安全组

  • 开放哪个端口呢?2049,如下:
    在这里插入图片描述
    接下来就继续吧……
  • 首先,查看EFS系统所用的安全组,发现用的是默认安全组,如下:
    在这里插入图片描述
  • 然后,我们查看此安全组的入站规则
    在这里插入图片描述
    在这里插入图片描述
    端口范围已经是全部,为啥不行呢?不知道,新建一个安全组试试吧……
  • 然后,再新建安全组,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 修改EFS系统的安全组,如下:
    在这里插入图片描述
  • 修改完成之后,然后再执行挂载命令,问题解决,如下:
    在这里插入图片描述

6.1.3 关于2049的备注

  • EC2 实例 和 EFS系统可以不用同一个安全组,上面我的EC2实例还是之前的创建的安全组,即EC2实例不用开放 2049 端口。

猜你喜欢

转载自blog.csdn.net/suixinfeixiangfei/article/details/132034348