A „Friends” Rachel táncos GIF‑klipi számos gigabájtra nőtt, elsüllyesztve a Discourse mentéseit
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.
Jelentkezz be a hozzászóláshoz