{"id":83582,"date":"2020-06-01T19:42:21","date_gmt":"2020-06-01T17:42:21","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost"},"modified":"2020-06-01T19:42:21","modified_gmt":"2020-06-01T17:42:21","slug":"osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","title":{"rendered":"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/70d75786f36a92a0407107fb79bee721.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00fato jar sme u\u017e prediskutovali niektor\u00e9 \u00favodn\u00e9 t\u00e9my, napr\u00edklad, <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/gadgets\/2020\/02\/how-fast-are-your-disks-find-out-the-open-source-way-with-fio\/\">ako skontrolova\u0165 r\u00fdchlos\u0165 va\u0161ich diskov<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/04\/understanding-raid-how-performance-scales-from-one-disk-to-eight\/\">\u010do je RAID<\/a><\/noindex>. V druhom z nich sme dokonca pris\u013e\u00fabili pokra\u010dova\u0165 v sk\u00faman\u00ed v\u00fdkonu r\u00f4znych viacdiskov\u00fdch topol\u00f3gi\u00ed v ZFS. Ide o s\u00faborov\u00fd syst\u00e9m novej gener\u00e1cie, ktor\u00fd sa aktu\u00e1lne zav\u00e1dza v\u0161ade: od <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/gadgets\/2016\/06\/a-zfs-developers-analysis-of-the-good-and-bad-in-apples-new-apfs-file-system\/\">Apple<\/a><\/noindex> do <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/05\/ubuntu-20-04-welcome-to-the-future-linux-lts-disciples\/\">Ubuntu<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNo \u010do, dnes je ten najvhodnej\u0161\u00ed de\u0148 na zozn\u00e1menie sa so ZFS, zvedav\u00ed \u010ditatelia. jednoducho vedzte, \u017ee pod\u013ea skromn\u00e9ho odhadu v\u00fdvoj\u00e1ra OpenZFS Matta Arensa, \u201eje to naozaj zlo\u017eit\u00e9\u201c.<\/p>\n<p>Ale predt\u00fdm, ne\u017e sa dostaneme k \u010d\u00edslam \u2013 a tie tu bud\u00fa, s\u013eubujem \u2013 o v\u0161etk\u00fdch variant\u00e1ch osemdiskovej konfigur\u00e1cie ZFS, mus\u00edme sa porozpr\u00e1va\u0165 o tom, <i>ako<\/i> v\u00f4bec ZFS uchov\u00e1va d\u00e1ta na disku.<\/p>\n<h1>Zpool, vdev a device<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/d881cb44e935480a6f2c30795d6afaf1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tento diagram pln\u00e9ho puzdra obsahuje tri podporn\u00e9 vdevy, po jednom z ka\u017edej triedy, a \u0161tyri pre RAIDz2.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/fa52fcf700cc72105a90e4ddc4724d9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Zvy\u010dajne nie s\u00fa d\u00f4vody na vytv\u00e1ranie poolu z nekompatibiln\u00fdch typov a ve\u013ekost\u00ed vdev \u2013 ale ak chcete, ni\u010d v\u00e1m nebr\u00e1ni to urobi\u0165<\/i><\/p>\n<p>Aby ste naozaj pochopili s\u00faborov\u00fd syst\u00e9m ZFS, mus\u00edte sa pozrie\u0165 na jeho skuto\u010dn\u00fa \u0161trukt\u00faru. Po prv\u00e9, ZFS kombinuje tradi\u010dn\u00e9 \u00farovne spr\u00e1vy objemov a s\u00faborov\u00e9ho syst\u00e9mu. Po druh\u00e9, pou\u017e\u00edva transak\u010dn\u00fd mechanizmus kop\u00edrovania pri z\u00e1pise. Tieto vlastnosti znamenaj\u00fa, \u017ee syst\u00e9m je \u0161truktur\u00e1lne ve\u013emi odli\u0161n\u00fd od be\u017en\u00fdch s\u00faborov\u00fdch syst\u00e9mov a RAID pol\u00ed. Prv\u00e1 sada z\u00e1kladn\u00fdch stavebn\u00fdch blokov na pochopenie: je to \u00falo\u017en\u00fd pool (zpool), virtu\u00e1lne zariadenie (vdev) a re\u00e1lne zariadenie (device).<\/p>\n<h3>zpool<\/h3>\n<p>\n\u00dalo\u017en\u00fd pool zpool je najvy\u0161\u0161ia \u0161trukt\u00fara ZFS. Ka\u017ed\u00fd pool obsahuje jedno alebo viac virtu\u00e1lnych zariaden\u00ed. Tie na opl\u00e1tku obsahuj\u00fa jedno alebo viac re\u00e1lnych zariaden\u00ed (device). Virtu\u00e1lne pooly s\u00fa samostatn\u00e9 bloky. Jeden fyzick\u00fd po\u010d\u00edta\u010d m\u00f4\u017ee obsahova\u0165 dva alebo viac samostatn\u00fdch poolov, ale ka\u017ed\u00fd je \u00faplne nez\u00e1visl\u00fd od ostatn\u00fdch. Pooly nem\u00f4\u017eu zdie\u013ea\u0165 virtu\u00e1lne zariadenia.<\/p>\n<p>Redundancia ZFS sa nach\u00e1dza na \u00farovni virtu\u00e1lnych zariaden\u00ed, a nie na \u00farovni poolov. Na \u00farovni poolov nie je absol\u00fatne \u017eiadna redundancia \u2013 ak sa strat\u00ed ak\u00e9ko\u013evek zariadenie vdev alebo \u0161peci\u00e1lne vdev, spolu s n\u00edm sa strat\u00ed aj cel\u00fd pool.<\/p>\n<p>S\u00fa\u010dasn\u00e9 \u00falo\u017en\u00e9 pooly m\u00f4\u017eu pre\u017ei\u0165 stratu cache alebo denn\u00edka virtu\u00e1lneho zariadenia \u2014 hoci m\u00f4\u017eu strati\u0165 mal\u00e9 mno\u017estvo \u0161pinav\u00fdch \u00fadajov, ak strat\u00ed denn\u00edk vdev po\u010das v\u00fdpadku nap\u00e1jania alebo syst\u00e9mu.<\/p>\n<p>Existuje roz\u0161\u00edren\u00e9 zav\u00e1dzanie, \u017ee \u201e\u00fadajov\u00e9 p\u00e1sy\u201c (stripes) ZFS s\u00fa zapisovan\u00e9 cez cel\u00fd pool. To nie je pravda. Zpool nie je len z\u00e1bavn\u00fd RAID0, je to sk\u00f4r z\u00e1bavn\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Non-RAID_drive_architectures#JBOD\">JBOD<\/a><\/noindex> so zlo\u017eit\u00fdm premenliv\u00fdm mechanizmom distrib\u00facie.<\/p>\n<p>Vo v\u00e4\u010d\u0161ine pr\u00edpadov s\u00fa z\u00e1pisy distribuovan\u00e9 medzi dostupn\u00e9 virtu\u00e1lne zariadenia pod\u013ea dostupn\u00e9ho vo\u013en\u00e9ho miesta, tak\u017ee teoreticky bud\u00fa v\u0161etky vyplnen\u00e9 s\u00fa\u010dasne. V nov\u0161\u00edch verzi\u00e1ch ZFS sa zoh\u013ead\u0148uje aktu\u00e1lne vyu\u017eitie (utiliz\u00e1cia) vdev \u2014 ak je jedno virtu\u00e1lne zariadenie v\u00fdrazne za\u0165a\u017een\u00e9 viac ako in\u00e9 (napr\u00edklad kv\u00f4li za\u0165a\u017eeniu pri \u010d\u00edtan\u00ed), do\u010dasne sa vynech\u00e1 pre z\u00e1pis, aj ke\u010f m\u00e1 najvy\u0161\u0161\u00ed koeficient vo\u013en\u00e9ho miesta.<\/p>\n<p>Mechanizmus ur\u010dovania vyu\u017eitia, integrovan\u00fd do modern\u00fdch met\u00f3d distrib\u00facie z\u00e1pisu ZFS, m\u00f4\u017ee zn\u00ed\u017ei\u0165 latenciu a zv\u00fd\u0161i\u0165 priepustnos\u0165 po\u010das obdob\u00ed nezvy\u010dajne vysok\u00e9ho za\u0165a\u017eenia \u2014 ale to nie je <i>blank check<\/i> na ne\u00famyseln\u00e9 mie\u0161anie pomal\u00fdch HDD a r\u00fdchlych SSD v jednom poole. Tak\u00fdto nevyv\u00e1\u017een\u00fd pool bude st\u00e1le fungova\u0165 r\u00fdchlos\u0165ou najpomal\u0161ieho zariadenia, teda akoby bol \u00faplne zlo\u017een\u00fd z tak\u00fdchto zariaden\u00ed.<\/p>\n<h3>vdev<\/h3>\n<p>\nKa\u017ed\u00fd \u00falo\u017en\u00fd pool pozost\u00e1va z jedn\u00e9ho alebo viacer\u00fdch virtu\u00e1lnych zariaden\u00ed (virtual device, vdev). Ka\u017ed\u00e9 vdev na druhej strane zah\u0155\u0148a jedno alebo viac skuto\u010dn\u00fdch zariaden\u00ed. V\u00e4\u010d\u0161ina virtu\u00e1lnych zariaden\u00ed sa pou\u017e\u00edva na jednoduch\u00e9 \u00falo\u017eisko d\u00e1t, ale existuje nieko\u013eko pomocn\u00fdch tried vdev, vr\u00e1tane CACHE, LOG a SPECIAL. Ka\u017ed\u00fd z t\u00fdchto typov vdev m\u00f4\u017ee ma\u0165 jednu z piatich topol\u00f3gi\u00ed: jedin\u00e9 zariadenie (single-device), RAIDz1, RAIDz2, RAIDz3 alebo zrkadlo (mirror).<\/p>\n<p>RAIDz1, RAIDz2 a RAIDz3 s\u00fa \u0161peci\u00e1lne typy toho, \u010do star\u00ed naz\u00fdvaj\u00fa RAID s dvojitou (diagon\u00e1lnou) paritou. 1, 2 a 3 sa vz\u0165ahuj\u00fa na po\u010det blokov par\u00edt, ktor\u00e9 s\u00fa pridelen\u00e9 pre ka\u017ed\u00fd pruh d\u00e1t. Namiesto samostatn\u00fdch diskov na zabezpe\u010denie parity virtu\u00e1lne RAIDz zariadenia rovnomerne rozde\u013euj\u00fa t\u00fato paritu na disky. RAIDz pole m\u00f4\u017ee strati\u0165 to\u013eko diskov, ko\u013eko m\u00e1 blokov par\u00edt; ak strat\u00ed e\u0161te jeden, zlyh\u00e1 a odnesie so sebou \u00falo\u017en\u00fd pool.<\/p>\n<p>Vo zrkadlovo virtu\u00e1lnych zariadeniach (mirror vdev) sa ka\u017ed\u00fd blok uklad\u00e1 na ka\u017ed\u00e9 zariadenie v vdev. Hoci najbe\u017enej\u0161ie s\u00fa dvojit\u00e9 zrkadl\u00e1 (two-wide), v zrkadle m\u00f4\u017ee by\u0165 ak\u00e9ko\u013evek \u013eubovo\u013en\u00e9 mno\u017estvo zariaden\u00ed \u2014 vo ve\u013ek\u00fdch in\u0161tal\u00e1ci\u00e1ch na zv\u00fd\u0161enie v\u00fdkonu \u010d\u00edtania a odolnosti proti zlyhaniu sa \u010dasto pou\u017e\u00edvaj\u00fa trojit\u00e9. Zrkadlo vdev m\u00f4\u017ee pre\u017ei\u0165 ak\u00e9ko\u013evek zlyhanie, pokia\u013e funguje aspo\u0148 jedno zariadenie v vdev.<\/p>\n<p>Jednotliv\u00e9 vdev s\u00fa z podstaty nebezpe\u010dn\u00e9. Tak\u00e9to virtu\u00e1lne zariadenie nepre\u017eije \u017eiadne zlyhanie \u2014 a ak sa pou\u017e\u00edva ako \u00falo\u017eisko alebo \u0161peci\u00e1lne vdev, jeho zlyhanie sp\u00f4sob\u00ed zni\u010denie cel\u00e9ho poolu. Bu\u010fte tu ve\u013emi, ve\u013emi opatrn\u00ed.<\/p>\n<p>Virtu\u00e1lne zariadenia CACHE, LOG a SPECIAL m\u00f4\u017eu by\u0165 vytvoren\u00e9 v akejko\u013evek z uveden\u00fdch topol\u00f3gi\u00ed \u2014 ale pam\u00e4tajte, \u017ee strata virtu\u00e1lneho zariadenia SPECIAL znamen\u00e1 stratu poolu, preto sa d\u00f4razne odpor\u00fa\u010da redundantn\u00e1 topol\u00f3gia.<\/p>\n<h3>device<\/h3>\n<p>\nToto je pravdepodobne najjednoduch\u0161\u00ed term\u00edn na pochopenie v ZFS \u2014 je to doslova blokov\u00e9 zariadenie s n\u00e1hodn\u00fdm pr\u00edstupom. Pam\u00e4tajte, \u017ee virtu\u00e1lne zariadenia sa skladaj\u00fa z jednotliv\u00fdch zariaden\u00ed a pool je zlo\u017een\u00fd z virtu\u00e1lnych zariaden\u00ed.<\/p>\n<p>Disky \u2014 magnetick\u00e9 alebo solid-state \u2014 s\u00fa najbe\u017enej\u0161ie blokov\u00e9 zariadenia, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa ako stavebn\u00e9 bloky vdev. Av\u0161ak ak\u00e9ko\u013evek zariadenie s deskriptorom v \/dev je vhodn\u00e9 \u2014 tak\u017ee ako jednotliv\u00e9 zariadenia m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 cel\u00e9 hardwarov\u00e9 RAID polia.<\/p>\n<p>Jednoduch\u00fd raw s\u00fabor je jedn\u00fdm z najd\u00f4le\u017eitej\u0161\u00edch alternat\u00edvnych blokov\u00fdch zariaden\u00ed, z ktor\u00fdch m\u00f4\u017ee by\u0165 vdev postaven\u00fd. Testovacie pooly z <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sparse_file\">sparse files<\/a><\/noindex>\u00a0s\u00fa ve\u013emi pohodln\u00fdm sp\u00f4sobom, ako testova\u0165 pr\u00edkazy poolu a vidie\u0165, ko\u013eko miesta je k dispoz\u00edcii v poole alebo virtu\u00e1lnom zariaden\u00ed danej topol\u00f3gie.<\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/d9bea0e4a6842742a7dbac2f9b1ba394.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>M\u00f4\u017eete vytvori\u0165 testovac\u00ed pool zo zdie\u013ean\u00fdch s\u00faborov len za nieko\u013eko sek\u00fand \u2014 ale nezabudnite nesk\u00f4r odstr\u00e1ni\u0165 cel\u00fd pool a jeho komponenty.<\/i> <\/p>\n<p>Predpokladajme, \u017ee chcete nastavi\u0165 server s \u00f4smymi diskami a pl\u00e1nujete pou\u017ei\u0165 disky s kapacitou 10 TB (~9300 GiB) \u2014 ale nie ste si ist\u00ed, ktor\u00e1 topol\u00f3gia najlep\u0161ie vyhovuje va\u0161im potreb\u00e1m. V predch\u00e1dzaj\u00facom pr\u00edklade vytv\u00e1rame testovac\u00ed pool zo zdie\u013ean\u00fdch s\u00faborov len za nieko\u013eko sek\u00fand \u2014 a teraz vieme, \u017ee RAIDz2 vdev z \u00f4smich diskov s kapacitou 10 TB poskytuje 50 TiB vyu\u017eite\u013enej kapacity.<\/p>\n<p>\u010eal\u0161ou \u0161peci\u00e1lnou triedou zariaden\u00ed s\u00fa SPARE (n\u00e1hradn\u00e9). Zariadenia na hor\u00facu v\u00fdmenu, na rozdiel od be\u017en\u00fdch zariaden\u00ed, patria cel\u00e9mu poolu, nie jedn\u00e9mu virtu\u00e1lnemu zariadeniu. Ak nejak\u00fd vdev v poole zlyh\u00e1 a n\u00e1hradn\u00e9 zariadenie je pripojen\u00e9 k poolu a dostupn\u00e9, automaticky sa pripoj\u00ed k postihnut\u00e9mu vdev.<\/p>\n<p>Po pripojen\u00ed k postihnut\u00e9mu vdev n\u00e1hradn\u00e9 zariadenie za\u010d\u00edna dost\u00e1va\u0165 k\u00f3pie alebo rekon\u0161trukcie d\u00e1t, ktor\u00e9 by mali by\u0165 na ch\u00fdbaj\u00facom zariaden\u00ed. V tradi\u010dnom RAID sa tomu hovor\u00ed obnova (rebuilding) a v ZFS to je \"obnova redundancie\" (resilvering).<\/p>\n<p>Je d\u00f4le\u017eit\u00e9 poznamena\u0165, \u017ee n\u00e1hradn\u00e9 zariadenia trvale nenahr\u00e1dzaj\u00fa zlyhan\u00e9 zariadenia. To je len do\u010dasn\u00e1 n\u00e1hrada na skr\u00e1tenie \u010dasu, po\u010das ktor\u00e9ho je vdev v degradovanom stave. Po tom, \u010do administr\u00e1tor nahrad\u00ed zlyhan\u00e9 zariadenie vdev, d\u00f4jde k obnove redundancie na toto trval\u00e9 zariadenie a SPARE sa odpoj\u00ed od vdev a vr\u00e1ti sa k pr\u00e1ci ako n\u00e1hradn\u00fd pre cel\u00fd pool.<\/p>\n<h1>Sady d\u00e1t, bloky a sektory<\/h1>\n<p>\n\u010eal\u0161\u00ed s\u00fabor z\u00e1kladn\u00fdch blokov, ktor\u00e9 treba pochopi\u0165 v na\u0161ej ceste cez ZFS, sa net\u00fdka to\u013eko hardv\u00e9ru, ako sk\u00f4r toho, ako s\u00fa samotn\u00e9 d\u00e1ta organizovan\u00e9 a ulo\u017een\u00e9. Prech\u00e1dzame tu nieko\u013ek\u00fdmi \u00farov\u0148ami \u2014 ako je metaslab \u2014 aby sme nezav\u00e1dzali detaily a zachovali porozumenie celkovej \u0161trukt\u00fare.<\/p>\n<h3>S\u00fabor d\u00e1t (dataset)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/6a4dc218bd1c57989739d5072f13804c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ke\u010f prv\u00fdkr\u00e1t vytvor\u00edme s\u00fabor d\u00e1t, zobrazuje v\u0161etok dostupn\u00fd priestor poolu. Potom nastav\u00edme kv\u00f3tu \u2014 a men\u00edme mont\u00e1\u017eny bod. \u010carovn\u00e9!<\/i> <\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/aeb6763d6e78e3cc7ee8b1d39ee98b46.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Zvol je v podstate len s\u00fabor d\u00e1t bez svojej vrstvy s\u00faborov\u00e9ho syst\u00e9mu, ktor\u00fa tu nahr\u00e1dzame \u00faplne norm\u00e1lnym s\u00faborov\u00fdm syst\u00e9mom ext4.<\/i> <\/p>\n<p>Dataset ZFS je pribli\u017ene rovnak\u00fd ako \u0161tandardn\u00fd pripojen\u00fd s\u00faborov\u00fd syst\u00e9m. Rovnako ako be\u017en\u00fd s\u00faborov\u00fd syst\u00e9m, na prv\u00fd poh\u013ead sa zd\u00e1, \u017ee je to \"len \u010fal\u0161ia prie\u010dinok\". Ale, ako v be\u017en\u00fdch pripojen\u00fdch s\u00faborov\u00fdch syst\u00e9moch, ka\u017ed\u00fd dataset ZFS m\u00e1 svoj vlastn\u00fd s\u00fabor z\u00e1kladn\u00fdch vlastnost\u00ed.<\/p>\n<p>Predov\u0161etk\u00fdm m\u00f4\u017ee ma\u0165 dataset stanoven\u00fa kv\u00f3tu. Ak nastav\u00edte <code>zfs set quota=100G poolname\/datasetname<\/code>, nebudete m\u00f4c\u0165 zapisova\u0165 do pripojenej prie\u010dinka <code>\/poolname\/datasetname<\/code> viac ako 100 GiB.<\/p>\n<p>V\u0161imli ste si pr\u00edtomnos\u0165 \u2013 aj nepr\u00edtomnos\u0165 \u2013 lom\u00edtok na za\u010diatku ka\u017ed\u00e9ho riadku? Ka\u017ed\u00fd dataset m\u00e1 svoje miesto ako v hierarchii ZFS, tak aj v hierarchii syst\u00e9mov\u00e9ho pripojenia. V hierarchii ZFS nie je ved\u00face lom\u00edtko \u2013 za\u010d\u00ednate s n\u00e1zvom poolu a potom smerujete od jedn\u00e9ho datasetu k druh\u00e9mu. Napr\u00edklad, <code>pool\/parent\/child<\/code> pre dataset s n\u00e1zvom <code>child<\/code> pod rodi\u010dovsk\u00fdm datasetom <code>parent<\/code> v puli s kreat\u00edvnym n\u00e1zvom <code>pool<\/code>.<\/p>\n<p>Predvolene, bod pripojenia datasetu bude ekvivalentn\u00fd jeho n\u00e1zvu v hierarchii ZFS, so zlomen\u00fdm lom\u00edtkom na za\u010diatku \u2013 pool s n\u00e1zvom <code>pool<\/code> bude pripojen\u00fd ako <code>\/pool<\/code>, dataset <code>parent<\/code> sa pripoj\u00ed do <code>\/pool\/parent<\/code>, a dc\u00e9rsky dataset <code>child<\/code> sa pripoj\u00ed do <code>\/pool\/parent\/child<\/code>. M\u00f4\u017eete v\u0161ak zmeni\u0165 syst\u00e9mov\u00fd bod pripojenia datasetu.<\/p>\n<p>Ak uvedieme <code>zfs set mountpoint=\/lol pool\/parent\/child<\/code>, dataset <code>pool\/parent\/child<\/code> sa pripoj\u00ed do syst\u00e9mu ako <code>\/lol<\/code>.<\/p>\n<p>Okrem datasetov by sme mali spomen\u00fa\u0165 aj objemy (zvols). Objem je pribli\u017ene rovnak\u00fd ako dataset, s v\u00fdnimkou toho, \u017ee v \u0148om prakticky nie je s\u00faborov\u00fd syst\u00e9m - je to len blokov\u00e9 zariadenie. M\u00f4\u017eete napr\u00edklad vytvori\u0165 <code>zvol<\/code> s n\u00e1zvom <code>mypool\/myzvol<\/code>, potom ho naform\u00e1tova\u0165 so s\u00faborov\u00fdm syst\u00e9mom ext4 a n\u00e1sledne pripoji\u0165 tento s\u00faborov\u00fd syst\u00e9m - teraz m\u00e1te s\u00faborov\u00fd syst\u00e9m ext4, ale s podporou v\u0161etk\u00fdch funkci\u00ed zabezpe\u010denia ZFS! M\u00f4\u017ee to vyzera\u0165 hl\u00fapo na jednom po\u010d\u00edta\u010di, ale m\u00e1 to omnoho v\u00e4\u010d\u0161\u00ed zmysel ako backend pri exporte zariadenia iSCSI.<\/p>\n<h3>Bloky<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/ce96416cd2fa08ff615f13ccec72e838.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>S\u00fabor je reprezentovan\u00fd jedn\u00fdm alebo viacer\u00fdmi blokmi. Ka\u017ed\u00fd blok je ulo\u017een\u00fd na jednom virtu\u00e1lnom zariaden\u00ed. Ve\u013ekos\u0165 bloku je zvy\u010dajne rovn\u00e1 parametru <b>recordsize<\/b>, ale m\u00f4\u017ee by\u0165 zn\u00ed\u017een\u00e1 na <b>2^ashift<\/b>, ak obsahuje metadata alebo mal\u00fd s\u00fabor.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/f31c25e34af12a9a96b60a46c2924053.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Naozaj, <b>naozaj<\/b> ne\u017eartujeme o obrovskom po\u0161koden\u00ed v\u00fdkonu, ak nastav\u00edte pr\u00edli\u0161 mal\u00fd ashift.<\/i><\/p>\n<p>V ZFS pool s\u00fa v\u0161etky \u00fadaje, vr\u00e1tane metad\u00e1t, ulo\u017een\u00e9 v blokoch. Maxim\u00e1lna ve\u013ekos\u0165 bloku pre ka\u017ed\u00fd dataset je ur\u010den\u00e1 v vlastnosti <code>recordsize<\/code> (ve\u013ekos\u0165 z\u00e1pisu). Ve\u013ekos\u0165 z\u00e1pisu sa m\u00f4\u017ee meni\u0165, ale to nezmen\u00ed ve\u013ekos\u0165 ani umiestnenie \u017eiadnych blokov, ktor\u00e9 u\u017e boli zap\u00edsan\u00e9 do datasetu \u2013 plat\u00ed to len pre nov\u00e9 bloky pri ich z\u00e1pise.<\/p>\n<p>Ak nie je ur\u010den\u00e9 inak, aktu\u00e1lna predvolen\u00e1 ve\u013ekos\u0165 z\u00e1pisu je 128 KiB. Ide o ak\u00fdsi zlo\u017eit\u00fd kompromis, pri ktorom v\u00fdkonnos\u0165 nebude ide\u00e1lna, ale ani hrozn\u00e1 vo v\u00e4\u010d\u0161ine pr\u00edpadov. <code>Recordsize<\/code> m\u00f4\u017ee by\u0165 nastaven\u00e1 na ak\u00fako\u013evek hodnotu od 4K do 1M (s \u010fal\u0161\u00edmi nastaveniami <code>recordsize<\/code> m\u00f4\u017ee by\u0165 nastaven\u00e1 e\u0161te vy\u0161\u0161ie, ale to zriedka b\u00fdva dobr\u00fd n\u00e1pad).<\/p>\n<p>Ka\u017ed\u00fd blok odkazuje na \u00fadaje len jedn\u00e9ho s\u00faboru \u2013 nem\u00f4\u017eete natla\u010di\u0165 dva r\u00f4zne s\u00fabory do jedn\u00e9ho bloku. Ka\u017ed\u00fd s\u00fabor sa sklad\u00e1 z jedn\u00e9ho alebo viacer\u00fdch blokov, v z\u00e1vislosti od ve\u013ekosti. Ak je ve\u013ekos\u0165 s\u00faboru men\u0161ia ako ve\u013ekos\u0165 z\u00e1pisu, ulo\u017e\u00ed sa v bloku men\u0161ej ve\u013ekosti \u2013 napr\u00edklad blok so s\u00faborom 2 KiB zaberie len jeden sektor 4 KiB na disku.<\/p>\n<p>Ak je s\u00fabor dostato\u010dne ve\u013ek\u00fd a vy\u017eaduje nieko\u013eko blokov, v\u0161etky z\u00e1znamy s t\u00fdmto s\u00faborom bud\u00fa ma\u0165 ve\u013ekos\u0165 <code>recordsize<\/code>\u00a0\u2013 vr\u00e1tane posledn\u00e9ho z\u00e1znamu, jeho\u017e hlavn\u00e1 \u010das\u0165 sa m\u00f4\u017ee uk\u00e1za\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/whatis.techtarget.com\/definition\/slack-space-file-slack-space\">ako nevyu\u017eit\u00fd priestor<\/a><\/noindex>.<\/p>\n<p>Voly zvol nemaj\u00fa vlastnos\u0165 <code>recordsize<\/code>\u00a0\u2013 namiesto toho maj\u00fa ekvivalentn\u00fa vlastnos\u0165 <code>volblocksize<\/code>.<\/p>\n<h3>Sekundy<\/h3>\n<p>\nPosledn\u00fd, najz\u00e1kladnej\u0161\u00ed stavebn\u00fd blok \u2013 sektor. Toto je najmen\u0161ia fyzick\u00e1 jednotka, ktor\u00e1 m\u00f4\u017ee by\u0165 zap\u00edsan\u00e1 alebo \u010d\u00edtan\u00e1 z fyzick\u00e9ho zariadenia. Po cel\u00e9 desa\u0165ro\u010dia sa na v\u00e4\u010d\u0161ine diskov pou\u017e\u00edvali sektory po 512 bajtoch. V poslednom \u010dase je v\u00e4\u010d\u0161ina diskov nastaven\u00e1 na sektory 4 KiB a v niektor\u00fdch \u2013 najm\u00e4 SSD \u2013 sektory 8 KiB alebo dokonca viac.<\/p>\n<p>V syst\u00e9me ZFS existuje vlastnos\u0165, ktor\u00e1 umo\u017e\u0148uje ru\u010dne nastavi\u0165 ve\u013ekos\u0165 sektora. T\u00e1to vlastnos\u0165 <code>ashift<\/code>. Celkom zlo\u017eit\u00e9, \u017ee ashift je mocnina dvoch. Napr\u00edklad, <code>ashift=9<\/code> znamen\u00e1 ve\u013ekos\u0165 sektora 2^9, alebo 512 bajtov.<\/p>\n<p>ZFS \u017eiada od opera\u010dn\u00e9ho syst\u00e9mu podrobn\u00e9 inform\u00e1cie o ka\u017ed\u00e9 blokov\u00e9 zariadenie, ke\u010f je pridan\u00e9 do nov\u00e9ho vdev, a teoreticky automaticky nastavuje ashift spr\u00e1vne na z\u00e1klade t\u00fdchto inform\u00e1ci\u00ed. Bohu\u017eia\u013e, mnoh\u00e9 disky klam\u00fa o svojej ve\u013ekosti sektora, aby zachovali kompatibilitu s Windows XP (ktor\u00e1 bola neschopn\u00e1 pochopi\u0165 disky s in\u00fdmi ve\u013ekos\u0165ami sektorov).<\/p>\n<p>To znamen\u00e1, \u017ee spr\u00e1vca ZFS by mal d\u00f4kladne pozna\u0165 skuto\u010dn\u00fa ve\u013ekos\u0165 sektora svojich zariaden\u00ed a manu\u00e1lne nastavi\u0165 <code>ashift<\/code>. Ak je nastaven\u00fd pr\u00edli\u0161 mal\u00fd ashift, astronomicky sa zvy\u0161uje po\u010det oper\u00e1ci\u00ed \u010d\u00edtania\/z\u00e1pisu. Tak\u017ee z\u00e1pis 512-bytov\u00fdch \u201e sektorov\u201c do skuto\u010dn\u00e9ho sektora 4 KiB znamen\u00e1 potrebu zap\u00edsa\u0165 prv\u00fd \u201e sektor\u201c, potom pre\u010d\u00edta\u0165 sektor 4 KiB, zmeni\u0165 ho druh\u00fdm 512-bytov\u00fdm \u201e sektorom\u201c, zap\u00edsa\u0165 ho sp\u00e4\u0165 do nov\u00e9ho sektora 4 KiB a tak \u010falej pre ka\u017ed\u00fd z\u00e1pis.<\/p>\n<p>V re\u00e1lnom svete tak\u00fdto trest zasahuje do pevn\u00fdch diskov Samsung EVO, pre ktor\u00e9 by mal plati\u0165 <code>ashift=13<\/code>, ale tieto SSD klam\u00fa o svojej ve\u013ekosti sektora, a preto je predvolene nastaven\u00fd <code>ashift=9<\/code>. Ak sk\u00fasen\u00fd syst\u00e9mov\u00fd administr\u00e1tor tento parameter nezmen\u00ed, tak tento SSD pracuje <i>pomal\u0161ie<\/i> ako be\u017en\u00fd magnetick\u00fd HDD.<\/p>\n<p>Na porovnanie, za pr\u00edli\u0161 ve\u013ek\u00fa ve\u013ekos\u0165 <code>ashift<\/code> neexistuje prakticky \u017eiadny trest. Skuto\u010dn\u00e9 zn\u00ed\u017eenie v\u00fdkonu neexistuje a zv\u00fd\u0161enie nevyu\u017eit\u00e9ho priestoru je nekone\u010dne mal\u00e9 (alebo nulov\u00e9 pri zapnutom kompresii). Preto d\u00f4razne odpor\u00fa\u010dame aj pre tie disky, ktor\u00e9 skuto\u010dne pou\u017e\u00edvaj\u00fa 512-bytov\u00e9 sektory, nastavi\u0165 <code>ashift=12<\/code> alebo aj <code>ashift=13<\/code>, aby ste sa mohli s d\u00f4verou pozera\u0165 do bud\u00facnosti.<\/p>\n<p>Vlastnos\u0165 <code>ashift<\/code> sa nastavuje pre ka\u017ed\u00e9 virtu\u00e1lne zariadenie vdev, a <i>nie pre pool<\/i>, ako mnoh\u00ed mylne predpokladaj\u00fa \u2013 a nemen\u00ed sa po nastaven\u00ed. Ak ste n\u00e1hodou naru\u0161ili <code>ashift<\/code> pri prid\u00e1van\u00ed nov\u00e9ho vdev do poolu, tak ste nen\u00e1vratne zne\u010distili tento pool zariaden\u00edm s n\u00edzkym v\u00fdkonom a spravidla niet inej cesty, len zni\u010di\u0165 pool a za\u010da\u0165 v\u0161etko odznova. Ani odstr\u00e1nenie vdev nezachr\u00e1ni pred zmenen\u00fdm nastaven\u00edm <code>ashift<\/code>!<\/p>\n<h3>Mechanizmus kop\u00edrovania pri z\u00e1pise<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/eb222dbcc3de428ff2b1c2c72b145db0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ak be\u017en\u00fd s\u00faborov\u00fd syst\u00e9m mus\u00ed prep\u00edsa\u0165 d\u00e1ta - men\u00ed ka\u017ed\u00fd blok tam, kde sa nach\u00e1dza.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/ba2474808b32667902966e4c9e69081a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>S\u00faborov\u00fd syst\u00e9m s kop\u00edrovan\u00edm pri z\u00e1pise zapisuje nov\u00fa verziu bloku a potom odomkne star\u00fa verziu.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/3b00dad44eb588ed793d2d5df7852892.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>V abstraktnom po\u0148at\u00ed, ak ignorujeme re\u00e1lne fyzick\u00e9 umiestnenie blokov, sa na\u0161a \u201ekom\u00e9ta d\u00e1t\u201c zjednodu\u0161uje na \u201e\u010d\u00edta\u010d d\u00e1t\u201c, ktor\u00fd sa pohybuje z\u013eava doprava po mape dostupn\u00e9ho priestoru.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/8c2c38dbc8a5e633c466d5c7f230951f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Teraz m\u00e1me dobr\u00fa predstavu o tom, ako funguj\u00fa sn\u00edmky kop\u00edrovania pri z\u00e1pise \u2014 ka\u017ed\u00fd blok m\u00f4\u017ee patri\u0165 viacer\u00fdm sn\u00edmkam a zachov\u00e1 sa, pokia\u013e nebud\u00fa zni\u010den\u00e9 v\u0161etky s\u00favisiace sn\u00edmky.<\/i><\/p>\n<p>Mechanizmus kop\u00edrovania pri z\u00e1pise (Copy on Write, CoW) je z\u00e1kladnou z\u00e1klad\u0148ou toho, \u010do rob\u00ed ZFS tak \u00fa\u017easn\u00fdm syst\u00e9mom. Hlavn\u00e1 my\u0161lienka je jednoduch\u00e1 \u2014 ak po\u017eiadate tradi\u010dn\u00fd s\u00faborov\u00fd syst\u00e9m o zmenu s\u00faboru, urob\u00ed presne to, \u010do ste po\u017eiadali. Ak po\u017eiadate s\u00faborov\u00fd syst\u00e9m s kop\u00edrovan\u00edm pri z\u00e1pise o to ist\u00e9, povie v\u00e1m \u201edobre\u201c \u2014 ale zav\u00e1dza v\u00e1s.<\/p>\n<p>Namiesto toho s\u00faborov\u00fd syst\u00e9m s kop\u00edrovan\u00edm pri z\u00e1pise zapisuje nov\u00fa verziu zmenen\u00e9ho bloku a potom aktualizuje metad\u00e1ta s\u00faboru, aby preru\u0161en\u00edm v\u00e4zby na star\u00fd blok spojil nov\u00fd blok, ktor\u00fd ste pr\u00e1ve zap\u00edsali.<\/p>\n<p>Odpojenie star\u00e9ho bloku a spojenie nov\u00e9ho sa vykon\u00e1va v jednej oper\u00e1cii, tak\u017ee ju nemo\u017eno preru\u0161i\u0165 \u2014 ak vypnete nap\u00e1janie po tom, \u010do sa to stane, m\u00e1te nov\u00fa verziu s\u00faboru, a ak vypnete nap\u00e1janie sk\u00f4r, tak m\u00e1te star\u00fa verziu. V ka\u017edom pr\u00edpade v s\u00faborovom syst\u00e9me ned\u00f4jde ku konfliktom.<\/p>\n<p>Kop\u00edrovanie pri z\u00e1pise v ZFS sa deje nielen na \u00farovni s\u00faborov\u00e9ho syst\u00e9mu, ale aj na \u00farovni spr\u00e1vy diskov. To znamen\u00e1, \u017ee ZFS nie je vystaven\u00fd medzere pri z\u00e1pise (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.raid-recovery-guide.com\/raid5-write-hole.aspx\">diera v RAID<\/a><\/noindex>) \u2014 fenom\u00e9nu, kdy p\u00e1ska bola len \u010diasto\u010dne zap\u00edsan\u00e1 pred zlyhan\u00edm syst\u00e9mu, s po\u0161koden\u00edm po\u013ea po re\u0161tarte. Tu sa p\u00e1ska zapisuje at\u00f3movo, vdev je v\u017edy konzistentn\u00fd, a <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bob%27s_your_uncle\">Bob je tvoj str\u00fdko.<\/a><\/noindex>.<\/p>\n<h3>ZIL: \u017eurn\u00e1l \u00famyslov ZFS.<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/8d08b7bce60a1e3698fd0ec02494e6fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Syst\u00e9m ZFS spracov\u00e1va synchronn\u00e9 z\u00e1pisy osobitn\u00fdm sp\u00f4sobom \u2014 do\u010dasne, ale okam\u017eite ich uklad\u00e1 do ZIL, predt\u00fdm ne\u017e ich nesk\u00f4r zap\u00ed\u0161e trvalo spolu s asynchr\u00f3nnymi z\u00e1pisami.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/2119ef409a7d8c9599ee63292452d80d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Zvy\u010dajne sa \u00fadaje zap\u00edsan\u00e9 do ZIL u\u017e nikdy ne\u010d\u00edtaj\u00fa. Ale to je mo\u017en\u00e9 po zlyhan\u00ed syst\u00e9mu.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/88a62163b0fb9f14a41102821dfabb5f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>SLOG, alebo sekund\u00e1rne LOG zariadenie, je jednoducho \u0161peci\u00e1lny \u2013 a, ak je to mo\u017en\u00e9, ve\u013emi r\u00fdchly \u2013 vdev, kde m\u00f4\u017ee ZIL by\u0165 ulo\u017een\u00fd oddelene od hlavn\u00e9ho \u00falo\u017eiska.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/819f7c21714adafe226028e95990f1df.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Po zlyhan\u00ed sa v\u0161etky nepresn\u00e9 \u00fadaje v ZIL obnovuj\u00fa \u2013 v tomto pr\u00edpade je ZIL na SLOG, tak\u017ee sa obnovuj\u00fa pr\u00e1ve odtia\u013e.<\/i><\/p>\n<p>Existuj\u00fa dve hlavn\u00e9 kateg\u00f3rie zapisovac\u00edch oper\u00e1ci\u00ed \u2013 synchronn\u00e9 (sync) a asynchronn\u00e9 (async). Pre v\u00e4\u010d\u0161inu pracovn\u00fdch z\u00e1\u0165a\u017e\u00ed je preva\u017en\u00e1 v\u00e4\u010d\u0161ina zapisovac\u00edch oper\u00e1ci\u00ed asynchronn\u00fdch \u2013 s\u00faborov\u00fd syst\u00e9m umo\u017e\u0148uje ich agreg\u00e1ciu a vyd\u00e1vanie v d\u00e1vkach, \u010d\u00edm sa zni\u017euje fragment\u00e1cia a zna\u010dne zvy\u0161uje priepustnos\u0165.<\/p>\n<p>Synchronn\u00e9 z\u00e1pisy s\u00fa \u00faplne in\u00e1 vec. Ke\u010f aplik\u00e1cia po\u017eaduje synchronn\u00fd z\u00e1pis, hovor\u00ed s\u00faborov\u00e9mu syst\u00e9mu: \u201eMus\u00ed\u0161 to zafixova\u0165 v nevolatile pam\u00e4ti pr\u00e1ve teraz. <i>pr\u00e1ve teraz.<\/i>, a dovtedy nem\u00f4\u017eem urobi\u0165 ni\u010d in\u00e9.\u201c Preto musia by\u0165 synchronn\u00e9 z\u00e1pisy okam\u017eite zafixovan\u00e9 na disku \u2013 a ak to zvy\u0161uje fragment\u00e1ciu alebo zni\u017euje priepustnos\u0165, tak to bude.<\/p>\n<p>ZFS spracov\u00e1va synchronn\u00e9 z\u00e1pisy inak ako be\u017en\u00e9 s\u00faborov\u00e9 syst\u00e9my \u2013 namiesto okam\u017eit\u00e9ho z\u00e1znamu do be\u017en\u00e9ho \u00falo\u017eiska ZFS ich fixuje v \u0161peci\u00e1lnej oblasti ukladania naz\u00fdvanej ZFS Intent Log, alebo ZIL. Trik je v tom, \u017ee tieto z\u00e1pisy <i>takisto<\/i> ost\u00e1vaj\u00fa v pam\u00e4ti, pri\u010dom s\u00fa agregovan\u00e9 spolu s be\u017en\u00fdmi asynchronn\u00fdmi z\u00e1pismi, aby mohli by\u0165 nesk\u00f4r zapsan\u00e9 do \u00falo\u017eiska ako \u00faplne norm\u00e1lne TXG (skupiny transakci\u00ed, Transaction Groups).<\/p>\n<p>V norm\u00e1lnom re\u017eime ZIL zapisuje a nikdy sa potom ne\u010d\u00edta. Ke\u010f sa po nieko\u013ek\u00fdch momentoch z\u00e1pisy z ZIL fixuj\u00fa do hlavn\u00e9ho \u00falo\u017eiska v be\u017en\u00fdch TXG z opera\u010dnej pam\u00e4te, s\u00fa oddelen\u00e9 od ZIL. Jedin\u00fd \u010das, kedy sa nie\u010do \u010d\u00edta z ZIL, je pri importe poolu.<\/p>\n<p>Ak d\u00f4jde k zlyhaniu ZFS \u2013 zlyhaniu opera\u010dn\u00e9ho syst\u00e9mu alebo preru\u0161enie nap\u00e1jania \u2013 ke\u010f s\u00fa v ZIL \u00fadaje, tieto \u00fadaje bud\u00fa pre\u010d\u00edtan\u00e9 pri nasleduj\u00facom importe poolu (napr\u00edklad pri re\u0161tartovan\u00ed havarijn\u00e9ho syst\u00e9mu). V\u0161etko, \u010do je v ZIL, bude pre\u010d\u00edtan\u00e9, zl\u00fa\u010den\u00e9 do TXG skup\u00edn, zafixovan\u00e9 do hlavn\u00e9ho \u00falo\u017eiska a potom oddelen\u00e9 od ZIL v procese importu.<\/p>\n<p>Jednou z pomocn\u00fdch tried vdev sa naz\u00fdva LOG alebo SLOG, sekund\u00e1rne zariadenie LOG. Jeho \u00falohou je poskytn\u00fa\u0165 pulu samostatn\u00e9 a, ide\u00e1lne, ove\u013ea r\u00fdchlej\u0161ie, s ve\u013emi vysokou odolnos\u0165ou proti z\u00e1pisu, zariadenie vdev na ukladanie ZIL, namiesto uchov\u00e1vania ZIL na hlavnom \u00falo\u017eisku vdev. Samotn\u00fd ZIL sa spr\u00e1va rovnako nez\u00e1visle od miesta ulo\u017eenia, ale ak m\u00e1 vdev s LOG ve\u013emi vysok\u00fd v\u00fdkon z\u00e1pisu, synchronizovan\u00e9 z\u00e1pisy sa uskuto\u010dnia r\u00fdchlej\u0161ie.<\/p>\n<p>Pridanie vdev s LOG do pulu nijako <b>nem\u00f4\u017ee<\/b> zlep\u0161i\u0165 v\u00fdkon asynchr\u00f3nneho z\u00e1pisu - aj ke\u010f n\u00fatene vykon\u00e1vate v\u0161etky z\u00e1pisy do ZIL pomocou <code>zfs set sync=always<\/code>, aj tak bud\u00fa viazan\u00e9 na hlavn\u00e9 \u00falo\u017eisko v TXG rovnak\u00fdm sp\u00f4sobom a rovnakou r\u00fdchlos\u0165ou ako bez denn\u00edka. Jedin\u00fdm priamym zlep\u0161en\u00edm v\u00fdkonu je latencia synchronizovan\u00e9ho z\u00e1pisu (ke\u010f\u017ee vy\u0161\u0161ia r\u00fdchlos\u0165 denn\u00edka zr\u00fdch\u013euje vykon\u00e1vanie oper\u00e1ci\u00ed. <code>sync<\/code>).<\/p>\n<p>Av\u0161ak v prostred\u00ed, ktor\u00e9 u\u017e vy\u017eaduje ve\u013ea synchronizovan\u00fdch z\u00e1pisov, m\u00f4\u017ee vdev LOG nepriamo ur\u00fdchli\u0165 asynchr\u00f3nny z\u00e1pis a nekacovan\u00e9 \u010d\u00edtanie. Presunutie z\u00e1pisov ZIL do oddelen\u00e9ho vdev LOG znamen\u00e1 men\u0161iu konkurenciu za IOPS v prim\u00e1rnom \u00falo\u017eisku, \u010do do istej miery zlep\u0161uje v\u00fdkon v\u0161etk\u00fdch oper\u00e1ci\u00ed \u010d\u00edtania a z\u00e1pisu.<\/p>\n<h3>Sn\u00edmky<\/h3>\n<p>\nMechanizmus copy-on-write je tie\u017e nevyhnutn\u00fdm z\u00e1kladom pre atom\u00e1rne okam\u017eit\u00e9 sn\u00edmky ZFS a inkrement\u00e1lnu asynchr\u00f3nnu replik\u00e1ciu. V akt\u00edvnom s\u00faborovom syst\u00e9me existuje strom ukazovate\u013eov, ktor\u00fd ozna\u010duje v\u0161etky z\u00e1pisy s aktu\u00e1lnymi \u00fadajmi - ke\u010f vytv\u00e1rate sn\u00edmku, jednoducho vytv\u00e1rate k\u00f3piu tohto stromu ukazovate\u013eov.<\/p>\n<p>Ke\u010f sa v akt\u00edvnom s\u00faborovom syst\u00e9me prep\u00ed\u0161e z\u00e1pis, ZFS najprv zap\u00ed\u0161e nov\u00fa verziu bloku do nepou\u017eit\u00e9ho priestoru. Potom odpoj\u00ed star\u00fa verziu bloku od aktu\u00e1lneho s\u00faborov\u00e9ho syst\u00e9mu. Ale ak sa na nejak\u00fa sn\u00edmku odkazuje na star\u00fd blok, ten zost\u00e1va nezmenen\u00fd. Star\u00fd blok sa v skuto\u010dnosti nebude obnovova\u0165 ako vo\u013en\u00fd priestor, k\u00fdm nebud\u00fa zni\u010den\u00e9 v\u0161etky sn\u00edmky, ktor\u00e9 odkazuj\u00fa na tento blok!<\/p>\n<h3>Replik\u00e1cia<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/647fe6cc348861b653b004640244cf88.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Moja kni\u017enica Steam v roku 2015 zaberala 158 GiB a obsahovala 126 927 s\u00faborov. To je dos\u0165 bl\u00edzko k optim\u00e1lnej situ\u00e1cii pre rsync - replik\u00e1cia ZFS po sieti bola \"iba\" o 750% r\u00fdchlej\u0161ia.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/2849be8d2dc5c9f30f23c3bbc20e9022.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>V tej istej sieti je replik\u00e1cia jedn\u00e9ho 40-gibibajtov\u00e9ho s\u00faboru obrazu virtu\u00e1lneho stroja Windows 7 \u00faplne in\u00fd pr\u00edbeh. Replik\u00e1cia ZFS prebieha 289-kr\u00e1t r\u00fdchlej\u0161ie ako rsync \u2013 alebo 'len' 161-kr\u00e1t r\u00fdchlej\u0161ie, ak ste dostato\u010dne zbehl\u00ed na to, aby ste volali rsync s mo\u017enos\u0165ou &#8212;inplace.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon\" src=\"\/wp-content\/uploads\/2020\/06\/9a57e4faa0eaf0f687ae24b965a1bf81.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ke\u010f sa obraz virtu\u00e1lneho stroja \u0161k\u00e1luje, probl\u00e9my rsync sa \u0161k\u00e1luj\u00fa spolu s n\u00edm. Ve\u013ekos\u0165 1,9 TiB nie je pre modern\u00fd obraz virtu\u00e1lneho stroja a\u017e tak\u00e1 ve\u013ek\u00e1 \u2013 ale je dostato\u010dne ve\u013ek\u00e1 na to, aby replik\u00e1cia ZFS bola 1148-kr\u00e1t r\u00fdchlej\u0161ia ako rsync, aj s argumentom rsync &#8212;inplace.<\/i><\/p>\n<p>Hne\u010f, ako pochop\u00edte, ako funguj\u00fa sn\u00edmky, nebude \u0165a\u017ek\u00e9 pochopi\u0165 podstatu replik\u00e1cie. Preto\u017ee sn\u00edmka je len strom ukazovate\u013eov na z\u00e1znamy, vypl\u00fdva z toho, \u017ee ak rob\u00edme <code>zfs send<\/code> sn\u00edmku, posielame tento strom aj v\u0161etky s\u00favisiace z\u00e1znamy. Ke\u010f tento <code>zfs send<\/code> v <code>zfs receive<\/code> posielame na cie\u013eov\u00fd objekt, zapisuje ako skuto\u010dn\u00fd obsah bloku, tak aj strom ukazovate\u013eov odkazuj\u00facich na bloky do cie\u013eov\u00e9ho d\u00e1tov\u00e9ho s\u00faboru.<\/p>\n<p>V\u0161etko sa st\u00e1va e\u0161te zauj\u00edmavej\u0161\u00edm na druhom <code>zfs send<\/code>. Teraz m\u00e1me dva syst\u00e9my, z ktor\u00fdch ka\u017ed\u00fd obsahuje <code>poolname\/datasetname@1<\/code>, a odober\u00e1te nov\u00fa sn\u00edmku <code>poolname\/datasetname@2<\/code>. Preto vo zdrojovom poole m\u00e1te <code>datasetname@1<\/code> a <code>datasetname@2<\/code>, zatia\u013e \u010do v cie\u013eovom poole je zatia\u013e iba prv\u00e1 sn\u00edmka. <code>datasetname@1<\/code>.<\/p>\n<p>Ke\u010f\u017ee medzi zdrojom a cie\u013eom m\u00e1me spolo\u010dn\u00fa sn\u00edmku, m\u00f4\u017eeme vykona\u0165 <code>datasetname@1<\/code>inkrement\u00e1lnu <i>nad \u0148ou. Ke\u010f hovor\u00edme syst\u00e9mu<\/i> <code>zfs send<\/code> zfs send -i poolname\/datasetname@1 poolname\/datasetname@2 <code>, porovn\u00e1va dva stromy ukazovate\u013eov. Ak\u00e9ko\u013evek ukazovatele, ktor\u00e9 existuj\u00fa iba v<\/code>, zjavne odkazuj\u00fa na nov\u00e9 bloky \u2013 preto budeme potrebova\u0165 obsah t\u00fdchto blokov. <code>@2<\/code>V vzdialenom syst\u00e9me je spracovanie inkrement\u00e1lneho<\/p>\n<p>send <code>rovnak\u00e9 jednoduch\u00e9. Najprv zap\u00ed\u0161eme v\u0161etky nov\u00e9 z\u00e1znamy zahrnut\u00e9 v pr\u00fade<\/code> , a potom prid\u00e1vame ukazovatele na tieto bloky. Voil\u00e0, m\u00e1me <code>rovnak\u00e9 jednoduch\u00e9. Najprv zap\u00ed\u0161eme v\u0161etky nov\u00e9 z\u00e1znamy zahrnut\u00e9 v pr\u00fade<\/code>v novom syst\u00e9me! <code>@2<\/code> Asynchr\u00f3nna inkrement\u00e1lna replik\u00e1cia ZFS je obrovsk\u00e9 zlep\u0161enie v porovnan\u00ed s skor\u0161\u00edmi met\u00f3dami, ktor\u00e9 nie s\u00fa zalo\u017een\u00e9 na sn\u00edmkach, ako je rsync. V oboch pr\u00edpadoch sa pren\u00e1\u0161aj\u00fa len zmenen\u00e9 \u00fadaje \u2013 ale rsync mus\u00ed najsk\u00f4r<\/p>\n<p>pre\u010d\u00edta\u0165 <i>pre\u010d\u00edta\u0165<\/i> z disku v\u0161etky \u00fadaje z oboch str\u00e1n, aby sa skontroloval s\u00fa\u010det a porovnal. Na rozdiel od toho, replik\u00e1cia ZFS ne\u010d\u00edta ni\u010d in\u00e9 ako stromy ukazovate\u013eov \u2013 a ak\u00e9ko\u013evek bloky, ktor\u00e9 nie s\u00fa zast\u00fapen\u00e9 vo v\u0161eobecnom sn\u00edmke.<\/p>\n<h3>Zabudovan\u00e1 kompresia<\/h3>\n<p>\nMechanizmus kop\u00edrovania pri z\u00e1pise tie\u017e zjednodu\u0161uje syst\u00e9m zabudovanej kompresie. V tradi\u010dnej s\u00faborovej syst\u00e9me je kompresia problematick\u00e1 \u2013 ako star\u00e1 verzia, tak aj nov\u00e1 verzia zmenen\u00fdch \u00fadajov sa nach\u00e1dzaj\u00fa v rovnakom priestore.<\/p>\n<p>Ak sa pozrieme na fragment \u00fadajov v strede s\u00faboru, ktor\u00fd za\u010d\u00edna svoj \u017eivot ako megabajt n\u00fal od 0x00000000 a tak \u010falej \u2013 ve\u013emi \u013eahko sa d\u00e1 stla\u010di\u0165 do jedn\u00e9ho sektora na disku. Ale \u010do sa stane, ak tento megabajt n\u00fal nahrad\u00edme megabajtom nescompressibiln\u00fdch \u00fadajov, ako JPEG alebo pseudon\u00e1hodn\u00fd \u0161um? Zrazu tento megabajt \u00fadajov bude potrebova\u0165 nie jeden, ale 256 sektorov po 4 KiB, a na tomto mieste na disku je rezervovan\u00fd iba jeden sektor.<\/p>\n<p>ZFS nem\u00e1 tento probl\u00e9m, preto\u017ee zmenen\u00e9 z\u00e1znamy s\u00fa v\u017edy zapisovan\u00e9 do nevyu\u017eit\u00e9ho priestoru \u2013 p\u00f4vodn\u00fd blok zaber\u00e1 iba jeden sektor 4 KiB, a nov\u00fd z\u00e1znam zaberie 256, ale to nie je probl\u00e9m \u2013 ned\u00e1vno zmenen\u00fd fragment zo \"stredu\" s\u00faboru by bol zap\u00edsan\u00fd do nevyu\u017eit\u00e9ho priestoru bez oh\u013eadu na to, \u010di sa jeho ve\u013ekos\u0165 zmenila alebo nie, tak\u017ee pre ZFS je to celkom be\u017en\u00e1 situ\u00e1cia.<\/p>\n<p>Zabudovan\u00e1 kompresia ZFS je predvolene vypnut\u00e1, a syst\u00e9m pon\u00faka pripojite\u013en\u00e9 algoritmy \u2013 medzi nimi LZ4, gzip (1-9), LZJB a ZLE.<\/p>\n<ul>\n<li><b>LZ4<\/b> \u2013 je pr\u00fadov\u00fd algoritmus, ktor\u00fd pon\u00faka mimoriadne r\u00fdchlu kompresiu a dekompresiu a v\u00fdhody v oblasti v\u00fdkonu pre v\u00e4\u010d\u0161inu pr\u00edpadov pou\u017eitia \u2013 aj na pomerne pomal\u00fdch CPU.\n<\/li>\n<li><b>GZIP<\/b> \u2013 v\u00e1\u017een\u00fd algoritmus, ktor\u00fd poznaj\u00fa a miluj\u00fa v\u0161etci pou\u017e\u00edvatelia syst\u00e9mov Unix. M\u00f4\u017ee by\u0165 realizovan\u00fd s \u00farov\u0148ami kompresie 1-9, pri\u010dom zvy\u0161ovanie stup\u0148a kompresie a vyu\u017eitia CPU sa zvy\u0161uje s pribl\u00ed\u017een\u00edm sa k \u00farovni 9. Algoritmus sa dobre hod\u00ed pre v\u0161etky textov\u00e9 (alebo in\u00e9 mimoriadne komprimovate\u013en\u00e9) mo\u017enosti pou\u017eitia, ale v opa\u010dnom pr\u00edpade \u010dasto sp\u00f4sobuje probl\u00e9my s CPU \u2013 pou\u017e\u00edvajte ho opatrne, najm\u00e4 na vy\u0161\u0161\u00edch \u00farovniach.\n<\/li>\n<li><b>LZJB<\/b> \u2013 p\u00f4vodn\u00fd algoritmus v ZFS. Je zastaran\u00fd a nemal by sa pou\u017e\u00edva\u0165, LZ4 ho vo v\u0161etk\u00fdch oh\u013eadoch prekon\u00e1va.\n<\/li>\n<li><b>ZLE<\/b> \u2014 k\u00f3dovanie nulov\u00e9ho levelu, Zero Level Encoding. Vo v\u0161eobecnosti sa nedot\u00fdka norm\u00e1lnych \u00fadajov, ale komprimuje ve\u013ek\u00e9 sekvencie n\u00fal. Je u\u017eito\u010dn\u00e9 pre \u00faplne nekomprimovate\u013en\u00e9 s\u00fabory d\u00e1t (napr\u00edklad JPEG, MP4 alebo in\u00e9 u\u017e komprimovan\u00e9 form\u00e1ty), preto\u017ee ignoruje nekomprimovate\u013en\u00e9 \u00fadaje, ale komprimuje nepou\u017eit\u00e9 miesto v kone\u010dn\u00fdch z\u00e1znamoch.<\/li>\n<\/ul>\n<p>\nOdpor\u00fa\u010dame kompresiu LZ4 prakticky pre v\u0161etky varianty pou\u017eitia; trest za v\u00fdkon pri stretnut\u00ed s nekomprimovate\u013en\u00fdmi \u00fadajmi je ve\u013emi mal\u00fd, a <i>pr\u00edrastok<\/i> v\u00fdkonu pre typick\u00e9 d\u00e1ta je zna\u010dn\u00fd. Kop\u00edrovanie obrazu virtu\u00e1lneho stroja pre nov\u00fa in\u0161tal\u00e1ciu opera\u010dn\u00e9ho syst\u00e9mu Windows (\u010derstvo nain\u0161talovan\u00fd OS, vo vn\u00fatri e\u0161te \u017eiadne \u00fadaje nie s\u00fa) s <code>compression=lz4<\/code> prebehlo o 27 % r\u00fdchlej\u0161ie ako s <code>compression=none<\/code>, v <noindex><a rel=\"nofollow\" href=\"https:\/\/jrs-s.net\/2015\/02\/24\/zfs-compression-yes-you-want-this\/\">tomto teste z roku 2015<\/a><\/noindex>.<\/p>\n<h1>ARC \u2013 adapt\u00edvny n\u00e1hrady cache<\/h1>\n<p>\nZFS je jedin\u00e9 zn\u00e1me modern\u00e9 s\u00faborov\u00fd syst\u00e9m, ktor\u00fd pou\u017e\u00edva svoj vlastn\u00fd mechanizmus cacheovania \u010d\u00edtania, a nespolieha sa na cache str\u00e1n opera\u010dn\u00e9ho syst\u00e9mu na ukladanie k\u00f3pi\u00ed ned\u00e1vno pre\u010d\u00edtan\u00fdch blokov v pam\u00e4ti.<\/p>\n<p>Aj ke\u010f vlastn\u00e1 cache nem\u00e1 svoje probl\u00e9my \u2013 ZFS nem\u00f4\u017ee reagova\u0165 na nov\u00e9 po\u017eiadavky na pridelenie pam\u00e4te tak r\u00fdchlo, ako jadro, a preto nov\u00fd volanie <code>malloc()<\/code> na pridelenie pam\u00e4te m\u00f4\u017ee zlyha\u0165, ak potrebuje opera\u010dn\u00fa pam\u00e4\u0165, ktor\u00e1 je v s\u00fa\u010dasnosti obsaden\u00e1 ARC. Ale existuj\u00fa presved\u010div\u00e9 d\u00f4vody na pou\u017eitie vlastnej cache, aspo\u0148 zatia\u013e.<\/p>\n<p>V\u0161etky zn\u00e1me modern\u00e9 OS, vr\u00e1tane MacOS, Windows, Linux a BSD, na realiz\u00e1ciu cache str\u00e1n pou\u017e\u00edvaj\u00fa algoritmus LRU (Least Recently Used). Je to primit\u00edvny algoritmus, ktor\u00fd pos\u00fava cacheovan\u00fd blok \u201enahor v porad\u00ed\u201c po ka\u017edom \u010d\u00edtan\u00ed a vytl\u00e1\u010da bloky \u201edole v porad\u00ed\u201c pod\u013ea potreby, aby pridali nov\u00e9 cache miss (bloky, ktor\u00e9 mali by\u0165 pre\u010d\u00edtan\u00e9 z disku, a nie z cache) vy\u0161\u0161ie.<\/p>\n<p>Zvy\u010dajne algoritmus funguje v poriadku, ale v syst\u00e9moch s ve\u013ek\u00fdmi pracovn\u00fdmi sadami d\u00e1t LRU \u013eahko vedie k thrashing \u2013 vytl\u00e1\u010danie \u010dasto potrebn\u00fdch blokov, aby uvo\u013enilo miesto pre bloky, ktor\u00e9 u\u017e nikdy nebud\u00fa pre\u010d\u00edtan\u00e9 z cache.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Adaptive_replacement_cache\">ARC<\/a><\/noindex>\u00a0\u2014 ove\u013ea menej naivn\u00fd algoritmus, ktor\u00fd sa d\u00e1 pova\u017eova\u0165 za \u201ev\u00e1\u017een\u00fd\u201c cache. Po ka\u017edom pre\u010d\u00edtan\u00ed cacheovanej bloky sa st\u00e1va trochu \u201e\u0165a\u017e\u0161\u00edm\u201c a \u0165a\u017e\u0161ie sa vyhadzuje \u2014 a dokonca aj po vyhoden\u00ed blok <i>je sledovan\u00fd<\/i> po ur\u010dit\u00fd \u010das. Blok, ktor\u00fd bol vyhoden\u00fd, ale potom mus\u00ed by\u0165 znovu pre\u010d\u00edtan\u00fd do cache, sa tie\u017e stane \u201e\u0165a\u017e\u0161\u00edm\u201c.<\/p>\n<p>Kone\u010dn\u00fd v\u00fdsledok tohto v\u0161etk\u00e9ho je cache s ove\u013ea vy\u0161\u0161\u00edm koeficientom z\u00e1sahov (hit ratio) \u2014 pomer medzi z\u00e1sahmi do cache (\u010d\u00edtanie vykon\u00e1van\u00e9 z cache) a zlyhaniami (\u010d\u00edtanie z disku). Toto je mimoriadne d\u00f4le\u017eit\u00e1 \u0161tatistika \u2014 nie len to, \u017ee samotn\u00e9 z\u00e1sahy do cache s\u00fa obsluhovan\u00e9 poriadne r\u00fdchlej\u0161ie, zlyhania cache m\u00f4\u017eu by\u0165 tie\u017e obsluhovan\u00e9 r\u00fdchlej\u0161ie, preto\u017ee \u010d\u00edm viac z\u00e1sahov do cache \u2014 t\u00fdm menej paraleln\u00fdch po\u017eiadaviek na disk a t\u00fdm men\u0161ia latencia pre tie zost\u00e1vaj\u00face zlyhania, ktor\u00e9 musia by\u0165 obsluhovan\u00e9 z disku.<\/p>\n<h1>Z\u00e1ver<\/h1>\n<p>\nPo presk\u00faman\u00ed z\u00e1kladnej s\u00e9mantiky ZFS \u2014 ako funguje kop\u00edrovanie pri z\u00e1pise a tie\u017e vz\u0165ahy medzi storage poolmi, virtu\u00e1lnymi zariadeniami, blokmi, sektormi a s\u00fabormi \u2014 sme pripraven\u00ed diskutova\u0165 o re\u00e1lnom v\u00fdkone s re\u00e1lnymi \u010d\u00edslami.<\/p>\n<p>V \u010fal\u0161ej \u010dasti sa pozrieme na skuto\u010dn\u00fd v\u00fdkon poolov so zrkadlov\u00fdmi vdev a RAIDz, porovn\u00e1me ich navz\u00e1jom a tie\u017e s tradi\u010dn\u00fdmi RAID topol\u00f3giami jadra Linuxu, ktor\u00e9 sme presk\u00famali <noindex><a rel=\"nofollow\" href=\"https:\/\/arstechnica.com\/information-technology\/2020\/04\/understanding-raid-how-performance-scales-from-one-disk-to-eight\/\">predt\u00fdm<\/a><\/noindex>.<\/p>\n<p>Najprv sme sa chceli zaobera\u0165 iba z\u00e1kladmi \u2014 samotn\u00fdmi topol\u00f3giami ZFS \u2014 ale potom <i>tak\u00e9ho<\/i> budeme pripraven\u00ed hovori\u0165 o pokro\u010dilej\u0161om nastaven\u00ed a laden\u00ed ZFS, vr\u00e1tane pou\u017e\u00edvania pomocn\u00fdch typov vdev, ako s\u00fa L2ARC, SLOG a Special Allocation.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/504692\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RAID. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0439 \u0432 ZFS. \u042d\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443: \u043e\u0442 Apple \u0434\u043e Ubuntu. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0441\u043d\u043e\u0432\u044b ZFS: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-01T17:42:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-01T17:42:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Z\u00e1klady ZFS: \u00falo\u017en\u00fd syst\u00e9m a v\u00fdkon | ProHoster","description":"T\u00fato jar sme u\u017e prediskutovali niektor\u00e9.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0441\u043d\u043e\u0432\u044b ZFS: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster","og:description":"\u042d\u0442\u043e\u0439 \u0432\u0435\u0441\u043d\u043e\u0439 \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/osnovy-zfs-sistema-hraneniya-i-proizvoditelnost","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-01T17:42:21+00:00","article:modified_time":"2020-06-01T17:42:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83582","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:14:37","updated":"2022-09-28 10:00:57","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/83582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=83582"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/83582\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/83583"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=83582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=83582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=83582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}