EC2挂载EFS使用说明

本文介绍了如何在AWS中国区使用EC2挂载EFS服务。

一、创建EC2

本文目标读者假设已经掌握EC2使用技能,这里不再介绍EC2的创建和SSH登录密钥的使用。

请创建一个Amazon Linux 2版本的系统。Amazon Linux 2和CentOS 7版本高度兼容,使用yum做库管理。这里选则Amazon Linux的原因是可以使用自带的EFS挂载工具,操作更为简单。其他版本OS的挂载请参考AWS官方文档。

二、创建EFS

1、创建安全规则组

进入VPC下的安全规则组界面,点击创建安全规则组。

创建安全规则组界面,注意选择稍后要使用的VPC。安全规则组不能跨VPC,因此如果VPC选择错误,安全规则组不可见。如下截图。

创建完成。继续编辑刚才新建的安全规则组,可以看到Inbound入栈规则默认是空白的。如下截图。

从下拉框中选择NFS协议,在源地址位置选择Anywhere任意地址。如果有需要的话,可以认为限制特定网段。如下截图。

保存配置,安全规则组配置完成。

2、创建EFS文件系统(默认权限)

首先进入EFS界面,点击创建文件系统。

在选择VPC界面,选择要使用的VPC,并且绑定所有的可用区。同时,在每个可用区最后,选择安全规则组的界面,将默认的default删除,选中刚才新建的名为efs的安全规则组。如下截图。

在向导的第二步骤,选择生命周期规则为30天,将不活跃的数据转移到非频繁访问存储, 以明显降低成本。如下截图。

将页面继续向下滚动,吞吐能力选择爆发型,性能选项选择一般用途,以降低成本,在加密的位置,打开数据加密,选择第一项KMS密钥。此时会自动生成一个EFS专用的KMS密钥。如下截图。

接下来配置权限。在这一步保持默认选项不变,即可创建出来默认可读写的EFS服务,且根目录是可写状态。

继续到向导最后一步,点击创建文件系统。

至此创建完成。

三、从EC2 Linux上挂载使用

1、安装客户端

如前文所述,本文使用兼容CentOS 7的Amazon Linux 2进行配置。需要确认此EC2与EFS在同一个Region,且在同一个VPC内。

登录EC2上。执行如下命令安装客户端。

sudo -i yum update -y
sudo -i yum install -y amazon-efs-utils

安装完成。如下截图。

安装客户端完成。

2、调整客户端适应中国区服务的挂载地址

因为中国区的endpoint与AWS海外不同,因此需要修改amazon-efs-utils的配置文件。执行如下命令:(注意以下为一条命令没有换行)

echo -e '\n[mount.cn-north-1]\ndns_name_suffix = amazonaws.com.cn\n\n[mount.cn-northwest-1]\ndns_name_suffix = amazonaws.com.cn' | sudo tee -a /etc/amazon/efs/efs-utils.conf

如下截图。

修改完成。

3、挂载

执行如下命令挂载。请把fs-xxxx这一串,替换为AWS控制台上显示的本EFS文件系统的名称。以下命令用ec2-user身份,因为Amazon Linux 2的证书登录用户默认叫做ec2-user,因此当前目录是 /home/ec2-user 。

注:以下参数中,-o tls是指用SSL方式挂载。如果完全是在VPC内,不涉及与私有数据中心或其他云的连接,也可以去掉tls参数。

mkdir ~/efs
sudo mount -t efs -o tls fs-3938d1dc:/ efs

如下截图中红色的。

执行命令后,挂载完成。

4、修改Owner

刚挂载完的 /home/ec2-user/efs 目录的属主和组是 root:root,所以直接sudo为root是可以写入的。例如touch hehe就可以建立一个文件名为hehe的空白文件。

实际应用中,大部分时候运行身份可能不是root,是apache webserver或者其他非root身份。一般用户如Amazon Linux的默认证书登录用户ec2-user是没权限写入的,因此可修改下他们的属主。不建议修改为权限777,这样过于不安全。

执行如下命令:

sudo chown ec2-user:ec2-user /home/ec2-user/efs

由此ec2-user身份就有权限写入。例如执行touch命令新建一个空白文件,或者移动一个压缩包到EFS上可以进行写入测试。再执行ls命令查询,就可以看到是新写入的文件都是 ec2-user:ec2-user 的身份。如下截图。

至此本机可以正常读写EFS。

5、使用另外的客户端挂载

重复以上过程,另外新建一个EC2客户端,并且同样挂载。

挂载后可以看到同样的文件。操作正常。

6、设置fstab再重启后自动挂载

为了能在重启后自动挂载,可以修改EC2对应的/etc/fstab文件。

请注意,如果修改有数据生产环境,建议先对本EC2做快照,或者实施其他备份手段,以免配置失败导致无法启动影响生产。如果启动失败,需要将硬盘挂载到其他健康的EC2上,重新mount磁盘,然后进行修复。

以root身份编辑 /etc/fstab,写入如下一行:

fs-3938d1dc.efs.cn-northwest-1.amazonaws.com.cn:/ /home/ec2-user/efs   nfs4   defaults

将以上第一段,file-system-id替换为本机挂载的EFS对应的名称,如果在宁夏区,则endpoint就使用cn-northwest-1,如果在北京,需要替换为cn-north-1,最后替后边的挂载路径也要相应替换。修改后效果如下。

先不要重启,以root身份执行 mount -a 命令确认下有无报错。执行后没有任何报错,就表示配置成功了。现在可以重启EC2。

重启后再次登录,执行df命令查看挂载,正常。如下截图。

至此配置完成。