¿Cuántos problemas puede causar un pequeño emoticón? No pensarás en eso. Este emoticón proviene del episodio 20 de la novena temporada de la clásica serie de televisión estadounidense "Friends" (también conocida como "Six"). Rachel, interpretada por Jennifer Aniston, escuchó que se iba a realizar una fiesta de telenovela en la azotea e inmediatamente aplaudió. Tiene sólo un tamaño de 1,6 MB y se ha utilizado 246.173 veces en una plataforma social llamada Discourse porque es muy popular entre los internautas.
Cada vez que se utiliza, se realizará una copia de seguridad repetidas veces, formando eventualmente 377 GB de copia de seguridad redundante y más de 240.000 enlaces físicos, lo que rompe directamente el límite de capacidad del sistema de archivos de Linux y hace que falle el mecanismo de copia de seguridad.

Como proyecto de software de código abierto, Discourse brinda soporte técnico a más de 22.000 comunidades en línea. La función de chat en tiempo real admite la inserción de emoticones y animaciones GIF.
Sin embargo, tiene un mecanismo especial de "carga segura":Cuando un archivo se mueve entre diferentes escenarios de seguridad, como el reenvío de un mensaje privado a una publicación pública, el sistema genera una nueva copia con un valor de cifrado SHA1 aleatorio. Aunque el archivo no ha cambiado en absoluto, Discourse lo tratará como un archivo nuevo.
Por lo tanto, si una imagen o un emoticón popular se difunde continuamente en publicaciones, reenvíos y mensajes privados, se generará una nueva copia cada vez.

De hecho, Discourse es consciente desde hace tiempo del problema de verse abrumado por archivos duplicados. La solución inicial fue rastrear los archivos originales a través de valores Hash de archivos. Al realizar una copia de seguridad, los archivos cargados se agrupan por valores hash. Solo se descarga el primer archivo de cada grupo y se crean enlaces físicos para los archivos duplicados.
Se ve bien y elegante, pero el sistema Discourse Linux usa el sistema más común y antiguo.El sistema de archivos ext4 admite un máximo de 16 TB de archivo único y un sistema de archivos de 1 EB, pero cada archivo solo permite un máximo de 65 000 enlaces físicos.
Por lo tanto, la solución Discourse no puede descargar más de 240.000 archivos duplicados una sola vez. Después de alcanzar el límite superior, además de la primera descarga, el sistema también realizó aproximadamente 181.000 descargas de copias de seguridad adicionales.
Es decir,Lo que bloquea el sistema no son los enormes archivos de copia de seguridad, sino la enorme cantidad de enlaces físicos.

Afortunadamente,Discourse finalmente encontró la solución perfecta. La idea era crear vínculos duros. Sin embargo, cuando el sistema de archivos mostró un mensaje de error EMLINK de "demasiados enlaces", copió el archivo correspondiente localmente y configuró el nuevo archivo como "archivo maestro". En base a ello, continuó creando enlaces físicos hasta que se alcanzó nuevamente el límite de enlaces.
Discourse está bastante satisfecho de que esta nueva medida funcione en todos los sistemas de archivos y no requiera configuración adicional.
Esto es perfectamente aceptable siempre que no se pueda cambiar el sistema de archivos.

Finalmente, Discourse también bromeó:Ahora sabemos que Jennifer Aniston también puede poner a prueba el estrés del servidor.
