EFS (Amazon Elastic File System).¶
Características.¶
-
Ofrece almacenaje para múltiples EC2, a diferencia de los EBS que es para una única EC2.
-
Funciona como si fuera un NAS (Network Area Storage).
-
Utiliza el protocolo de sistema de archivos NFS.
NFS
Al usar NFS deberemos tener instalado nuestros paquetes de NFS en los servidores.
💥 Ubuntu/Debian: nfs-common
💥 Otras distribuciones: nfs-utils
-
El espacio escala automáticamente (aumentar y reducir) a medida que necesitemos más o menos espacio en disco.
-
El rendimiento (IOPS) también escala automáticamente dependiendo del trabajo y del tamaño.
-
Pueden interconectarse con máquinas de cualquier zona de disponibilidad dentro de la misma región.
-
No puede ser accedido desde fuera de la región de AWS.
-
El coste varía respecto a la frecuencia con la que se producen las transferencias.
EBS vs EFS
-
EBS es un disco virtual que se añade a una única EC2.
-
EFS es una carpeta compartida mediante el protocolo NFS entre muchas EC2.
Práctica.¶
La práctica consistirá en crear un EFS que sea solo accesible desde una de nuestras máquinas EC2.
Recabar la información de nuestra instancia:¶
Debemos buscar el grupo de seguridad y la zona de disponibilidad de nuestra máquina EC2.
Reglas de Seguridad.¶
Vamos a crear una regla de entrada para el EFS que permita:
-
Tráfico NFS.
-
Originado desde la máquina EC2 que indiquemos.
💥 Para ello aplicamos como origen (source) el grupo de seguridad aplicado en la EC2 que queremos que pueda acceder.
Crear EFS.¶
Creamos el EFS y pinchamos en personalizar (Customize) para:
-
Deshabilitar Automatic Backups.
-
Deshabilitar Transition into Infrequent Access (IA) del LifeCycle Management.
-
En cuanto a las redes únicamente debemos dejar la zona de disponibilidad de nuestra instancia junto con su grupo de seguridad.
Montar el EFS en nuestra EC2.¶
Dentro del menú EFS, seleccionamos el nuestro y vamos al apartado de "Attach/Asociar".
El argumento final "efs" indica el directorio donde se montará el sistema de archivos.
Los siguientes comandos ya se ejecutan en la instancia EC2 donde queremos montar el EFS.
Para montar el EFS necesitaremos los paquetes necesarios para usar el protocolo NFS.
sudo apt install nfs-common
También vamos a instalar unos paquetes de Amazon para la gestión de EFS dentro de Ubuntu:
sudo apt-get update
sudo apt-get -y install git binutils rustc cargo pkg-config libssl-dev gettext
git clone https://github.com/aws/efs-utils
cd efs-utils
./build-deb.sh
sudo apt-get -y install ./build/amazon-efs-utils*deb
Dentro de la carpeta que queremos que se enlace con el sistema EFS deberemos ejecutar:
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:/ .
IMPORTANTE
Podemos comprobar que está todo montado con "df -h"
Automatizar el montaje en el arranque.¶
Al iniciar la máquina el sistema de archivos EFS no está montado.
Para que podamos montarlo de forma automática deberemos editar el fichero /etc/fstab y añadir:
[fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir nfs4 defaults,_netdev 0 0
Comprobar el Rendimiento.¶
Para comprobar el rendimiento usaremos la herramienta fio.
sudo apt install fio
sudo fio --name=fio-efs --filesize=10G --filename=test.img --bs=1M --nrfiles=1 --direct=1 --sync=0 --rw=write --iodepth=200 --ioengine=libaio
Tras estos comandos se habrá creado un fichero de 10G en el EFS.
Si vais al menú de EFS podréis comprobar que tenéis los 10G creados.