ZFS: jakou velikost recordsize zvolit?

dsewqewqewqeq

ZFS: jakou velikost recordsize zvolit?
« kdy: 03. 12. 2017, 19:20:50 »
Dobry den,

dostal som sa prvykrat do kontaktu so ZFS a riesim problematiku recordsize.
Ak mam subory o velkosti 1MB tak je najlepsie pouzit recordsize 1MB alebo radsej 512KB, pripadne ako to je?

Ak spravne chapem, cela pointa je v tom, aby sa co vosiel 1 subor co najlepsie do 1 recordsize bloku a nebol rozhadzany po viacerych blokoch a zasa naopak aby nebol prilis velky a necital sa zbytocny balast z daneho bloku. Je to tak?

Dakujem.
« Poslední změna: 03. 12. 2017, 20:34:16 od Petr Krčmář »


Re:ZFS: jakou velikost recordsize zvolit?
« Odpověď #1 kdy: 04. 12. 2017, 09:34:59 »
Recordsize je nejmenší jednotka alokace, která se zabere. Velmi zjednodušeně řečeno, čím větší bude, tím rychlejší filesystem získáte, ale o to víc budete plýtvat místem. Při 128 KiB recordsize "sežere" i jednobajtový soubor celých 128 KiB místa. Velikost recordsize se volí podle typu dat - pro velké soubory může být větší, pro hafo malých musí být menší.

Pak je poměrně racionální mít stejně velkou recordsize, aby odpovídala fyzickému bloku na zařízení, nebo byla jeho násobkem. Např. RAID řadiče mají blok 64 - 512 KiB.

U ZFS ještě přichází do hry checksumy. Na ZFS má každý blok svůj kontrolní součet - čím větší blok, tím méně kontrolních součtů na stejnou velikost dat. To je výhoda. Nevýhodou je zase menší "šance" na deduplikaci, pokud o ní u ZFS uvažujete.

Fragmentace dat Vás moc zajímat nemusí, moderní filesystémy data moc nefragmentují - stačí splnit podmínku mít dostatek volného místa (minimálně 15 %, ideálně 30 % kapacity).

Dokud neřešíte konkrétní situaci, nechal bych výchozích 128 KiB a poté bych zkoumal, jak Vám může pomoci jiné nastavení. Univerzální odpověď, jak jste jistě tušil, neexistuje.

dsewqewqewqeq

Re:ZFS: jakou velikost recordsize zvolit?
« Odpověď #2 kdy: 07. 12. 2017, 02:14:37 »
Dakujem za obsiahlu odpoved. Ak sa neskor rozhodnem zmenit recordsize, tak si vytvorim novy dataset a data na neho mozem nakopirovat cez zfs send & receive?

Re:ZFS: jakou velikost recordsize zvolit?
« Odpověď #3 kdy: 07. 12. 2017, 05:57:44 »
Dakujem za obsiahlu odpoved. Ak sa neskor rozhodnem zmenit recordsize, tak si vytvorim novy dataset a data na neho mozem nakopirovat cez zfs send & receive?

Nezkoušel jsem a pochybuji, že to jde. Podle dokumentace, na použití recordsize > 128 KiB musí být zpool inicializovaný s podporou velkých bloků. Podle toho, co kolem toho čtu, nedoporučuje se v tom vrtat, výjimkou jsou datasety s daty databází, kde jsou sice obrovské soubory, ale je k nim přistupováno náhodně a čte se po malých kouscích dat.

Re:ZFS: jakou velikost recordsize zvolit?
« Odpověď #4 kdy: 07. 12. 2017, 12:40:51 »
Dobrý deň, existujú dve verzie zfs, jedna (uzavretá), ktorú používa Solaris a druhá http://open-zfs.org/wiki/Main_Page.
Obe verzie sú kompatibilné vo verzii zfs-28, keď Oracle uzavrela kódy a vývoj sa vydal dvoma smermi.
Predpokladám že sa bavíme o openzfs, ktorá funguje v Linuxe, FreeBSD, illumos atď.
Nezkoušel jsem a pochybuji, že to jde. Podle dokumentace, na použití recordsize > 128 KiB musí být zpool inicializovaný s podporou velkých bloků. Podle toho, co kolem toho čtu, nedoporučuje se v tom vrtat, výjimkou jsou datasety s daty databází, kde jsou sice obrovské soubory, ale je k nim přistupováno náhodně a čte se po malých kouscích dat.
recordsize > 128KiB je možné použiť na všetkých pooloch, predtým je ale potrebné vykonať upgrade poolu.
Kód: [Vybrat]
zpool upgrade [-V version] -a | pool ...Po upgrade sa k tomuto poolu nedá pristupovať so staršou verziou zfs.

Osobne využívam recordsize = 1M na pool s veľkými multimediálnymi súbormi. Pri viac GB súboroch mi nezáleží na nevyužití niekoľko sto KiB.
Na mysql používam recordsize = 16K, pretože mysql používa rovnaké bloky. Samozrejme na tomto poole nemám zapnutú komprimáciu ani deduplikáciu.
Recordsize je nejmenší jednotka alokace, která se zabere. Velmi zjednodušeně řečeno, čím větší bude, tím rychlejší filesystem získáte, ale o to víc budete plýtvat místem. Při 128 KiB recordsize "sežere" i jednobajtový soubor celých 128 KiB místa.
Súhlasím iba čiastočne:
Citace
Internally, ZFS allocates data using multiples of the device's sector size, typically either 512 bytes or 4KB (see above).  When compression is enabled, a smaller number of sectors can be allocated for each block. The uncompressed block size is set by the recordsize (defaults to 128KB) or volblocksize (defaults to 8KB) property (for filesystems vs volumes).


dsewqewqewqeq

Re:ZFS: jakou velikost recordsize zvolit?
« Odpověď #5 kdy: 07. 12. 2017, 13:10:56 »
ZFS planujem nasadit na storage, kde mame cca 5TB dat malych suborov. Kazdy subor ma 400-512KB. Takze chcem zvolit recordsize 512K.