2012-05-29 9 views
53

¿Qué tan estable es s3fs para montar un cubo de Amazon S3 como un directorio local en Linux? ¿Es recomendable/estable para entornos de producción de alta demanda?¿Qué tan estable es s3fs para montar un depósito de Amazon S3 como un directorio local?

¿Hay alguna solución mejor/similar?

Actualización: ¿Sería mejor usar EBS y montarlo a través de NFS a todas las demás AMI?

+16

es una pena preguntas como esta terminan siendo cerradas. pero al menos no se eliminan ... – arod

+4

Sí, dennos una sección de opinión maldita o algo por el estilo. A veces necesitas una opinión ... –

+1

Nuevamente una buena pregunta cerrada ... ¡Es como "cerrado" es una etiqueta para una buena pregunta! – nemo

Respuesta

75

There's a good article on s3fs here, que después de leer recurrí a un recurso compartido de EBS.

Se destacan algunas consideraciones importantes cuando se utiliza s3fs, como los relativos a las limitaciones inherentes de S3:

  • ningún archivo puede ser más de 5 GB
  • no se puede actualizar parcialmente un archivo para cambiar una sola byte volverá a cargar todo el archivo.
  • operación en muchos archivos pequeños es muy eficiente (cada uno es un objeto S3 después de todo) pero los archivos grandes son muy ineficientes
  • Aunque S3 admite descargas parciales/fragmentadas, s3fs no aprovecha esto, por lo que si desea para leer solo un byte de un archivo de 1GB, tendrá que descargar todo el GB.

Por lo tanto, depende de lo que almacene si s3fs es una opción viable. Si está almacenando, por ejemplo, fotos, donde desea escribir un archivo completo o leer un archivo completo, nunca cambie un archivo de forma incremental, entonces está bien, aunque uno puede preguntar, si está haciendo esto, ¿por qué no usar S3? API directamente?

Si está hablando de datos de aplicación (por ejemplo, archivos de base de datos, archivos de registro) en los que desea hacer pequeños cambios incrementales, es definitivamente un no - S3 Simplemente no funciona de esa manera no puede cambiar incrementalmente un archivo.

El artículo mencionado anteriormente habla de una aplicación similar - s3backer - que soluciona los problemas de rendimiento implementando un sistema de archivos virtual sobre S3. Esto nos lleva alrededor de los problemas de rendimiento, pero sí tiene algunos problemas de su propia:

  • alto riesgo de corrupción de datos, debido al retraso escribe
  • demasiado pequeños tamaños de bloque (por ejemplo, el defecto 4K) pueden agregar significativa costos adicionales (por ejemplo, $ 130 por 50 GB con capacidad de almacenamiento de 4K bloques)
  • tamaños de bloque demasiado grandes pueden agregar una transferencia de datos significativa y honorarios de almacenamiento.
  • el uso de memoria puede ser prohibitivo: de forma predeterminada almacena en caché 1000 bloques.
    Con el tamaño de bloque 4K predeterminado, eso no es un problema, pero la mayoría de los usuarios
    probablemente querrán aumentar el tamaño del bloque.

He recurrido a EBS Mounted Drived compartido desde una instancia de EC2. Pero debe saber que, aunque es la opción más eficiente, tiene un gran problema Un compartimiento EFS montado en EBS tiene sus propios problemas: un único punto de falla; si la máquina que comparte el volumen de EBS se cae, usted pierde el acceso en todas las máquinas que acceden al recurso compartido.

Este es un riesgo con el que pude vivir y fue la opción que elegí al final. Espero que esto ayude.

+0

respondiendo a su pregunta: "si está haciendo esto, ¿por qué no simplemente usa la API de S3 directamente?" Usaré la API de S3, pero necesito una solución rápida para subir la búsqueda de mi aplicación que ya funciona en un servidor utilizando S3 transparente. No puedo vivir con un solo punto de falla (EBS). ¿Es transparente para s3fs si S3 falla y Amazon monta automáticamente otro? No estoy seguro de cómo funciona ... – arod

+0

En ese caso, probablemente solo lo almacenaría en el disco duro del servidor en una carpeta temporal. De lo contrario, ¡estás cargando de manera efectiva en S3 dos veces! Poner el archivo en una carpeta temporal basada en S3 tomará el mismo tiempo que usar la API para cargar directamente en S3 – reach4thelasers

+0

lo que quiero decir es que en un futuro cercano dejaré de usar s3fs y comenzaré a usar la API S3; Mientras tanto, usaré s3fs para que el sistema se ejecute ... muchas gracias ... – arod

14

Esta es una pregunta antigua, así que compartiré mi experiencia durante el año pasado con S3FS.

Inicialmente, tenía una serie de errores y pérdidas de memoria (tenía un trabajo cron para reiniciarlo cada 2 horas) pero con la última versión 1.73 ha sido muy estable.

Lo mejor de S3FS es que tiene menos cosas de qué preocuparse y obtiene algunos beneficios de rendimiento de forma gratuita.

La mayoría de sus solicitudes de S3 serán PUT (~ 5%) y GET (~ 95%). Si no necesita ningún procesamiento posterior (generación de miniaturas, por ejemplo). Si no necesita ningún procesamiento posterior, primero no debe acceder a su servidor web y cargarlo directamente a S3 (usando CORS).

Asumir que está llegando al servidor probablemente signifique que necesita hacer un procesamiento posterior en las imágenes. Con una API S3, la cargarás en el servidor y luego la subirás a S3. Si el usuario desea recortar, tendrá que volver a descargarlo desde S3, luego volver a cargarlo en el servidor, recortarlo y luego cargarlo en S3. Con S3FS y el caché local activado, esta organización se ocupa de usted y guarda la descarga de archivos desde S3.

En el almacenamiento en caché, si está almacenando en caché una unidad efímera en EC2, obtiene los beneficios de rendimiento que vienen con y pueden purgar su caché sin tener que preocuparse por nada. A menos que se quede sin espacio en disco, no debería tener ninguna razón para purgar su caché. Esto hace que las operaciones de desplazamiento como buscar y filtrar sean mucho más fáciles.

Lo único que sí me gustaría es tener una sincronización completa con S3 (estilo RSync). Eso lo convertiría en una versión empresarial de DropBox o Google Drive para S3, pero sin tener que lidiar con las cuotas y tarifas que vienen con él.

+0

con respecto a la "sincronización completa", ¿se refiere a algo así como [ esto] (http://s3tools.org/s3cmd-sync) (http://s3tools.org/s3cmd-sync) integrado en S3FS? – ylluminate

Cuestiones relacionadas