A „Friends” Rachel táncos GIF‑klipi számos gigabájtra nőtt, elsüllyesztve a Discourse mentéseit

A „Friends” Rachel táncos GIF‑klipi számos gigabájtra nőtt, elsüllyesztve a Discourse mentéseit

2 hardware

Rövid összefoglaló

A Discourse egy népszerű online vitafórum platform, ahol jelenleg több mint 22 000 közösség található.

Nemrég a webhely biztonsági mentése során kritikus probléma merült fel: egy GIF-fájl (1,6 MB) 246 173 alkalommal lett másolva a felhasználók által, ami meghaladta az ext4 fájlrendszer hard link limitját és a biztonsági mentés mérete 377 GB-ra nőtt.

Az alábbiakban részletesen elemezzük a helyzetet, okait és megoldásait.

1. Mi történt?
DiscourseAdatPlatformDiscourseKözösségek száma>22 000Fájl-problémaGIF „Rachel a Friends-ból”, méret 1,6 MBMásolások száma246 173 (hard link)Ext4 limit~65 000 hard link egy inode-reÖsszesített biztonsági mentés mérete377 GB
Miért történt ez?
A Discourse lehetővé teszi emoji és GIF-fájlok beillesztését bármilyen üzenetbe.

Amikor a fájlt áthelyezik egy kontextusból a másikba (például személyes csevegésből nyilvános posztra), a rendszer új példányt hoz létre véletlenszerű SHA‑1 hash-szel. Ez azt jelenti, hogy még ha a tartalom azonos is, a Discourse új objektumként kezeli.

Így egy GIF több tízezer üzenetben és személyes csevegésben is megjelenhet – minden alkalommal külön fájl jön létre. Végül 246 173 másolat meghaladta az ext4 limitet, és a rendszer új fájlokat kezdett létrehozni hard link helyett, ami „elvesztette” a 181 000 biztonsági mentést.

2. Első megoldás – hash‑gyűjtés
A Discourse először próbálta meg oldani a problémát, az SHA‑1 alapján csoportosítva a feltöltéseket:

1. A biztonsági mentés során minden fájl egyes hash-csoportokba került.
2. Csak az első példányt töltötték fel minden csoportból.
3. A többihez hard linkeket hoztak létre.

Ez elegánsnak tűnt – de nem vette figyelembe az ext4 limitjét a linkek számára. Amint elérte a határt, a rendszer automatikusan új fájlokat hozott létre link helyett, és a biztonsági mentés mérete hirtelen megnőtt.

3. Új megoldás – „átállás” EMLINK hibánál
A Discourse fejlesztette ki egy rugalmasabb stratégiát:

1. Hozzáad egy hard linket a fájlhoz, ahogy szokás.
2. Ha a fájlrendszer EMLINK (link limit túllépés) hibát ad vissza, a következő példányt „alap” fájlnak tekinti.
3. Azóta új linkek ismét erre az új alapverzióra mutatnak.

Így minden limit túllépésekor átvált egy új “szülő” fájlra, és a rendszer hibamentesen működik tovább. Ez a megoldás bármely fájlrendszerrel kompatibilis és nem igényel további beállítást.

4. Összegzés és következtetések
- Egy népszerű GIF (Rachel tánca a Friends-ból) okozta, hogy a biztonsági mentés 377 GB-ra nőtt.
- Az ext4 ~65 000 hard link limit kritikus tényező volt.
- A hash‑gyűjtés első megoldása nem vette figyelembe a fájlrendszer korlátait, ami adatvesztéshez vezetett.
- Az EMLINK hibánál történő átállás új stratégiája lehetővé teszi a nagy számú példány helyes kezelését és a biztonsági mentés hatékonyságának fenntartását.

> „Most már tudjuk, hogy Jennifer Aniston képes stressztesztelni az infrastruktúrát,” – ironikusan jegyezte meg a Discourse a blogjában.

Hozzászólások (0)

Oszd meg a véleményed — kérjük, légy udvarias és maradj a témánál.

Még nincsenek hozzászólások. Írj hozzászólást és oszd meg a véleményed!

Hozzászóláshoz kérjük, jelentkezz be.

Jelentkezz be a hozzászóláshoz