FS se stejnou velikostí souborů

FS se stejnou velikostí souborů
« kdy: 20. 05. 2012, 21:41:05 »
Pěkný den,

nevíte někdo - potřeboval bych (spíš pro inspiraci při vývoji) "souborový systém", který rozdělí disk na bloky stejné velikosti - co blok, to soubor ?

Je někde něco takového ?

Děkuju


Kit

Re:FS se stejnou velikostí souborů
« Odpověď #1 kdy: 20. 05. 2012, 21:53:22 »
Samozřejmě je něco takového možné, ale co od toho očekáváš? Obvykle si pro podobné účely vystačím s nějakou databází.

Re:FS se stejnou velikostí souborů
« Odpověď #2 kdy: 20. 05. 2012, 22:19:38 »
Na to se bude dělat ještě přesná analýza - teď bych potřeboval mít v ruce nějakou implementaci pro demonstraci myšlenky.

V podstatě zatim stačí rozsekat disk na bloky a názvy souboru nahradit číslem tohodle bloku. Ani nepotřebuju direktorky.

Koukám tu teď do zdrojáků bfs a připadá mi to pro inspiraci ještě pořád moc složitý - i když asi se tim nějak prohrabu :D

Myslel jsem, že kdyby věděl někdo ještě o něčem jednodušším, že by mi to mohlo pomoct.

Kit

Re:FS se stejnou velikostí souborů
« Odpověď #3 kdy: 20. 05. 2012, 22:29:37 »
Našel jsem něco takového v Tokyo Cabinetu - formát TCF. Jenom nevím, jestli se to k tomuto účelu bude hodit.

Re:FS se stejnou velikostí souborů
« Odpověď #4 kdy: 20. 05. 2012, 22:36:46 »
No, já potřebuju opravdu souborový systém.

Cílem je maximalizovat výkonnost jedné specifické aplikace - k tomu potřebuju obejít různé nesmyslné algoritmy alokací bloků, tvorby inod atp.


Kit

Re:FS se stejnou velikostí souborů
« Odpověď #5 kdy: 20. 05. 2012, 22:42:42 »
A co takhle použít přímo diskový oddíl?

Re:FS se stejnou velikostí souborů
« Odpověď #6 kdy: 20. 05. 2012, 22:47:54 »
To už je asi zase moc low-level :D

Ale tak ten FS se napsat dá - jen, kdyby člověk viděl nebo vycházel z něčeho podobnýho, šlo by to rychlejc. ;-)

Honza K

Re:FS se stejnou velikostí souborů
« Odpověď #7 kdy: 20. 05. 2012, 23:24:21 »
To už je asi zase moc low-level :D

Ale tak ten FS se napsat dá - jen, kdyby člověk viděl nebo vycházel z něčeho podobnýho, šlo by to rychlejc. ;-)

Já bych neřekl, že je to low-level. Pokud si otevřeš partition normálně přes fopen, tak s ní můžeš pracovat normálně
jako s velkým binárním souborem (pokud si do ní nastavíš právo pro zápis). (viz např. http://www.linuxforums.org/forum/programming-scripting/185467-using-fopen-fread-dev-sda.html). Pokud potřebuješ skladiště souborů/dat bez adesářové struktury, tak ti stačí v programu vytvořit tabulku (pole struktur v C/C++) kde budeš mít číslo bloku + popis/identifikaci souboru. Potom fseekem se přesuneš na adresu cislo_bloku * velikost_bloku a čteš/zapisuješ. Pokud potřebuješ i adresáře, tak ti stačí do tabulky přilepit ještě příznak adesáře a odkaz na podřízenou položku v tabulce. Tady už si musíš napsat funkce na čteni a zápis, které budou provazovat jednotlivé položky tabulky. Jestliže je požadována i perzistentnost, tak jednoduše tabulku zapíšeš do souboru a zase načteš. Podle mne nic rychlejšího (a pavděpodobně ani jednoduššího) nevymyslíš...

citanus

Re:FS se stejnou velikostí souborů
« Odpověď #8 kdy: 20. 05. 2012, 23:33:04 »

Honza K

Re:FS se stejnou velikostí souborů
« Odpověď #9 kdy: 21. 05. 2012, 02:31:38 »
To už je asi zase moc low-level :D

Ale tak ten FS se napsat dá - jen, kdyby člověk viděl nebo vycházel z něčeho podobnýho, šlo by to rychlejc. ;-)

Já bych neřekl, že je to low-level. Pokud si otevřeš partition normálně přes fopen, tak s ní můžeš pracovat normálně
jako s velkým binárním souborem (pokud si do ní nastavíš právo pro zápis). (viz např. http://www.linuxforums.org/forum/programming-scripting/185467-using-fopen-fread-dev-sda.html). Pokud potřebuješ skladiště souborů/dat bez adesářové struktury, tak ti stačí v programu vytvořit tabulku (pole struktur v C/C++) kde budeš mít číslo bloku + popis/identifikaci souboru. Potom fseekem se přesuneš na adresu cislo_bloku * velikost_bloku a čteš/zapisuješ. Pokud potřebuješ i adresáře, tak ti stačí do tabulky přilepit ještě příznak adesáře a odkaz na podřízenou položku v tabulce. Tady už si musíš napsat funkce na čteni a zápis, které budou provazovat jednotlivé položky tabulky. Jestliže je požadována i perzistentnost, tak jednoduše tabulku zapíšeš do souboru a zase načteš. Podle mne nic rychlejšího (a pavděpodobně ani jednoduššího) nevymyslíš...

Oprava - má tam samozřejmě být odkaz na nadřízenou položku  :)

Zopper

  • *****
  • 657
    • Zobrazit profil
Re:FS se stejnou velikostí souborů
« Odpověď #10 kdy: 21. 05. 2012, 08:32:15 »
Oprava - má tam samozřejmě být odkaz na nadřízenou položku  :)
A taky seznam podřízených položek, ne? Jinak by se potomek musel hledat sekvenčně... :)

Re:FS se stejnou velikostí souborů
« Odpověď #11 kdy: 21. 05. 2012, 08:39:31 »
Díky za tipy. Zkusím se ještě zamysled nad tím přímým přístupem do partitiony - možná, že by to přecejen mohlo být řešení.

Trident

Re:FS se stejnou velikostí souborů
« Odpověď #12 kdy: 22. 05. 2012, 20:08:19 »
Tim primym pristupem na partition jsi mi pripomel Sybase. Ta to tak dela strasne dlouho. Dokonce se tam da obejit i buffering u os. MySQL uz to taky umi. Tak proc vynalezat kolo;)
Pokud planujes nejaky storage filesystem pro SAN tak by to treba i smysl melo. Na druhou stranu pokud potrebujes adresovat blok po bloku a psat blok po bloku tak potes kokes. Uvedomujes si ze blok muze byt ruzne velky? Ze na druhe strane nemusi byt ani fyzicky disk? Jak se s tim poperes?
I pokud pouzijes fread, coz je porad buffered tak pro disky je nejlepsi precist/zapsat hromadu dat a ne jeden blok. Optimalni chunk dat k precteni si zjistis benchmarkem.
Naimplementovat filesystem neni sranda. Podivej jak dlouho se patlaji s btrfs.

Re:FS se stejnou velikostí souborů
« Odpověď #13 kdy: 23. 05. 2012, 11:57:29 »
Tim primym pristupem na partition jsi mi pripomel Sybase. Ta to tak dela strasne dlouho. Dokonce se tam da obejit i buffering u os. MySQL uz to taky umi. Tak proc vynalezat kolo;)
Pokud planujes nejaky storage filesystem pro SAN tak by to treba i smysl melo. Na druhou stranu pokud potrebujes adresovat blok po bloku a psat blok po bloku tak potes kokes. Uvedomujes si ze blok muze byt ruzne velky? Ze na druhe strane nemusi byt ani fyzicky disk? Jak se s tim poperes?
I pokud pouzijes fread, coz je porad buffered tak pro disky je nejlepsi precist/zapsat hromadu dat a ne jeden blok. Optimalni chunk dat k precteni si zjistis benchmarkem.
Naimplementovat filesystem neni sranda. Podivej jak dlouho se patlaji s btrfs.

Asi to opravdu bude varianta, ten přímý přístup.

Psát blok po bloku prostě v této aplikaci dává smysl i s rizikem, že tam občas vzniknou díry. Fyzický disk na konci vždycky bude.

Jeden blok je hromada dat :D Ty bloky budou opravdu veliké 16M ? 64M ? - něco takového:D

Btrfs - to je evidentně o dva až tři řády složitější záležitost, než potřebuju. Ve srovnání s tím, co potřebuju je složitý i bfs se svými 1158 řádky zdrojáků.

Trident

Re:FS se stejnou velikostí souborů
« Odpověď #14 kdy: 24. 05. 2012, 21:19:22 »
Tim primym pristupem na partition jsi mi pripomel Sybase. Ta to tak dela strasne dlouho. Dokonce se tam da obejit i buffering u os. MySQL uz to taky umi. Tak proc vynalezat kolo;)
Pokud planujes nejaky storage filesystem pro SAN tak by to treba i smysl melo. Na druhou stranu pokud potrebujes adresovat blok po bloku a psat blok po bloku tak potes kokes. Uvedomujes si ze blok muze byt ruzne velky? Ze na druhe strane nemusi byt ani fyzicky disk? Jak se s tim poperes?
I pokud pouzijes fread, coz je porad buffered tak pro disky je nejlepsi precist/zapsat hromadu dat a ne jeden blok. Optimalni chunk dat k precteni si zjistis benchmarkem.
Naimplementovat filesystem neni sranda. Podivej jak dlouho se patlaji s btrfs.

Asi to opravdu bude varianta, ten přímý přístup.

Psát blok po bloku prostě v této aplikaci dává smysl i s rizikem, že tam občas vzniknou díry. Fyzický disk na konci vždycky bude.

Jeden blok je hromada dat :D Ty bloky budou opravdu veliké 16M ? 64M ? - něco takového:D

Btrfs - to je evidentně o dva až tři řády složitější záležitost, než potřebuju. Ve srovnání s tím, co potřebuju je složitý i bfs se svými 1158 řádky zdrojáků.
No z toho prispevku mi pripadalo ze myslis diskove bloky jako 512 nebo 4096b i vic. Tam by samozrejmne sel vykon na tlamu. Chtel
jsem rici ze pro disk je lepsi kdyz popadnes hromadu tehle bloku. Bohuzel nevim o jakou aplikaci se jedna, tak tezko soudit. Pane Smrtka nemuzete aspon naznacit?

Diry jsou i na zcela plnem disku by design ale ty je nevidis. Jak se bude chovat disk jses dnes uz tezko jako uzivatel schopen odhadnout. Chce to zkouseni,benchmarky a uzkou spolupraci s vyrobcem.