EFS - FSx
Clase 36 de 75 • Curso de AWS Certified Solutions Architect Associate
EFS & FSx: Sistemas de Archivos Compartidos en AWS
En 2020, durante la transición repentina al trabajo remoto debido a la pandemia, Nexiabank con 500 empleados de marketing y diseno necesitaba que ellos accedieran a archivos CAD de varios gigabytes desde sus hogares. La solución fue migrar su servidor de archivos a AWS FSx for Windows, permitiendo acceso seguro y de alto rendimiento a través de VPN. Los tiempos de apertura de archivos se redujeron de minutos a segundos, y la colaboración continuó sin interrupciones. Este es solo un ejemplo del poder de los sistemas de archivos compartidos en la nube.
Sistemas de Archivos Compartidos en AWS
AWS ofrece dos familias principales de servicios de almacenamiento de archivos: Amazon Elastic File System (EFS) y Amazon FSx. Aunque ambos proporcionan almacenamiento de archivos compartido, están diseñados para diferentes casos de uso y entornos.
Amazon Elastic File System (EFS)
EFS es un servicio de almacenamiento de archivos NFS elástico, escalable y totalmente administrado:
- Características principales:
- Sistema de archivos NFS v4.1 compatible con Linux
- Escalabilidad automática a petabytes sin aprovisionamiento
- Acceso simultáneo desde miles de instancias EC2
- Multi-AZ por defecto para alta disponibilidad
- Integración nativa con servicios AWS
# Ejemplo de montaje de EFS en Linux sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0123456789abcdef.efs.us-east-1.amazonaws.com:/ /mnt/efs
Amazon FSx
FSx ofrece sistemas de archivos de alto rendimiento optimizados para cargas de trabajo específicas:
- FSx for Windows File Server:
- Sistema de archivos SMB totalmente administrado
- Compatibilidad nativa con Windows
- Integración con Active Directory
- Soporte para DFS, ACLs, y otras características de Windows
# Ejemplo de mapeo de unidad en Windows net use Z: \\\\fs-0123456789abcdef.example.com\\share
- FSx for Lustre:
- Sistema de archivos de alto rendimiento para HPC
- Throughput de hasta cientos de GB/s
- Latencia de submilisegundos
- Integración con S3 para conjuntos de datos grandes
# Ejemplo de montaje de FSx for Lustre en Linux sudo mount -t lustre -o relatime,flock fs-0123456789abcdef.fsx.us-east-1.amazonaws.com@tcp:/fsx /mnt/lustre
- FSx for NetApp ONTAP:
- Sistema de archivos compatible con NetApp ONTAP
- Soporte para protocolos NFS, SMB e iSCSI
- Funciones avanzadas como snapshots, replicación y compresión
- FSx for OpenZFS:
- Sistema de archivos ZFS de alto rendimiento
- Ideal para cargas de trabajo Linux que requieren baja latencia
- Snapshots, clones y compresión nativos
Casos de Uso: EFS vs. FSx
Cada servicio está optimizado para diferentes escenarios y requisitos.
Casos de Uso de EFS
- Aplicaciones web y CMS:
- Almacenamiento compartido para servidores web en auto scaling
- Contenido dinámico para WordPress, Drupal, etc.
- Desarrollo de software:
- Repositorios de código compartidos
- Entornos de desarrollo compartidos
- Análisis de datos en Linux:
- Procesamiento de datos distribuido
- Compartir resultados entre múltiples instancias
- Contenedores y serverless:
- Almacenamiento persistente para ECS/EKS
- Acceso a archivos desde funciones Lambda
# Ejemplo de arquitectura: WordPress con EFS Web Servers (EC2 Auto Scaling Group) → EFS (contenido compartido) ← Database (RDS)
Casos de Uso de FSx for Windows File Server
- Migración de servidores de archivos Windows:
- Compartir archivos corporativos
- Directorios personales (home directories)
- Aplicaciones empresariales Windows:
- Microsoft SQL Server
- Dynamics CRM
- SharePoint
- Escritorios virtuales (VDI):
- Perfiles de usuario itinerantes
- Datos compartidos para Amazon WorkSpaces
# Ejemplo de arquitectura: Entorno empresarial Windows Active Directory → FSx for Windows ← Windows Servers/Workstations
Casos de Uso de FSx for Lustre
- Computación de alto rendimiento (HPC):
- Simulaciones científicas
- Modelado financiero
- Análisis de riesgo
- Machine Learning y análisis de datos:
- Entrenamiento de modelos ML
- Procesamiento de conjuntos de datos masivos
- Renderizado de medios:
- Renderizado de VFX
- Procesamiento de video 4K/8K
- Animación
# Ejemplo de arquitectura: Renderizado de VFX Render Farm (EC2) → FSx for Lustre ← S3 (almacenamiento de activos)
Casos de Uso de FSx for NetApp ONTAP
- Migración de cargas de trabajo ONTAP:
- Migración lift-and-shift de aplicaciones que usan NetApp
- Entornos híbridos con NetApp on-premises
- Aplicaciones multi-protocolo:
- Entornos mixtos Windows/Linux
- Aplicaciones que requieren acceso por bloque y archivo
Casos de Uso de FSx for OpenZFS
- Migración de sistemas ZFS existentes:
- Cargas de trabajo que ya utilizan ZFS
- Aplicaciones que se benefician de compresión y deduplicación
- Bases de datos y aplicaciones de baja latencia:
- Oracle, MySQL, PostgreSQL
- Aplicaciones sensibles a la latencia
Rendimiento y Capacidad
El rendimiento de los sistemas de archivos en AWS se puede ajustar según las necesidades específicas de cada carga de trabajo.
Rendimiento en EFS
EFS ofrece dos modos de rendimiento:
- General Purpose:
- Latencia más baja (submilisegundos)
- Ideal para servidores web, CMS, directorios de usuarios
- Recomendado para la mayoría de los casos de uso
- Max I/O:
- Mayor throughput agregado
- Latencia ligeramente mayor
- Ideal para aplicaciones altamente paralelas (HPC, análisis de datos)
Y tres modos de throughput:
- Bursting:
- Throughput base proporcional al tamaño (50 KiB/s por GiB)
- Capacidad de burst para picos de actividad
- Ideal para cargas de trabajo variables
- Provisioned:
- Throughput garantizado independiente del tamaño
- Se paga por el throughput aprovisionado
- Ideal para cargas de trabajo predecibles con altos requisitos
- Elastic:
- Escala automáticamente según la demanda
- Se paga solo por lo que se usa
- Ideal para cargas de trabajo impredecibles
# Ejemplo de creación de EFS con throughput provisionado aws efs create-file-system \\ --performance-mode generalPurpose \\ --throughput-mode provisioned \\ --provisioned-throughput-in-mibps 100 \\ --encrypted \\ --region us-east-1
Rendimiento en FSx for Windows File Server
FSx for Windows ofrece configuración de rendimiento flexible:
- Throughput capacity:
- Se configura en MB/s (8 MB/s a 2,048 MB/s)
- Determina la capacidad de red y la potencia de procesamiento
- Se puede modificar según sea necesario
- Storage capacity:
- Determina el espacio disponible (32 GB a 64 TB)
- Afecta a la capacidad de IOPS (3 IOPS por GB)
- Storage type:
- SSD: mayor rendimiento, menor latencia
- HDD: más económico, ideal para archivos grandes
- Deployment type:
- Single-AZ: menor costo
- Multi-AZ: alta disponibilidad
# Ejemplo de creación de FSx for Windows aws fsx create-file-system \\ --file-system-type WINDOWS \\ --storage-capacity 1000 \\ --storage-type SSD \\ --throughput-capacity 128 \\ --subnet-ids subnet-0123456789abcdef0 \\ --windows-configuration DeploymentType=MULTI_AZ_1
Rendimiento en FSx for Lustre
FSx for Lustre ofrece diferentes configuraciones de rendimiento:
- Deployment types:
- Scratch: almacenamiento temporal, mayor rendimiento
- Persistent: durabilidad mejorada, replicación de datos
- Storage capacity:
- Determina el throughput agregado
- Scratch: 200 MB/s por TiB
- Persistent: 50-200 MB/s por TiB según configuración
- Throughput per unit of storage:
- Persistent-125: 125 MB/s por TiB
- Persistent-250: 250 MB/s por TiB
- Persistent-500: 500 MB/s por TiB
- Persistent-1000: 1000 MB/s por TiB
# Ejemplo de creación de FSx for Lustre aws fsx create-file-system \\ --file-system-type LUSTRE \\ --storage-capacity 1200 \\ --subnet-ids subnet-0123456789abcdef0 \\ --lustre-configuration DeploymentType=PERSISTENT_1,PerUnitStorageThroughput=200
Protocolos de Acceso: NFS y SMB
Los protocolos de acceso a archivos determinan cómo los clientes se comunican con el sistema de archivos.
NFS en EFS
Network File System (NFS) es el protocolo utilizado por EFS:
- Características de NFS v4.1 en EFS:
- Soporte para bloqueo de archivos
- Autenticación basada en IAM o sistemas de archivos
- Cifrado en tránsito mediante TLS
- Compatible con la mayoría de distribuciones Linux
- Opciones de montaje recomendadas:
nfsvers=4.1
: versión del protocolorsize=1048576,wsize=1048576
: tamaño de buffer para mejor rendimientotimeo=600,retrans=2
: parámetros de timeout y reintentosnoresvport
: uso de puertos no reservados para mejor recuperación
# Ejemplo de entrada en /etc/fstab para montaje persistente fs-0123456789abcdef.efs.us-east-1.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0 0
- EFS Mount Helper:
- Utilidad que simplifica el montaje
- Configura automáticamente las opciones óptimas
- Gestiona el cifrado en tránsito
# Instalación y uso de EFS Mount Helper sudo yum install -y amazon-efs-utils sudo mount -t efs fs-0123456789abcdef:/ /mnt/efs
SMB en FSx for Windows File Server
Server Message Block (SMB) es el protocolo utilizado por FSx for Windows:
- Características de SMB en FSx:
- Soporte para SMB 2.0, 2.1, 3.0 y 3.1.1
- Autenticación integrada con Active Directory
- Cifrado en tránsito
- Soporte para ACLs de Windows
- Acceso desde clientes Windows:
- Mapeo de unidades de red
- UNC paths (\server\share)
- Integración con aplicaciones Windows
# Ejemplo de script PowerShell para mapear unidad $User = "DOMAIN\\username" $PWord = ConvertTo-SecureString -String "Password123" -AsPlainText -Force $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\\\fs-0123456789abcdef.example.com\\share" -Credential $Credential -Persist
- Acceso desde Linux:
- Posible mediante paquete
cifs-utils
- Requiere credenciales de Active Directory
- Posible mediante paquete
# Ejemplo de montaje SMB desde Linux sudo apt-get install cifs-utils sudo mount -t cifs //fs-0123456789abcdef.example.com/share /mnt/windows -o username=user,password=pass,vers=3.0
Alta Disponibilidad y Multi-AZ
La alta disponibilidad es crucial para sistemas de archivos que soportan aplicaciones críticas.
Alta Disponibilidad en EFS
EFS está diseñado para alta disponibilidad por defecto:
- Arquitectura Multi-AZ:
- Los datos se replican automáticamente en múltiples zonas
- 99.99% de disponibilidad garantizada
- Sin configuración adicional requerida
- Mount targets:
- Se crean en múltiples subnets/AZs
- Proporcionan tolerancia a fallos de zona
- Permiten acceso local desde cada AZ
# Creación de mount targets en múltiples AZs aws efs create-mount-target \\ --file-system-id fs-0123456789abcdef \\ --subnet-id subnet-11111111 \\ --security-groups sg-12345678 aws efs create-mount-target \\ --file-system-id fs-0123456789abcdef \\ --subnet-id subnet-22222222 \\ --security-groups sg-12345678
Alta Disponibilidad en FSx for Windows File Server
FSx for Windows ofrece dos opciones de despliegue:
- Single-AZ:
- Desplegado en una única zona de disponibilidad
- Replicación sincrónica dentro de la AZ
- Menor costo, pero vulnerable a fallos de AZ
- Multi-AZ:
- Desplegado en dos zonas de disponibilidad
- Failover automático en caso de fallo de AZ
- Mayor disponibilidad (99.99%)
- Replicación sincrónica entre AZs
# Creación de FSx for Windows Multi-AZ aws fsx create-file-system \\ --file-system-type WINDOWS \\ --storage-capacity 300 \\ --subnet-ids subnet-0123456789abcdef0 subnet-0123456789abcdef1 \\ --windows-configuration DeploymentType=MULTI_AZ_1,ThroughputCapacity=64,PreferredSubnetId=subnet-0123456789abcdef0
Alta Disponibilidad en FSx for Lustre
FSx for Lustre ofrece diferentes niveles de disponibilidad según el tipo de despliegue:
- Scratch:
- No ofrece replicación de datos
- Optimizado para rendimiento, no para durabilidad
- Ideal para cargas de trabajo temporales
- Persistent:
- Replicación de datos dentro de una AZ
- Recuperación automática de componentes fallidos
- Ideal para datos importantes que requieren alto rendimiento
- Persistent with backups:
- Añade backups automáticos diarios a S3
- Mayor protección contra pérdida de datos
- Permite restaurar a un punto en el tiempo
# Creación de FSx for Lustre Persistent con backups aws fsx create-file-system \\ --file-system-type LUSTRE \\ --storage-capacity 1200 \\ --subnet-ids subnet-0123456789abcdef0 \\ --lustre-configuration DeploymentType=PERSISTENT_1,PerUnitStorageThroughput=200,AutomaticBackupRetentionDays=30
Integraciones con Servicios AWS
Los sistemas de archivos compartidos se integran con numerosos servicios AWS, ampliando sus casos de uso.
Integraciones de EFS
- Amazon ECS/EKS:
- Almacenamiento persistente para contenedores
- Compartir datos entre tareas/pods
- Volúmenes EFS en definiciones de tareas
# Ejemplo de definición de tarea ECS con EFS { "family": "webapp", "containerDefinitions": [ { "name": "webapp", "image": "nginx", "mountPoints": [ { "sourceVolume": "efs-volume", "containerPath": "/usr/share/nginx/html" } ] } ], "volumes": [ { "name": "efs-volume", "efsVolumeConfiguration": { "fileSystemId": "fs-0123456789abcdef", "transitEncryption": "ENABLED" } } ] }
- AWS Lambda:
- Acceso a sistema de archivos desde funciones serverless
- Compartir datos entre invocaciones
- Cargar bibliotecas o modelos grandes
# Ejemplo de función Lambda con EFS Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs14.x FileSystemConfigs: - Arn: !GetAtt EFSAccessPoint.Arn LocalMountPath: /mnt/efs
- AWS DataSync:
- Migración de datos a EFS
- Sincronización periódica con sistemas on-premises
- Transferencia entre sistemas de archivos AWS
- AWS Backup:
- Backups automatizados de EFS
- Políticas de retención configurables
- Restauración a nuevo sistema de archivos
Integraciones de FSx for Windows File Server
- Amazon WorkSpaces:
- Almacenamiento para escritorios virtuales
- Perfiles de usuario itinerantes
- Compartir datos entre usuarios
- AWS Directory Service:
- Integración con Microsoft Active Directory
- Autenticación y autorización centralizada
- Políticas de grupo y seguridad
# Ejemplo de creación de FSx integrado con Active Directory aws fsx create-file-system \\ --file-system-type WINDOWS \\ --storage-capacity 300 \\ --subnet-ids subnet-0123456789abcdef0 \\ --windows-configuration ThroughputCapacity=64,ActiveDirectoryId=d-1234567890
- Amazon AppStream 2.0:
- Almacenamiento persistente para aplicaciones streaming
- Compartir datos entre sesiones
- Acceso a archivos corporativos
- AWS Transfer Family:
- Acceso SFTP/FTPS/FTP a archivos en FSx
- Migración de servidores FTP legacy
- Integración con flujos de trabajo existentes
Integraciones de FSx for Lustre
- Amazon S3:
- Repositorio de datos para FSx for Lustre
- Carga automática de datos desde S3
- Exportación de resultados a S3
# Creación de FSx for Lustre vinculado a S3 aws fsx create-file-system \\ --file-system-type LUSTRE \\ --storage-capacity 1200 \\ --subnet-ids subnet-0123456789abcdef0 \\ --lustre-configuration DeploymentType=PERSISTENT_1,PerUnitStorageThroughput=200,DataRepositoryConfiguration={ImportPath=s3://my-bucket/prefix,ExportPath=s3://my-bucket/export}
- Amazon SageMaker:
- Almacenamiento de alto rendimiento para entrenamiento ML
- Acceso rápido a grandes conjuntos de datos
- Compartir modelos entre instancias
- AWS Batch:
- Procesamiento por lotes de alto rendimiento
- Compartir datos entre trabajos
- Acceso paralelo desde múltiples nodos
Consideraciones de Seguridad y Rendimiento
Seguridad en EFS
- Control de acceso:
- IAM para operaciones de API y acceso a datos
- Políticas de sistema de archivos
- Puntos de acceso EFS para aplicaciones específicas
# Ejemplo de política de sistema de archivos EFS { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EfsReadOnly"}, "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientRead" ], "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/fs-0123456789abcdef" } ] }
- Cifrado:
- Cifrado en reposo (siempre habilitado en sistemas nuevos)
- Cifrado en tránsito opcional (TLS)
- Integración con AWS KMS para gestión de claves
- Puntos de acceso EFS:
- Aplicación de identidad de usuario y grupo
- Directorios raíz específicos por aplicación
- Aislamiento de aplicaciones en el mismo sistema de archivos
# Creación de punto de acceso EFS aws efs create-access-point \\ --file-system-id fs-0123456789abcdef \\ --posix-user Uid=1000,Gid=1000 \\ --root-directory Path=/app1,CreationInfo={OwnerUid=1000,OwnerGid=1000,Permissions=755}
Seguridad en FSx
- FSx for Windows:
- Integración con Active Directory
- ACLs de Windows (NTFS)
- Auditoría de acceso a archivos
- Cifrado en reposo y en tránsito
- FSx for Lustre:
- Control de acceso basado en POSIX
- Cifrado en reposo
- VPC security groups
Optimización de Rendimiento
- EFS:
- Usar el modo de rendimiento adecuado (General Purpose vs. Max I/O)
- Configurar el throughput apropiado (Bursting vs. Provisioned)
- Optimizar tamaño de I/O (idealmente >1MB para mejor throughput)
- Paralelizar operaciones cuando sea posible
- FSx for Windows:
- Dimensionar correctamente la capacidad de throughput
- Usar SSD para cargas de trabajo sensibles a la latencia
- Considerar Multi-AZ para alta disponibilidad
- Optimizar configuración de SMB en clientes
- FSx for Lustre:
- Seleccionar el tipo de despliegue adecuado (Scratch vs. Persistent)
- Dimensionar correctamente el throughput por unidad de almacenamiento
- Optimizar el tamaño de stripe para los patrones de acceso
- Considerar la localidad de datos (misma AZ que las instancias)
Consideraciones Finales
Los sistemas de archivos compartidos en AWS ofrecen soluciones flexibles para una amplia gama de casos de uso. Al elegir entre EFS y las variantes de FSx, es importante considerar:
- Compatibilidad del sistema operativo: Linux (EFS), Windows (FSx for Windows), o ambos (FSx for ONTAP)
- Protocolo requerido: NFS, SMB, iSCSI, o protocolos específicos como Lustre
- Requisitos de rendimiento: latencia, throughput, IOPS
- Requisitos de disponibilidad: tolerancia a fallos de AZ
- Integraciones necesarias: con otros servicios AWS o sistemas existentes
- Consideraciones de costo: balance entre rendimiento y presupuesto
La elección correcta dependerá de las necesidades específicas de cada carga de trabajo. EFS es ideal para cargas de trabajo Linux que requieren un sistema de archivos elástico y compartido. FSx for Windows es la opción natural para entornos Windows y aplicaciones que requieren SMB. FSx for Lustre está optimizado para cargas de trabajo de alto rendimiento como HPC y ML. FSx for ONTAP y OpenZFS ofrecen capacidades avanzadas para casos de uso específicos.
Con la configuración adecuada y siguiendo las mejores prácticas, estos servicios pueden proporcionar almacenamiento de archivos compartido de alto rendimiento, seguro y altamente disponible para prácticamente cualquier aplicación en la nube.