Quels problèmes une petite émoticône peut-elle causer ? Vous n'y penserez pas. Cette émoticône provient du 20ème épisode de la neuvième saison de la série télévisée américaine classique "Friends" (également connue sous le nom de "Six"). Rachel, jouée par Jennifer Aniston, a entendu dire qu'une soirée feuilleton allait avoir lieu sur le toit et elle a immédiatement applaudi. Il ne fait que 1,6 Mo et a été utilisé 246 173 fois sur une plateforme sociale appelée Discourse en raison de sa popularité parmi les internautes.

Chaque fois qu'il est utilisé, il sera sauvegardé à plusieurs reprises, formant finalement 377 Go de sauvegarde redondante et plus de 240 000 liens physiques, ce qui dépasse directement la limite de capacité du système de fichiers Linux et provoque l'échec du mécanisme de sauvegarde.

En tant que projet logiciel open source, Discourse fournit un support technique à plus de 22 000 communautés en ligne. La fonction de chat en temps réel prend en charge l'insertion d'émoticônes et d'animations GIF.

Cependant, il dispose d'un mécanisme spécial de « téléchargement sécurisé » :Lorsqu'un fichier est déplacé entre différents scénarios de sécurité, comme le transfert d'un message privé vers une publication publique, le système génère une nouvelle copie avec une valeur de cryptage SHA1 aléatoire. Bien que le fichier n'ait pas changé du tout, Discourse le traitera comme un nouveau fichier.

Par conséquent, si une image ou une émoticône populaire est continuellement diffusée dans les publications, les transferts et les messages privés, une nouvelle copie sera générée à chaque fois.

En fait, Discourse est conscient depuis longtemps du problème d’être submergé par des fichiers en double. La solution initiale consistait à suivre les fichiers d'origine via les valeurs de hachage des fichiers. Lors de la sauvegarde, les fichiers téléchargés sont regroupés par valeurs de hachage. Seul le premier fichier de chaque groupe est téléchargé et des liens physiques sont créés pour les fichiers en double.

Il a l'air beau et élégant, mais le système Discourse Linux utilise le système le plus courant et le plus ancien.Le système de fichiers ext4 prend en charge un maximum de 16 To de fichiers uniques et un système de fichiers de 1 Mo, mais chaque fichier n'autorise qu'un maximum de 65 000 liens physiques.

Par conséquent, la solution Discourse ne peut pas télécharger plus de 240 000 fichiers en double une seule fois. Après avoir atteint la limite supérieure, en plus du premier téléchargement, le système a également effectué environ 181 000 téléchargements de sauvegarde supplémentaires.

C'est à dire,Ce qui fait planter le système, ce ne sont pas les énormes fichiers de sauvegarde, mais le nombre fou de liens physiques.

Heureusement,Le discours a finalement trouvé la solution parfaite. L'idée était de créer des liens physiques. Cependant, lorsque le système de fichiers a donné un message d'erreur EMLINK indiquant "trop ​​de liens", il a copié un fichier correspondant localement et a défini le nouveau fichier comme "fichier maître". Sur cette base, il a continué à créer des liens physiques jusqu'à ce que la limite de liens soit à nouveau atteinte.

Discourse est tout à fait satisfait du fait que cette nouvelle mesure fonctionne sur tous les systèmes de fichiers et ne nécessite aucune configuration supplémentaire.

Ceci est parfaitement acceptable tant que le système de fichiers ne peut pas être modifié.

Enfin, Discourse a également plaisanté :Nous savons désormais que Jennifer Aniston peut également tester le stress des serveurs.