AWS EFS vs EBS vs S3 (¿diferencias y cuándo usarlo?)

315

Según el título de esta pregunta, ¿cuáles son las diferencias prácticas entre AWS EFS, EBS y S3?

Mi comprensión de cada uno:

  • S3 es una instalación de almacenamiento accesible en cualquier lugar
  • EBS es un dispositivo que puede montar en EC2
  • EFS es un sistema de archivos que puede montar en EC2

Entonces, ¿por qué usaría EBS sobre EFS? ¿Parece que tienen los mismos casos de uso pero diferencias semánticas menores? Aunque EFS se replica a través de AZ donde EBS es solo un dispositivo montado. Supongo que falta mi comprensión de EBS, por lo tanto, no puedo distinguir.

¿Por qué elegir S3 sobre EFS? Ambos almacenan archivos, escalan y se replican. Supongo que con S3 tienes que usar el SDK, donde al igual que con EFS como sistema de archivos, puedes usar métodos de E / S estándar desde el lenguaje de programación que elijas para crear archivos. ¿Pero es esa la única diferencia real?

Integralista
fuente
2
EFS es como NFS. EBS es esencialmente una SAN. S3 es algo así como WebDav. Glacier es probablemente blueray DVDs storagemojo.com/2014/04/25/amazons-glacier-secret-bdxl
Neil McGuigan

Respuestas:

466

Respuesta de una palabra: DINERO: D

1 GB para almacenar en US-East-1: (actualizado en 2016.dec.20)

  • Glaciar: $ 0.004 / Mes (Nota: Gran reducción de precios en 2016)
  • S3: $ 0.023 / mes
  • S3-IA (anunciado en 2015.09): $ 0.0125 / Mes (+ $ 0.01 / cargo de recuperación de concierto)
  • EBS: $ 0.045-0.1 / mes (depende de la velocidad, SSD o no) + costos de IOPS
  • EFS: $ 0.3 / mes

Otras opciones de almacenamiento, que pueden usarse para almacenar datos temporalmente mientras / antes de procesarlos:

  • SNS
  • SQS
  • Corriente de Kinesis
  • DynamoDB, SimpleDB

Los costos anteriores son solo muestras. Puede haber diferencias por región, y puede cambiar en cualquier momento. También hay costos adicionales para la transferencia de datos (a Internet). Sin embargo, muestran una relación entre los precios de los servicios .

Hay muchas más diferencias entre estos servicios:

EFS es:

  • Generalmente disponible (fuera de la vista previa), pero es posible que aún no esté disponible en su región
  • Sistema de archivos de red (eso significa que puede tener una latencia mayor, pero se puede compartir en varias instancias; incluso entre regiones)
  • Es caro en comparación con EBS (~ 10 veces más) pero ofrece funciones adicionales.
  • Es un servicio altamente disponible.
  • Es un servicio gestionado
  • Puede adjuntar el almacenamiento EFS a una instancia EC2
  • Se puede acceder a varias instancias de EC2 simultáneamente
  • Desde 2016.dec.20 es posible conectar su almacenamiento EFS directamente a los servidores locales a través de Direct Connect. ()

EBS es:

  • Un bloque de almacenamiento (por lo que debe formatearlo). Esto significa que puede elegir qué tipo de sistema de archivos desea.
  • Como es un almacenamiento en bloque, puede usar Raid 1 (o 0 o 10) con múltiples almacenamientos en bloque
  • Es muy rapido
  • Es relativamente barato
  • Con los nuevos anuncios de Amazon, puede almacenar hasta 16 TB de datos por almacenamiento en SSD-s.
  • Puede tomar una instantánea de un EBS (mientras aún se está ejecutando) por razones de respaldo
  • Pero solo existe en una región en particular. Aunque puede migrarlo a otra región, no solo puede acceder a él a través de las regiones (solo si lo comparte a través del EC2; pero eso significa que tiene un servidor de archivos)
  • Necesita una instancia EC2 para adjuntarlo a
  • Nueva función (2017.Feb.15): ahora puede aumentar el tamaño del volumen, ajustar el rendimiento o cambiar el tipo de volumen mientras el volumen está en uso. Puede continuar usando su aplicación mientras el cambio surta efecto.

S3 es:

  • Un almacén de objetos (no un sistema de archivos).
  • Puede almacenar archivos y "carpetas" pero no puede tener bloqueos, permisos, etc., como lo haría con un sistema de archivos tradicional
  • Esto significa que, por defecto, no puede simplemente montar S3 y usarlo como su servidor web
  • Pero es perfecto para almacenar sus imágenes y videos para su sitio web
  • Excelente para el archivo a corto plazo (por ejemplo, unas pocas semanas). También es bueno para el archivo a largo plazo, pero Glacier es más rentable.
  • Ideal para almacenar registros
  • Puede acceder a los datos desde cada región (pueden aplicarse costos adicionales)
  • Muy disponible, redundante. Básicamente, la pérdida de datos no es posible (99.999999999% de durabilidad, 99.9 de tiempo de actividad SLA)
  • Mucho más barato que EBS.
  • Puede servir el contenido directamente a Internet, incluso puede tener un sitio web completo (estático) trabajando directamente desde S3, sin una instancia EC2

Glaciar es:

  • Almacenamiento de archivos a largo plazo
  • Extremadamente barato de almacenar
  • Potencialmente muy costoso de recuperar
  • Lleva hasta 4 horas "volver a leer" sus datos (por lo tanto, solo almacene los artículos que sabe que no necesitará recuperar por mucho tiempo)

Como se mencionó en el comentario de JDL, hay varios aspectos interesantes en términos de precios. Por ejemplo, Glacier, S3, EFS asigna el almacenamiento según su uso, mientras que en EBS debe predefinir el almacenamiento asignado. Lo que significa que debe sobreestimar. (Sin embargo, es fácil agregar más almacenamiento a sus volúmenes de EBS, requiere algo de ingeniería, lo que significa que siempre "paga de más" su almacenamiento de EBS, lo que lo hace aún más costoso).

Fuente: Actualización de almacenamiento de AWS: nueva opción de almacenamiento S3 de menor costo y reducción de precios de Glacier

Adam Ocsvari
fuente
8
El glaciar es extremadamente costoso si los datos deben restaurarse rápidamente liangzan.net/aws-glacier-calculator
Anatoly
66
No estoy de acuerdo que S3es más barato que EBS. Con S3usted solo puede tener 2000 PUT y 20 000 GET gratis. Con EBSusted tiene 2 000 000 operaciones de E / S de forma gratuita. Aquí está mi QA stackoverflow.com/questions/34048866/…
Verde
2
Los costos de lectura de 2 000 000 S3 ~ 0.4 $, los costos de escritura de 2 000 000 ~ $ 5 ... Pero el punto principal es que debe elegir el almacenamiento adecuado para la tarea. S3 es (principalmente) para archivos grandes, que no cambian con demasiada frecuencia pero que son ampliamente accesibles, lo mejor. (con muchas excepciones: D)
Adam Ocsvari
2
Buena comparacion. Pero otra diferencia importante entre EBS y EFS es que EBS es una cantidad fija de almacenamiento. Entonces, sí, la comparación de 1 GB es diferente, pero ¿por qué crearía una partición EBS de 1 GB? Mínimo, si va a crear una partición de 10 GB, entonces está buscando $ .5-1.0 para los mismos 1 GB de datos almacenados en los 10 GB de datos. Dependiendo de qué tan rápido crecerá su necesidad de almacenar datos y cuánto espacio no utilizado desea seguir pagando, EFS puede ser una mejor opción.
JDL
3
También vale la pena señalar: EFS actualmente solo funciona con Linux, no con Windows.
Andrew Clark el
110

Me pregunto por qué la gente no destaca la razón MÁS convincente a favor de EFS. EFS se puede montar en más de una instancia EC2 al mismo tiempo, lo que permite el acceso a los archivos en EFS al mismo tiempo.

(Editar 2020 mayo, EBS también admite el montaje en múltiples EC2 al mismo tiempo, consulte: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html )

Kabeer
fuente
Yo también. Las personas que hicieron la pregunta o votaron la pregunta (no la respuesta) simplemente no tienen idea de cuál es la diferencia entre el sistema UFS y NFS.
BMW
55
Del mismo modo, esta es una diferencia entre usar S3 y EBS: S3 y EFS funcionan bien para los datos compartidos en varios servidores, mientras que EBS no.
Geoffrey Wiseman
Además, EFS no se puede utilizar como origen para CDN, S3 es mejor para este rol. Si tiene muchos activos que deben estar disponibles para CDN, mejor use S3
Moses Liao GZ
71

Arreglando la comparación:

  • S3 es una instalación de almacenamiento accesible en cualquier lugar
  • EBS es un dispositivo que puede montar en EC2
  • EFS es un sistema de archivos que puede montar en varias instancias EC2 al mismo tiempo

En este punto, es un poco prematuro comparar EFS y EBS: no se conoce el rendimiento de EFS ni su confiabilidad.

¿Por qué usarías S3?

  • No es necesario que los archivos sean 'locales' para una o más instancias de EC2.
  • (efectivamente) capacidad infinita
  • servicio web incorporado, autenticación
tedder42
fuente
2
Recientemente configuré un volumen EFS ya que ahora está disponible en West-2. Parece que tengo problemas de escritura con archivos grandes. Por ejemplo, la creación de un contenedor docker falla con "archivo demasiado grande" y la creación de una base de datos sqlite también falló. No tuve este problema en el volumen de EBS que estaba usando. Por lo tanto, sí, EFS puede tener problemas de usabilidad / confiabilidad que deben "solucionarse" en este momento.
DKebler
7

Para agregar a la comparación: (ráfaga) el rendimiento de lectura / escritura en EFS depende de los créditos recopilados. La recopilación de créditos depende de la cantidad de datos que almacene en ella. Más fecha -> más créditos. Eso significa que cuando solo necesita unos pocos GB de almacenamiento que se leen o escriben a menudo, se quedará sin créditos muy pronto y el rendimiento se reducirá a aproximadamente 50 kb / s. La única forma de solucionar esto (en mi caso) fue agregar grandes archivos ficticios para aumentar la tasa de créditos obtenidos. Sin embargo, más almacenamiento -> más costo.

usuario1677120
fuente
2
Eso es una locura lenta. Al principio pensé que esto era un error de OP, pero después de verificar la documentación es correcto (a partir de 2017)
Jakobovski
7

Además del precio y las características, el rendimiento también varía mucho (como lo menciona el usuario 1677120):

EBS

Tomado de documentos de EBS :

| EBS volume | Throughput |           Throughput          |
|    type    |   MiB/s    |         dependent on..        |
|------------|------------|-------------------------------|
| gp2 (SSD)  | 128-160    | volume size                   |
| io1 (SSD)  | 0.25-500   | IOPS (256Kib/s per IOPS)      |
| st1 (HDD)  | 20-500     | volume size (40Mib/s per TiB) |
| sc1 (HDD)  | 6-250      | volume size (12Mib/s per TiB) |

Tenga en cuenta que para io1, st1 y sc1 puede reventar el tráfico de rendimiento a al menos 125Mib / s, pero a 500Mib / s, dependiendo del tamaño del volumen.

Puede aumentar aún más el rendimiento, por ejemplo, implementando volúmenes EBS como RAID0

EFS

Tomado de documentos de EFS

| Filesystem |    Base    |   Burst    |
|    Size    | Throughput | Throughput |
|    GiB     |   MiB/s    |   MiB/s    |
|------------|------------|------------|
|         10 |        0.5 |        100 |
|        256 |       12.5 |        100 |
|        512 |       25.0 |        100 |
|       1024 |       50.0 |        100 |
|       1536 |       75.0 |        150 |
|       2048 |      100.0 |        200 |
|       3072 |      150.0 |        300 |
|       4096 |      200.0 |        400 |

El rendimiento base está garantizado, el rendimiento en ráfaga utiliza los créditos que acumuló estando por debajo del rendimiento base (por lo que solo tendrá esto por un tiempo limitado, consulte aquí para obtener más detalles).

S3

S3 es una cosa totalmente diferente, por lo que realmente no se puede comparar con EBS y EFS. Además: no hay métricas de rendimiento publicadas para S3. Puede mejorar el rendimiento descargando en paralelo (en alguna parte leí los estados de AWS que tendría un rendimiento básicamente ilimitado de esta manera), o agregando CloudFront a la mezcla

hansaplast
fuente
2

En palabras simples

Amazon EBS proporciona almacenamiento a nivel de bloque.

Amazon EFS proporciona almacenamiento de archivos compartidos conectados a la red.

Amazon S3 proporciona almacenamiento de objetos.

Mandrek
fuente
1

EBS es simple: almacenamiento a nivel de bloque que se puede conectar a una instancia de la misma AZ y puede sobrevivir independientemente de la vida de la instancia.

Sin embargo, la diferencia interesante es entre EFS y S3, y para identificar los casos de uso adecuados para ello.

Costo: EFS es aproximadamente 10 veces más costoso que S3.

Casos de uso:

  • Cada vez que tenemos miles de instancias que necesitan procesar archivos simultáneamente, se recomienda EFS sobre S3.
  • También tenga en cuenta que S3 es un almacenamiento basado en objetos, mientras que EFS está basado en archivos, implica que siempre que tengamos el requisito de que los archivos se actualicen continuamente (se actualicen) debemos usar EFS.
  • S3 es finalmente consistente mientras que EFS es fuerte y consistente. En caso de que no pueda permitirse la coherencia eventual, debe usar EFS
Tejas
fuente
0

Amazon EBS proporciona almacenamiento a nivel de bloque: se utiliza para crear un sistema de archivos y almacenar archivos. Amazon EFS: su sistema de almacenamiento compartido similar a NAS / SAN. Debe montarlo en el servidor Unix y usarlo. Amazon S3: es un almacenamiento basado en objetos donde cada elemento se almacena con una URL http.

Una de las diferencias es que EBS se puede conectar a 1 instancia a la vez y EFS se puede conectar a varias instancias por lo que el almacenamiento compartido. El almacenamiento de objetos simples S2 no se puede montar.

Suresh Chandra Joshi
fuente
0

EFS y S3 tienen el mismo propósito, puede almacenar cualquier tipo de objeto o archivos.

Pero para mí, la única diferencia es que EFS le permite tener un sistema de archivos tradicional en la nube VM (EC2) con más flexibilidad, como si pudiera adjuntarlo a varias instancias.

S3, por otro lado, es un servidor flexible y elástico separado para sus objetos. Se puede utilizar para sus archivos estáticos, imágenes, videos o incluso para alojar aplicaciones estáticas (js).

EBS es obviamente para el almacenamiento en bloque donde puede instalar el sistema operativo o cualquier cosa relacionada con su sistema operativo.

Marjun
fuente