Vlastní hosting a náhrada za Object Storage

hknmtt

  • ***
  • 233
    • Zobrazit profil
    • E-mail
Vlastní hosting a náhrada za Object Storage
« kdy: 07. 02. 2025, 10:21:10 »
Mam Backblaze Object Storage, aktualne je tam nemozne nahrat jeden subor cez S3 API a podpora je naprosto neschopna a pomala(1 email za den), a kompletne mi to zabilo jednu sluzbu, ktora tam seriovo nahrava subory. Takze som sa rozhodol, ze namiesto toho aby som skusal alternativy(Wasabi, Hetzner, Contabo, Vultr, Bunny), tak si budem hostovat subory sam. Alwyzon ma 10TB za 51€ mesacne bez DPH napriklad, a dali mi aj ponuku na 88TB za 131€ bez DPH. Takze sa da ostat na, alebo ist pod, tych $6/TB.

Rozmyslam ale, ci treba na nieco mysliet pri implementacii? Nebudem riesit S3 API, ani pouzivat nejaku hotovou aplikaciu, ako je napriklad Minio. Urobim si vlastnu implementaciu na mieru(predsalen ide len o primitivny file hosting).

Davnejsie som cital nieco o tom, ze moze byt pomale ak sa subory nahravaju do jednej zlozky. Ze casom ked je tam vela suborov moze byt problem s rychlostou vypisovania. Nemyslim ze budem riesit vypis zoznamu suborov v zlozkach, ale i tak je mozno lepsie subory roztriedit podla prefixu do viacerych zloziek?

Druha vec, co rozmyslam ze moze byt zaujimave, je riesenie zloziek, podobne ako su kyble v S3, respektive to su samostatne lozky ale skor "zlozky", alebo "path prefix", priamo v kybloch. Normalne nie je moc co riesit, proste ak ma subor ciel nastaveny v podzlozke, tak ma podzlozku v ceste a je to banalita. Avsak rozmyslam prave z hladiska toho, ze server bude mat viac diskov, a teda musim pocitat prave s konceptom disku a jeho kapacity a rozlozenia prave tychto zloziek na viacero diskov, podla dostupnosti miesta. Napriklad je mozno lepsie ak dedikovana subzlozka je vzdy iba na jednom disku a nie je dobre to rozdelit na vsetky disky a ked je disk plny tak proste zlozka uz nepojme viac suborov.

A tak podobne, skratka, ci by som sa mal zamysliet nad niecim, co by ma mozno pri navrhu hned nenapadlo, ale casom by som mohol narazit na problemy?

Chcel by som sa vyhnut databaze. Aktualne preferujem metadata subory, co je len .md subor ktory ma json, napriklad, so zakladnymi md udajmi o subore. Mal som aj DB uz ale mi to prislo ako nie uplne prakticke riesenie, hlavne ked clovek musi riesit transakcie a synchronizaciu medzi tym co je realne na disku a co je v db a kto ma pravdu. Mat md subor mi pride aktualne viac DX-friendly skratka a vsetko riesi operacny system.

Neviem tiez, ci uchovavat subory pod povodnym nazvom alebo pod nejakym hashom. Tam je ale problem ze na vypis suborov v zlozke musim prave nacitat vsetky .md subory a vytiahnut relany filename odtial.
« Poslední změna: 07. 02. 2025, 10:22:44 od hknmtt »


Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #1 kdy: 07. 02. 2025, 15:13:41 »
Pěkná hra, určitě se spoustu věcí naučíš, ale nechceš nad tím stavět něco, z čeho máš mít nějaké peníze a má to mít nějakou spolehlivost, že ne?

- používat původní název souborů může být bezpečnostní nesmysl, různé kombinace multiznakových znaků, speciálních kombinací (../) ti celou logiku udělají pěkně obtížnou, stačí pak jeden blbý název a rozbije to ti filesystém či otevře služby do světa
- kámen úrazu je a vždy bude management, smazání starých, kontrola volného místa, kontrola konzitence a integrity souborů (netriviální)
- dřív nebo později ti odejde disk, server či se poškodí soubor, jak tohle plánuješ řešit?
- pokud jde o počet souborů ve složce, každý FS má svůj limit, některý jich dovolí 100tis, jiný 1M, ale zpravidla tě to omezí daleko dříve, protože jak myslíš, že probíhá hledání souborů podle názvu? Liší se to podle FS, některé mají O(n), některé 0(1), musíš zjistit a nastudovat
- při ukládání souborů bývá velký problém čistění neúspěšně nahraných souborů

Vymýšlíš kolo, což není špatně, když se chceš něco naučit.


hknmtt

  • ***
  • 233
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #2 kdy: 07. 02. 2025, 16:19:03 »
Nazov suboru by sa na vstupe bezne osetril, ale je pravda, ze je lepsie ist cestou nejakeho kluca/hashu, kedze nahrat je mozne aj ciste binarne data a nevnimat ich vzdy len ako subor. Co tym padom vyzaduje nejaku formu databaze.

Ochrana dat je zabezpecna raid-10. Ani ziadnen object storage hosting nema o moc lepsiu ochranu, akurat rozkladaju data v mensich castiach na viac diskov(wasabi az 7, backblaze tusim 5), ale v principe nikto nerobi plny mirror zdarma, takze ked odide hw tak odide hw a je jedno, ci to bude u mojho poskytovatela serveru alebo u poskytovatela object storage. Jasne ze OS provider disky rotuje, nie je problem server premigrovat kazde 2-3 roky ak budem chciet. Takze o data sa nejak moc neobavam, ked na to clovek mysli. Tiez je mozne napriklad raz mesacne spusit ulohu ktora prebehne vsetky subory a overi checksum, ktory zachyti bit rot na aplikacnej urovni.

Pocet suborov na zlozku - myslim, ze to smeruje k prvemu bodu, a teda pouzit db bude vhodne. Metadata subory preferujem, ale je pravda, ze su vhodnejsie na mensie nasadenie, nez v tomto pripade.

Co sa zvysku tyka, to uz osetri logika nahravania a kontrolovania dat(checksum), takze to nie je nejaky problem.

Este nejake tipy, alebo na co mysliet?

RDa

  • *****
  • 2 893
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #3 kdy: 07. 02. 2025, 16:47:10 »
nechapu co resis.. soubory se do slozek ukladaji podle hash prefixu, docela dobre konfigurovatelny mechanismus ma Gentoo Portage Distfiles:

https://www.gentoo.org/glep/glep-0075.html

A pak muzes mit databazi pro vsechna metadata (kdo kdy odkud to tam nahral, puvodni checksum, klidne z remote zdroje, takze se tim verifikuje i trasa uploadu, a pak statistiky kolikrat a kdy naposled to bylo stazeno), a podle ni delat scrub.

Skrze vice urovni hashu muzes soubory rozprostrit na nody/disky/adresare - osobne bych sel cestou zadny raid, ale live repliky. Tj. z tveho puvodniho konceptu RAID10 (se 4 diskama) udelat 4 nezavisle nody - s tim ze pro stejnou kapacitu a ochranu tam budes mit 2 identicke kopie dat (na nahodnych nodech), coz je ta mirror/raid1 cast, a pak tu stripe/raid0 cast poresi load balancing dotazu na mene vyuzity node.

Pokud to budes mit distribuovane a checksumovane na urovni bloku a ne celych souboru, tak jsi tam, kde bezni poskytovatele storage. Neni v tom zadna veda.

Jedina otazka je, zda potrebujes nejak resit konflikt jmen, nebo obsahovy dedup (po celych souborech, nebo blocich).

hknmtt

  • ***
  • 233
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #4 kdy: 07. 02. 2025, 16:51:03 »
nechapu co resis..

Ako som pisal na zaciatku, zaujima ma len ci treba mysliet na nieco na zaciatku, co by mohlo byt problem neskor a z malej blbosti by mohol vzniknut velky problem.


RDa

  • *****
  • 2 893
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #5 kdy: 07. 02. 2025, 17:49:31 »
nechapu co resis..

Ako som pisal na zaciatku, zaujima ma len ci treba mysliet na nieco na zaciatku, co by mohlo byt problem neskor a z malej blbosti by mohol vzniknut velky problem.

Tak to musis navrhnout tak, aby to od pocatku zvladalo pozdejsi naroky. A pokud naroky nejsou znamena, tak musis pocitat s tim, ze se bude delat migrace dat mezi dvouma verzemi, a to v pripade X TB nebude otazkou chvilky, takze by aplikace mela byt schopna bezet na dvou storage zaroven.

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #6 kdy: 07. 02. 2025, 18:39:24 »
Pozdejsi naroky mohou byt treba:
- sharding - jak rozlozit data mezi vice serveru, kdyz uz jeden nebude stacit
- kontrola konzistence a ochrana proti silent data corruption - jak a kdy kontrolovat data/zjistit, ze jsou poskozena/opravit je pri poskozeni
- paralelizace nahravani/stahovani - jednovlaknovy proces nezvladne takovou propustnost jako vicevlaknovy, ale vicevlaknovy zase potrebuje umet data rozdelit (pri stahovani) resp. sloucit (pri nahravani - imho slozitejsi)
- migrace - jak migrovat data mezi servery?
- pritomnost dat na vice serverech - pro situace, kdy bude treba jeden server vypnout kvuli udrzbe
- dostupnost dat po dobu udrzby (takovy fsck oddilu se stovkami milionu souboru muze trvat i hodiny)
- sifrovani dat - pujde data zasifrovat dodatecne, pokud to bude potreba?

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #7 kdy: 07. 02. 2025, 20:10:03 »
Takze misto zaplaceni si podpory za par $$$ budes budovat sve vlastni reseni na kterem utratis $$$$$? Kdyby jsi tady napsal co konkretne za problem mas s tim uploadem pres api tak ti nekdo mozna pomuze… mam nejake zalohovani do amazonu pres jejich api a naprosto bez problemu.

hknmtt

  • ***
  • 233
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #8 kdy: 07. 02. 2025, 21:00:27 »
Takze misto zaplaceni si podpory za par $$$

Neviem o ziadnom object storage hostingu ktory je zdarma... ::)

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #9 kdy: 07. 02. 2025, 22:32:11 »
Jinak tohle tvrzeni neni pravda:
Citace
Ani ziadnen object storage hosting nema o moc lepsiu ochranu, akurat rozkladaju data v mensich castiach na viac diskov(wasabi az 7, backblaze tusim 5), ale v principe nikto nerobi plny mirror zdarma, takze ked odide hw tak odide hw a je jedno, ci to bude u mojho poskytovatela serveru alebo u poskytovatela object storage.
Amazon to napriklad ma takhle:
Citace
S3 stores data redundantly across a minimum of 3 Availability Zones by default
Navic maji 99.999999999% durability a 99 az 99,9% availability SLA. Volne prelozeno, pri 99,9 % availability bude nedostupnost max. 8,76 hod. rocne a potencialne muzou ztratit 1 objekt z 100000000000.

Dosahnout neceho podobneho na vlastnim reseni urcite jde, ale zadarmo to urcite nebude.

hknmtt

  • ***
  • 233
    • Zobrazit profil
    • E-mail
Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #10 kdy: 07. 02. 2025, 22:47:53 »
Tak ale u AWS sa bavime o $23/TB, to je 4x cena Backblaze/Wasabi/OVH/Hetzner, za to by som ocakaval nejaku redundanciu uz tiez. A to neratam kolko u nich stoji sietova prevadzka este. Je to fajn informacia, ale uplne off topic.

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #11 kdy: 07. 02. 2025, 23:10:58 »
Kontrolovat každý měsíc checksum desítek TB dat, to vůbec není snadná úloha a naprosto neřeší, co udělat, když ti checksum nebude souhlasit.

Když už si to chceš dělat sám, vyprdni se na vlastní ukládání do souborů a použij k tomu nějakou databázi. Zkus vytáhnout nějaké menší a méně známé projekty, např.

1) https://garagehq.deuxfleurs.fr/, velmi jednoduchá s3 databáze, funkce má stabilní, je tady pár let, provozovat se dá na ledasčem a pár TB a ani miliony souborů jí nevadí. Plně open source.

2) https://juicefs.com/en/, poměrně pěkně navržená opět s3 (fuse, hdfs aj.) storage, má hodně funkcí (což je občas na škodu), funguje ale spolehlivě s pár příkazy, údržba je snadná, open source jen částečně, ale pro tvé účely dostatečně

3) https://github.com/seaweedfs/seaweedfs, projekt kontinuálně roste, z původní jednoduchosti už dospěl k docela velké komplexnosti, ale velkou část funkcí nemusíš používat, opět ti to dá dobré základy na ukládání souborů a přístup k nim

Pokud už si to chceš implementovat sám na filesystemu, asi bych ti doporučil se vyhnout ext3/4,xfs a jít do btrfs/zfs, ač sice budeš muset něco málo nastudovat (pro tvoje potřeby to nemusí být moc), tak ti poskytnout právě kontrolu integrity a možnost opravy poškozených dat, vč. možnosti dělat snapshoty (to je výborné pro zálohy). Data samozřejmě rozhazuj do složek.

Zkus si to, udělej si to, otestuj si to, pak aspoň víš, že ty služby zase tak drahé být nemusí nebo uspěješ a bude ti to fungovat.


Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #12 kdy: 08. 02. 2025, 02:23:24 »
Takze misto zaplaceni si podpory za par $$$

Neviem o ziadnom object storage hostingu ktory je zdarma... ::)
Podpora != hosting...

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #13 kdy: 08. 02. 2025, 02:24:16 »
Jinak tohle tvrzeni neni pravda:
Citace
Ani ziadnen object storage hosting nema o moc lepsiu ochranu, akurat rozkladaju data v mensich castiach na viac diskov(wasabi az 7, backblaze tusim 5), ale v principe nikto nerobi plny mirror zdarma, takze ked odide hw tak odide hw a je jedno, ci to bude u mojho poskytovatela serveru alebo u poskytovatela object storage.
Amazon to napriklad ma takhle:
Citace
S3 stores data redundantly across a minimum of 3 Availability Zones by default
Navic maji 99.999999999% durability a 99 az 99,9% availability SLA. Volne prelozeno, pri 99,9 % availability bude nedostupnost max. 8,76 hod. rocne a potencialne muzou ztratit 1 objekt z 100000000000.

Dosahnout neceho podobneho na vlastnim reseni urcite jde, ale zadarmo to urcite nebude.
Dosahnout neceho podobneho bude hodne drahe...

Re:Vlastní hosting a náhrada za Object Storage
« Odpověď #14 kdy: 08. 02. 2025, 02:26:09 »
jeste jednou: mas problem s api, nejsi spokojenej s rychlosti bezplatne podpory ale zaplatit si placenou podporu nechces a radsi vymyslis sve vlastni hostingove reseni... jo, to uplne dava smysl... #facepalm