Auto mounting EFS on EC2 instance

Hammad Khalid picture Hammad Khalid · Sep 28, 2018 · Viewed 9.1k times · Source

I created an EC2 instance and an EFS, and was able to mount EFS properly on the instance.

I need to auto mount in case the server is rebooted.

According to the documentation, i do that following in /etc/fstab

fs-xxxxxxxx:/ /mnt/efs efs defaults,_netdev 0 0

Using the EFS file system ID in place of xxxxxxxx

But when i reboot the server, EFS does not get mounted, and i save to remount it again

What should i do ? or am i missing something

Answer

Steven Lin picture Steven Lin · Feb 22, 2020

I'm posting here a more detailed solution since this thread seems to show up near the top for related queries from search engine.

There are two methods to mount an Amazon EFS: "Amazon EFS mount helper" (amazon-efs-utils) and "NFS client" (nfs-utils).

Examples below shows how to mount manually and automatically with each method. Before using, replace the text [value] with your own values.

===============

To mount with "Amazon EFS mount helper" manually, you issue the following command format:

sudo mount -t efs [fs-XXXXXXXX]:/ /path/to/mount/dir

=====

To mount with "Amazon EFS mount helper" automatically, you insert the following line into /etc/fstab

[fs-XXXXXXXX]:/ /path/to/mount/dir efs defaults,_netdev 0 0

=====

To mount with "NFS client" manually, you issue either of the following command format:

Use the command instruction given from "Amazon EC2 mount instructions (from local VPC)" when you click in to view the Elastic File System ID in question under EFS Web Console.

sudo mount -t nfs4 -o nfsvers=4.1,rsize=XXXXXXX,wsize=XXXXXXX,hard,timeo=XXX,retrans=X,noresvport [fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir

OR

sudo mount -t nfs4 -o defaults,_netdev [fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir

=====

To mount with "NFS client" automatically, you insert the following line into /etc/fstab

[fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir nfs4 defaults,_netdev 0 0

===============

Given the above example format, do you notice your problem?

You thought you've "Amazon EFS mount helper" installed, but based on the manual mount command format you posted in your first comment reply (not opening post), you actually only have "NFS client" installed on your system. You were using "Amazon EFS mount helper" format inside /etc/fstab to auto mount, but the manual mount command that worked for you is in "NFS client" format. Since your system doesn't have "Amazon EFS mount helper" installed, it doesn't understand the auto mount format inside /etc/fstab so auto mount it doesn't work for you.

The manual mount command you posted above that worked for you is only for "NFS client", not for "Amazon EFS mount helper".

mount -t nfs4 -o nfsvers=4.1 ...

Notice the -t parameter above is nfs4, which is the format for "NFS client". If you were using "Amazon EFS mount helper", -t parameter should be efs.

To solve the problem, you can use either Amazon EFS mount helper (amazon-efs-utils) or NFS client (nfs-utils), but the command format (in CLI or /etc/fstab) and the mount client being used should be consistent.

In other words:

"Amazon EFS mount helper" <=> efs in both CLI and /etc/fstab

"NFS client" <=> nfs4 in both CLI and /etc/fstab

===============

Installation instructions for mount client software:

=====

If you want to use "Amazon EFS mount helper", use the following installation instructions for Amazon Linux and Other Distros:

https://docs.aws.amazon.com/efs/latest/ug/using-amazon-efs-utils.html

=====

If you want to use "NFS client", use the following installation instructions on your EC2 instance:

On a Red Hat Enterprise Linux or SUSE Linux instance, including Amazon Linux, use this command:

sudo yum install -y nfs-utils

On an Ubuntu instance, use this command:

sudo apt-get install nfs-common

=====

Once you have the mount client software installed, use the corresponding mounting instructions posted above.