如何挂载、卸载、自动挂载和在本地挂载 Amazon EFS 文件系统?

4 分钟阅读
0

我想知道如何挂载、卸载、自动挂载和在本地挂载 Amazon Elastic File System (Amazon EFS) 文件系统。

解决方法

挂载文件系统

要挂载 EFS 文件系统,您可以安装 amazon-efs-utils 软件包。或者,从 Mankier 网站安装 nfs-utils 软件包。

使用 amazon-efs-utils

完成以下步骤:

  1. 要安装 amazon-efs-utils 软件包,请根据您的发行版运行以下命令之一:
    Amazon Linux 1、Amazon Linux 2 和 Amazon Linux 2023

    $ sudo yum install -y amazon-efs-utils

    基于 Ubuntu 和基于 Debian 的发行版

    $ sudo apt-get update
    $ sudo apt-get -y install git binutils rustc cargo pkg-config libssl-dev
    $ git clone https://github.com/aws/efs-utils
    $ cd efs-utils
    $ ./build-deb.sh
    $ sudo apt-get -y install ./build/amazon-efs-utils*deb

    如果您的发行版未提供 rust 或 cargo 软件包,或者提供 1.70 之前的版本,请使用 rustup 安装 rust 和 cargo:

    'curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    . "$HOME/.cargo/env"

    要构建和安装 RPM,请根据您的发行版运行以下命令之一:
    openSUSE 或 SLES

    $ sudo zypper refresh
    $ sudo zypper install -y git rpm-build make rust cargo openssl-devel
    $ git clone https://github.com/aws/efs-utils
    $ cd efs-utils
    $ make rpm
    $ sudo zypper --no-gpg-checks install -y build/amazon-efs-utils*rpm

    所有其他发行版

    $ sudo yum -y install git rpm-build make rust cargo openssl-devel
    $ git clone https://github.com/aws/efs-utils
    $ cd efs-utils  
    $ make rpm
    $ sudo yum -y install build/amazon-efs-utils*rpm
  2. 打开 Amazon EFS 控制台

  3. 在导航窗格中,选择 File systems(文件系统)。

  4. 选择您的文件系统。

  5. 选择 Attach(附加)。

  6. 使用 SSH 或会话管理器(AWS Systems Manager 的一项功能)连接到实例。然后,运行以下命令:

    $ sudo mkdir -p /mnt/efs
    $ sudo mkdir -p /mnt/efs-ap
    $ sudo mount -t efs -o tls fs-12345678:/ /mnt/efs
    $ sudo mount -t efs -o tls,accesspoint=fsap-12345678 fs-01233210 /mnt/efs-ap

    **注意:**请将示例值替换为您的值。

使用 nfs-utils

完成以下步骤:

  1. 要安装 nfs-utils 软件包,请根据您的发行版运行以下命令之一:
    基于 RHEL 和基于 CentOS 的发行版

    $ sudo yum -y install nfs-utils

    基于 Ubuntu 的发行版

    $ sudo apt install nfs-common
  2. 打开 Amazon EFS 控制台

  3. 在导航窗格中,选择 File systems(文件系统)。

  4. 选择您的文件系统。

  5. 选择 Attach(附加)。

  6. 使用 SSH 或会话管理器连接到实例,然后运行以下命令:

    $ sudo mkdir -p /mnt/efs
    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-DNS:/   ~/efs-mount-point

    -or-
    要使用 IP 地址进行挂载,请运行以下命令:

    $ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/  ~/efs-mount-point

    **注意:**请将示例值替换为您的值。

卸载文件系统

要卸载文件系统,请运行以下命令:

$ umount /mnt/efs

如果挂载点繁忙,请运行带有 -l 参数的 umount 命令:

$ umount -l /mnt/efs

使用 /etc/fstab 自动挂载文件系统

要在 /etc/fstab 中创建一个条目以便 Amazon EFS 挂载在重启时仍然存在,请运行以下命令:

# vim /etc/fstab

使用 amazon-efs-utils

fs-########:/ /mnt/efs efs _netdev,nofail,noresvport,tls,iam 0 0

使用 nfs-utils

在 fstab 中配置您的参数:

fs-########.efs.REGION.amazonaws.com:/ /mnt/efs nfs4 defaults,_netdev,nofail 0 0
# mount -a

有关使用挂载助手的挂载选项,请参阅自动挂载 EFS 文件系统

**注意:**您可以使用与客户端 Amazon Elastic Compute Cloud (Amazon EC2) 不同的可用区中的挂载目标的 IP 地址进行挂载。这种挂载方法可能会产生跨可用区的数据传输费用并导致延迟。

使用启动向导在实例启动时挂载文件系统

当启动 Amazon EC2 实例时,您可以使用启动向导自动添加用户数据以挂载文件系统。

完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 选择 Launch instances(启动实例)。
  3. 选择亚马逊机器映像 (AMI) 和实例类型,然后选择 Next: Configure Instance Details(下一步:配置实例详细信息)。
  4. 为您的用例配置参数。确保为 EFS 挂载选择所需的虚拟私有云 (VPC) 和子网。
  5. Configure instance(配置实例)页面的 File systems(文件系统)下,选择您的文件系统。文件系统 ID 旁边的路径是 EC2 实例使用的挂载点。您可以根据需要更改此路径。
    要挂载文件系统,系统会在 Advanced details(高级详细信息)部分中自动生成用户数据:
    #cloud-config
    package_update: true
    package_upgrade: true
    runcmd:
    - yum install -y amazon-efs-utils
    - apt-get -y install amazon-efs-utils
    - yum install -y nfs-utils
    - apt-get -y install nfs-common
    - file_system_id_1=fs-0cae1679a766bcf49
    - efs_mount_point_1=/mnt/efs/fs1
    - mkdir -p "${efs_mount_point_1}"
    - test -f "/sbin/mount.efs" && printf "\n${file_system_id_1}:/ ${efs_mount_point_1} efs tls,_netdev\n" >> /etc/fstab || printf "\n${file_system_id_1}.efs.us-east-1.amazonaws.com:/ ${efs_mount_point_1} nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0\n" >> /etc/fstab
    - test -f "/sbin/mount.efs" && grep -ozP 'client-info]\nsource' '/etc/amazon/efs/efs-utils.conf'; if [[ $? == 1 ]]; then printf "\n[client-info]\nsource=liw\n" >> /etc/amazon/efs/efs-utils.conf; fi;
    - retryCnt=15; waitTime=30; while true; do mount -a -t efs,nfs4 defaults; if [ $? = 0 ] || [ $retryCnt -lt 1 ]; then echo File system mounted successfully; break; fi; echo File system not available, retrying to mount.; ((retryCnt--)); sleep $waitTime; done;>
    -or-
    要在自定义 AMI 上挂载 Amazon EFS 文件系统或使用特定选项进行挂载,请运行以下命令以添加自定义用户数据:
    基于 RHEL 和基于 CentOS 的发行版
    #!/bin/bash
    sudo mkdir -p /mnt/efs
    sudo yum -y install nfs-utils
    基于 Ubuntu 的发行版
    #!/bin/bash
    sudo mkdir -p /mnt/efs
    sudo apt install nfs-common
    sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/ /mnt/efs
    有关详细信息,请参阅在启动包含用户数据输入的 EC2 实例时运行命令
  6. 启动实例。

在本地挂载文件系统

要在本地服务器上挂载 Amazon EFS 文件系统,Amazon EFS 和本地服务器之间必须建立连接。要在本地服务器和 Amazon Virtual Private Cloud (Amazon VPC) 之间建立连接,请使用 AWS Direct Connect 和 AWS VPN。然后,运行以下命令来安装 NFS 客户端并挂载您的文件系统:

$ sudo yum -y install nfs-utils (Red Hat Linux)
$ sudo apt-get -y install nfs-common (Ubuntu)
$ mkdir ~/efs
$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/efs

有关详细信息,请参阅教程: 使用本地 Linux 客户端进行挂载

AWS 官方
AWS 官方已更新 6 个月前