http://unixlinux.tmit.bme.hu/index.php/ZFS?feed=atom&action=history ZFS - Laptörténet 2024-03-29T09:51:37Z Az oldal laptörténete a wikiben MediaWiki 1.19.3-1 //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5957&oldid=prev KornAndras: /* ZFS Linux alatt */ 2022-es update 2022-02-24T16:24:18Z <p>‎<span dir="auto"><span class="autocomment">ZFS Linux alatt: </span> 2022-es update</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2022. február 24., 16:24-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">199. sor:</td> <td colspan="2" class="diff-lineno">199. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>== ZFS Linux alatt ==</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>== ZFS Linux alatt ==</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>* Linuxra párhuzamosan készült egy [http://zfs-fuse.net/ userspace] és egy [http://zfsonlinux.org/ kernelspace] megvalósítás.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>* Linuxra párhuzamosan készült egy<span class="diffchange diffchange-inline"> (2022-re teljesen felejthető)</span> [http://zfs-fuse.net/ userspace] és egy [http://zfsonlinux.org/ kernelspace] megvalósítás.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>** A kernelspace implementáció licencproblémák miatt sosem kerülhet bele a hivatalos kernelbe (az OpenSolarist, aminek a ZFS a része, a CDDL alatt teszik elérhetővé, ez pedig jogilag nem kompatibilis a GPL-lel). Az egyetlen megoldás az lenne, hogy valaki nulláról újraírja a ZFS-t (úgy, hogy az adatstruktúrák és algoritmusok ugyanazok, de a kód teljesen új).</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** A kernelspace implementáció licencproblémák miatt sosem kerülhet bele a hivatalos kernelbe (az OpenSolarist, aminek a ZFS a része, a CDDL alatt teszik elérhetővé, ez pedig<span class="diffchange diffchange-inline"> -- bár erről némileg megoszlanak a vélemények --</span> jogilag<span class="diffchange diffchange-inline"> a Sun eredeti szándéka szerint</span> nem kompatibilis a GPL-lel). Az egyetlen megoldás az lenne, hogy valaki nulláról újraírja a ZFS-t (úgy, hogy az adatstruktúrák és algoritmusok ugyanazok, de a kód teljesen új).</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>** A FUSE-os megoldásnak nincsenek ilyen gondjai, mivel a GPL-nek nem kell megfelelnie.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** A FUSE-os megoldásnak nincsenek ilyen gondjai, mivel a GPL-nek nem kell megfelelnie<span class="diffchange diffchange-inline"> (de természetesen a kernelbe amúgy sem tudna bekerülni)</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Jelen sorok írásakor (2012. őszén) a kernelspace-verzió használata az ajánlott; a zfs-fuse fejlesztése megtorpant, a fejlesztők már szintén a zfsonlinuxot (a kernelbeli megvalósítást) használják.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Jelen sorok írásakor (2012. őszén) a kernelspace-verzió használata az ajánlott; a zfs-fuse fejlesztése megtorpant, a fejlesztők már szintén a zfsonlinuxot (a kernelbeli megvalósítást) használják.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>*** A zfs-fuse-t ugyanakkor egyszerűbb telepíteni, úgyhogy a zfs kipróbálására <span class="diffchange diffchange-inline">nagyon</span> <span class="diffchange diffchange-inline">is</span> alkalmas.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>*** A zfs-fuse-t ugyanakkor egyszerűbb telepíteni, úgyhogy a zfs kipróbálására <span class="diffchange diffchange-inline">azért</span> <span class="diffchange diffchange-inline">még</span> alkalmas<span class="diffchange diffchange-inline"> lehet</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Vigyázat! A zfs-fuse 2012. vége felé aktuális, 0.7.0-ás verziója bizonyos terhelések mellett instabil (nálam nem okozott adatvesztést, de rendelkezésreállási problémákat igen).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Vigyázat! A zfs-fuse 2012. vége felé aktuális, 0.7.0-ás verziója bizonyos terhelések mellett instabil (nálam nem okozott adatvesztést, de rendelkezésreállási problémákat igen).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** A zfs-fuse régebbi pool- és zfs-verziókat implementál, mint a zfsonlinux, így a zfsonlinuxszal létrehozott poolt nem használhatjuk vele (de fordítva igen).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** A zfs-fuse régebbi pool- és zfs-verziókat implementál, mint a zfsonlinux, így a zfsonlinuxszal létrehozott poolt nem használhatjuk vele (de fordítva igen).</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5956&oldid=prev KornAndras: /* Jellemzői, működése */ 2022-es update-ek 2022-02-24T16:18:57Z <p>‎<span dir="auto"><span class="autocomment">Jellemzői, működése: </span> 2022-es update-ek</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2022. február 24., 16:18-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">105. sor:</td> <td colspan="2" class="diff-lineno">105. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Az integritásellenőrzésnek köszönhetően akkor is kijavítja a hibákat, ha az olvasás látszólag sikerül (tehát amikor egy hagyományos RAID-megvalósítás nem nyúlna a paritáshoz).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Az integritásellenőrzésnek köszönhetően akkor is kijavítja a hibákat, ha az olvasás látszólag sikerül (tehát amikor egy hagyományos RAID-megvalósítás nem nyúlna a paritáshoz).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Resync ("resilvering") esetén csak azokat a blokkokat másolja, amikben tényleg van adat.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Resync ("resilvering") esetén csak azokat a blokkokat másolja, amikben tényleg van adat.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>* Érdemes "scrub"-okat (teljes integritásellenőrzést) ütemezni; ilyenkor a háttérben végigolvassa az adatokat és kijavítja az esetleges hibákat, ha van redundancia. Ha nincs, akkor megtudjuk, melyik fájlunk vált olvashatatlanná. A scrub <span class="diffchange diffchange-inline">--</span> <span class="diffchange diffchange-inline">legalábbis</span> <span class="diffchange diffchange-inline">Linuxon</span> <span class="diffchange diffchange-inline">--</span> <span class="diffchange diffchange-inline">elég</span> <span class="diffchange diffchange-inline">lassú</span> <span class="diffchange diffchange-inline">tud</span> <span class="diffchange diffchange-inline">lenni,</span> <span class="diffchange diffchange-inline">és</span> <span class="diffchange diffchange-inline">sajnos</span> <span class="diffchange diffchange-inline">nem</span> <span class="diffchange diffchange-inline">lehet részletekben</span> <span class="diffchange diffchange-inline">elvégezni</span>.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>* Érdemes "scrub"-okat (teljes integritásellenőrzést) ütemezni; ilyenkor a háttérben végigolvassa az adatokat és kijavítja az esetleges hibákat, ha van redundancia. Ha nincs, akkor megtudjuk, melyik fájlunk vált olvashatatlanná. A scrub <span class="diffchange diffchange-inline">értelemszerűen</span> <span class="diffchange diffchange-inline">elég</span> <span class="diffchange diffchange-inline">sokáig</span> <span class="diffchange diffchange-inline">tarthat,</span> <span class="diffchange diffchange-inline">ha</span> <span class="diffchange diffchange-inline">sok</span> <span class="diffchange diffchange-inline">az</span> <span class="diffchange diffchange-inline">adat</span> <span class="diffchange diffchange-inline">(de</span> <span class="diffchange diffchange-inline">lehet</span> <span class="diffchange diffchange-inline">szüneteltetni</span> <span class="diffchange diffchange-inline">és</span> <span class="diffchange diffchange-inline">folytatni)</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* A "fontos" metaadat-blokkokat több példányban tárolja, mint a kevésbé fontosakat.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* A "fontos" metaadat-blokkokat több példányban tárolja, mint a kevésbé fontosakat.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>** Egyébként egyes fs-ek szintjén is kérhetjük, hogy az adott fs-t két vagy több példányban tárolja; így akár egyetlen diszken is tudjuk a fontos adatainkat -- nyilván jókora sebességveszteség árán -- redundánsan tárolni. Ez a hibás szektorok ellen véd, a teljes diszk kiesése ellen <span class="diffchange diffchange-inline">nyilván</span> nem. Főként notebookon lehet hasznos.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** Egyébként egyes fs-ek szintjén is kérhetjük, hogy az adott fs-t két vagy több példányban tárolja; így akár egyetlen diszken is tudjuk a fontos adatainkat -- nyilván jókora sebességveszteség árán -- redundánsan tárolni. Ez a hibás szektorok ellen véd, a teljes diszk kiesése ellen <span class="diffchange diffchange-inline">természetesen</span> nem. Főként notebookon lehet hasznos.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Automatikusan csíkoz a rendelkezésre álló vdevek fölött.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Automatikusan csíkoz a rendelkezésre álló vdevek fölött.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ha új vdevet rakunk be, arra is elkezd csíkozni és a tranzakció-alapú írások miatt idővel, szép lassan, minden adat az összes diszkre szétterül.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ha új vdevet rakunk be, arra is elkezd csíkozni és a tranzakció-alapú írások miatt idővel, szép lassan, minden adat az összes diszkre szétterül.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>* <span class="diffchange diffchange-inline">(Mostanáig)</span> nagyon komolyan vette<span class="diffchange diffchange-inline">/veszi</span> a kompatibilitást/hordozhatóságot:</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>* <span class="diffchange diffchange-inline">A 2010-es évekig</span> nagyon komolyan vette a kompatibilitást/hordozhatóságot:</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden poolnak (és minden zfs-példánynak) van egy verziószáma.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden poolnak (és minden zfs-példánynak) van egy verziószáma.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden megvalósítás egy konkrét verziószámig bezárólag minden verziójú poolt/fs-t képes kezelni és helyben upgrade-elni a legújabb általa ismert verzióra.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden megvalósítás egy konkrét verziószámig bezárólag minden verziójú poolt/fs-t képes kezelni és helyben upgrade-elni a legújabb általa ismert verzióra.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Mivel azonban az Oracle nem látszik hivatalosan kiadni a legújabb fejlesztéseket (pl. a [https://www.illumos.org/boards/1/topics/256 titkosítást]) és általában sem ápol jó viszonyt a nyílt forrású közösséggel, a zfs fejlesztése több vonalon folyik párhuzamosan: az Oracle ott folytatta, ahol a Sun abbahagyta, a nyílt forráskód körül kiépült közösség pedig szintén, csak másképp. Valószínűnek látszik, hogy az Oracle termékekkel létrehozott zpoolokat a szabad termékek (még jó darabig) nem fogják támogatni és természetesen fordítva. Az utolsó hordozhatónak tekinthető pool-verzió talán a 28-as.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Mivel azonban az Oracle nem látszik hivatalosan kiadni a legújabb fejlesztéseket (pl. a [https://www.illumos.org/boards/1/topics/256 titkosítást]) és általában sem ápol jó viszonyt a nyílt forrású közösséggel, a zfs fejlesztése több vonalon folyik párhuzamosan: az Oracle ott folytatta, ahol a Sun abbahagyta, a nyílt forráskód körül kiépült közösség pedig szintén, csak másképp. Valószínűnek látszik, hogy az Oracle termékekkel létrehozott zpoolokat a szabad termékek (még jó darabig) nem fogják támogatni és természetesen fordítva. Az utolsó hordozhatónak tekinthető pool-verzió talán a 28-as.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>* <span class="diffchange diffchange-inline">Úgy</span> <span class="diffchange diffchange-inline">néz</span> <span class="diffchange diffchange-inline">ki,</span> <span class="diffchange diffchange-inline">hogy</span> <span class="diffchange diffchange-inline">nemsokára</span> <span class="diffchange diffchange-inline">lesz</span> <span class="diffchange diffchange-inline">[https://github.com/zfsonlinux/zfs/issues/494#issuecomment</span>-<span class="diffchange diffchange-inline">217004200</span> <span class="diffchange diffchange-inline">natív</span> titkosítás<span class="diffchange diffchange-inline">]</span> a <span class="diffchange diffchange-inline">ZoL-ban</span>.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div><span class="diffchange diffchange-inline">**</span>* <span class="diffchange diffchange-inline">Az</span> <span class="diffchange diffchange-inline">Oracle</span> <span class="diffchange diffchange-inline">titkosítása</span> <span class="diffchange diffchange-inline">helyett</span> <span class="diffchange diffchange-inline">egyébként</span> <span class="diffchange diffchange-inline">az</span> <span class="diffchange diffchange-inline">OpenZFS</span>-<span class="diffchange diffchange-inline">ben</span> <span class="diffchange diffchange-inline">lett másik, saját</span> titkosítás<span class="diffchange diffchange-inline">, tehát</span> a <span class="diffchange diffchange-inline">képesség megvan, csak nem kompatibilis egymással a két változat</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Deduplikáció ===</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Deduplikáció ===</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Többféle hash közül választhatunk, és azt is előírhatjuk, hogy hash-egyezés esetén az adatokat hasonlítsa is össze byte-ról byte-ra, nehogy egy esetleges -- amúgy rendkívül valószínűtlen -- hash-ütközés az adatok sérülését okozza.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Többféle hash közül választhatunk, és azt is előírhatjuk, hogy hash-egyezés esetén az adatokat hasonlítsa is össze byte-ról byte-ra, nehogy egy esetleges -- amúgy rendkívül valószínűtlen -- hash-ütközés az adatok sérülését okozza.</div></td> </tr> <tr> <td colspan="2" class="diff-empty">&#160;</td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** A hash-ütközés valószínűségéről l. a következő alfejezetet; a lényeg az, hogy ezt az ellenőrzést nem nagyon érdemes bekapcsolni.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Nem kötelező az összes adatot deduplikálni; szelektíven is bekapcsolhatjuk (egyes datasetekre külön-külön).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* Nem kötelező az összes adatot deduplikálni; szelektíven is bekapcsolhatjuk (egyes datasetekre külön-külön).</div></td> </tr> <tr> <td colspan="2" class="diff-empty">&#160;</td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** Egyébként pontosan így is érdemes csinálni: csak azokat az adatokat deduplikálni, ahol nagyon sokat nyerünk.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** De a deduplikációs táblázat az egész poolban közös, tehát a poolon belüli különböző datasetek között is megvalósul a deduplikáció.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** De a deduplikációs táblázat az egész poolban közös, tehát a poolon belüli különböző datasetek között is megvalósul a deduplikáció.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* A deduplikáció rendkívül memóriaigényes:</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* A deduplikáció rendkívül memóriaigényes:</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>** Kb. 3-400 byte memória (L2ARC) kell minden blokkhoz; a blokkméret változó<span class="diffchange diffchange-inline">,</span> <span class="diffchange diffchange-inline">de</span> legfeljebb <span class="diffchange diffchange-inline">128k</span>; ha kis fájljaink vannak, egy-egy fájl egy blokk (és persze majdnem minden nagy fájl vége egy<span class="diffchange diffchange-inline"> 128k-nál</span> kisebb blokk).</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** Kb. 3-400 byte memória (L2ARC) kell minden blokkhoz; a blokkméret változó <span class="diffchange diffchange-inline">(2022-ben</span> legfeljebb <span class="diffchange diffchange-inline">16MiB)</span>; ha kis fájljaink vannak, egy-egy fájl egy blokk (és persze majdnem minden nagy fájl vége egy kisebb blokk).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ha L2ARC-ban van a deduplikációs táblázat (DDT), akkor minden max. 128k-nyi L2ARC-hoz kb. 200 byte memória kell.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ha L2ARC-ban van a deduplikációs táblázat (DDT), akkor minden max. 128k-nyi L2ARC-hoz kb. 200 byte memória kell.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ökölszabályok: ne deduplikáljunk, ha</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Ökölszabályok: ne deduplikáljunk, ha</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">141. sor:</td> <td colspan="2" class="diff-lineno">143. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>==== Mennyire valószínűtlen a hash-ütközés? ====</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>==== Mennyire valószínűtlen a hash-ütközés? ====</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, <span class="diffchange diffchange-inline">mivel</span> legfeljebb 128k <span class="diffchange diffchange-inline">nagyságúak</span> <span class="diffchange diffchange-inline">a</span> <span class="diffchange diffchange-inline">blokkok</span>, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, <span class="diffchange diffchange-inline">még ha</span> legfeljebb 128k <span class="diffchange diffchange-inline">nagyságú blokkokat</span> <span class="diffchange diffchange-inline">nézünk</span> <span class="diffchange diffchange-inline">is</span>, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt (amúgy, deduplikáció nélkül, a fletcher-4 nevű checksumot használja). Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt (amúgy, deduplikáció nélkül, a fletcher-4 nevű checksumot használja). Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5955&oldid=prev KornAndras: /* Alapfogalmak, építőelemek */ pár 2022-es update 2022-02-24T16:02:41Z <p>‎<span dir="auto"><span class="autocomment">Alapfogalmak, építőelemek: </span> pár 2022-es update</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2022. február 24., 16:02-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">47. sor:</td> <td colspan="2" class="diff-lineno">47. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** '''zvol''': kb. az LVM LV megfelelője. Egy blokkeszköz, amin tetszőleges fs-t létrehozhatunk (vagy pl. odaadhatjuk egy virtuális gépnek, mint diszket).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** '''zvol''': kb. az LVM LV megfelelője. Egy blokkeszköz, amin tetszőleges fs-t létrehozhatunk (vagy pl. odaadhatjuk egy virtuális gépnek, mint diszket).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Snapshotolható, deduplikálható, röptömöríthető anélkül, hogy a benne levő fs-nek erről tudnia kéne.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Snapshotolható, deduplikálható, röptömöríthető anélkül, hogy a benne levő fs-nek erről tudnia kéne.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>*** Kiajánlható iSCSI-val.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>*** Kiajánlható iSCSI-val<span class="diffchange diffchange-inline">, ATA over Ethernettel stb</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Csak speciális esetben érdemes használni; többnyire jobb:</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Csak speciális esetben érdemes használni; többnyire jobb:</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** '''filesystem''': egy zfs-példány.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** '''filesystem''': egy zfs-példány.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">62. sor:</td> <td colspan="2" class="diff-lineno">62. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Használható a ZPL nélkül is (ez a zvol); pl.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Használható a ZPL nélkül is (ez a zvol); pl.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**** közvetlenül épülhet rá adatbázis, vagy</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**** közvetlenül épülhet rá adatbázis, vagy</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>**** csinálhatunk egy zvolban tetszőleges egyéb fs-t (a Solaris/IllumOS swapelni is tud zvolra; a Linux is, de<span class="diffchange diffchange-inline"> a zvol nem lehet tömörített és</span> resume-olni<span class="diffchange diffchange-inline"> semmiképpen</span> nem tud róla), vagy</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>**** csinálhatunk egy zvolban tetszőleges egyéb fs-t (a Solaris/IllumOS swapelni is tud zvolra; a Linux is, de resume-olni nem tud róla), vagy</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>**** exportálhatjuk iSCSI-n.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>**** exportálhatjuk iSCSI<span class="diffchange diffchange-inline">-n/AoE</span>-n.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Storage Pool Allocator (SPA).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Storage Pool Allocator (SPA).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Ez kezeli az egész alatti fizikai diszkeket.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Ez kezeli az egész alatti fizikai diszkeket.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>*** Ez tömörít, blokkszinten; emellett automatikusan megtalálja a "lukakat" (csupa nullás területeket) a fájlokban és azoknak még csak nem is allokál helyet (tömörítettet sem).</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>*** Ez tömörít, blokkszinten; emellett<span class="diffchange diffchange-inline">, ha bármilyen tömörítés be van kapcsolva,</span> automatikusan megtalálja a "lukakat" (csupa nullás területeket) a fájlokban és azoknak még csak nem is allokál helyet (tömörítettet sem).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>== Jellemzői, működése ==</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>== Jellemzői, működése ==</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5954&oldid=prev KornAndras: /* Alapfogalmak, építőelemek */ most már perzisztens az l2arc 2022-02-24T15:31:08Z <p>‎<span dir="auto"><span class="autocomment">Alapfogalmak, építőelemek: </span> most már perzisztens az l2arc</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2022. február 24., 15:31-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">41. sor:</td> <td colspan="2" class="diff-lineno">41. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A zfs terminológiájában az ilyen cache az "L2ARC" (Level 2 Adaptive Replacement Cache).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A zfs terminológiájában az ilyen cache az "L2ARC" (Level 2 Adaptive Replacement Cache).</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#** Az L2ARC kifejezetten SSD-re van optimalizálva: pl. nagy blokkokban ír.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#** Az L2ARC kifejezetten SSD-re van optimalizálva: pl. nagy blokkokban ír.</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>**#** <span class="diffchange diffchange-inline">Gond</span> <span class="diffchange diffchange-inline">vele</span>, hogy nem perzisztens: reboot után a cache üres, és csak nagyon lassan (adott esetben napok alatt) "<span class="diffchange diffchange-inline">melegszik</span> be".</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>**#** <span class="diffchange diffchange-inline">Kb.</span> <span class="diffchange diffchange-inline">2021-ig gond volt</span>, hogy nem<span class="diffchange diffchange-inline"> volt</span> perzisztens: reboot után a cache üres<span class="diffchange diffchange-inline"> volt</span>, és csak nagyon lassan (adott esetben napok alatt) "<span class="diffchange diffchange-inline">melegedett</span> be".</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A cache jelenleg nem lehet sem mirror, sem raidz[123].</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A cache jelenleg nem lehet sem mirror, sem raidz[123].</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A cache alapértelmezés szerint csak a véletlen (nem prefetch-elhető) olvasásokat cache-eli.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>**#* A cache alapértelmezés szerint csak a véletlen (nem prefetch-elhető) olvasásokat cache-eli.</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5945&oldid=prev KornAndras: /* Alapfogalmak, építőelemek */ már ki lehet szedni vdevet poolból 2019-07-16T12:55:06Z <p>‎<span dir="auto"><span class="autocomment">Alapfogalmak, építőelemek: </span> már ki lehet szedni vdevet poolból</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2019. július 16., 12:55-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">20. sor:</td> <td colspan="2" class="diff-lineno">20. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** A poolban tárolt adatokat a zfs RAID0-szerűen szétteríti az egyes vdevekre.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** A poolban tárolt adatokat a zfs RAID0-szerűen szétteríti az egyes vdevekre.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Egy pool bővíthető újabb vdevekkel;</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Egy pool bővíthető újabb vdevekkel;</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>** a poolhoz hozzáadott vdevek eltávolítása (speciális esetektől eltekintve) nem lehetséges.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>** a poolhoz hozzáadott vdevek eltávolítása (speciális esetektől eltekintve)<span class="diffchange diffchange-inline"> sokáig</span> nem<span class="diffchange diffchange-inline"> volt</span> lehetséges<span class="diffchange diffchange-inline">; 2019 közepén, kb. zfsonlinux 0.8.0-tól, már igen</span>.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Bővítéskor nem történik újracsíkozás; az újonnan felírt adatok azonban már részben az új vdev(ek)re is kerülnek.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Bővítéskor nem történik újracsíkozás; az újonnan felírt adatok azonban már részben az új vdev(ek)re is kerülnek.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Maguk a vdevek érdemben nem bővíthetők!</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>*** Maguk a vdevek érdemben nem bővíthetők!</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5944&oldid=prev KornAndras: /* Esettanulmányok */ elkezdtem frissíteni a zfs-es telepítős esettanulmány 2018-03-29T21:34:50Z <p>‎<span dir="auto"><span class="autocomment">Esettanulmányok: </span> elkezdtem frissíteni a zfs-es telepítős esettanulmány</span></p> <a href="//unixlinux.tmit.bme.hu/index.php?title=ZFS&amp;diff=5944&amp;oldid=5935">Változtatások megtekintése</a> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5935&oldid=prev Csibra: ZFS Last Word in Filesystems link javítása 2016-12-01T09:33:52Z <p>ZFS Last Word in Filesystems link javítása</p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2016. december 1., 09:33-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">153. sor:</td> <td colspan="2" class="diff-lineno">153. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Tranzakciókezelés ===</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Tranzakciókezelés ===</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>(A [http://<span class="diffchange diffchange-inline">hub</span>.<span class="diffchange diffchange-inline">opensolaris</span>.org<span class="diffchange diffchange-inline">/bin</span>/download/<span class="diffchange diffchange-inline">Community+Group+zfs</span>/<span class="diffchange diffchange-inline">docs</span>/<span class="diffchange diffchange-inline">zfslast</span>.pdf ZFS -- The Last Word in Filesystems] c. prezentáció 9. oldalán van egy jó ábra, ami alapján könnyebb megérteni, hogy működik.)</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>(A [http://<span class="diffchange diffchange-inline">wiki</span>.<span class="diffchange diffchange-inline">illumos</span>.org/download/<span class="diffchange diffchange-inline">attachments</span>/<span class="diffchange diffchange-inline">1146951</span>/<span class="diffchange diffchange-inline">zfs_last</span>.pdf ZFS -- The Last Word in Filesystems] c. prezentáció 9. oldalán van egy jó ábra, ami alapján könnyebb megérteni, hogy működik.)</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>A lényeg:</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>A lényeg:</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">299. sor:</td> <td colspan="2" class="diff-lineno">299. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* [http://www.c0t0d0s0.org/archives/7271-ZFS-Dedup-Internals.html ZFS Dedup Internals]</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* [http://www.c0t0d0s0.org/archives/7271-ZFS-Dedup-Internals.html ZFS Dedup Internals]</div></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>* [http://<span class="diffchange diffchange-inline">hub</span>.<span class="diffchange diffchange-inline">opensolaris</span>.org<span class="diffchange diffchange-inline">/bin</span>/download/<span class="diffchange diffchange-inline">Community+Group+zfs</span>/<span class="diffchange diffchange-inline">docs</span>/<span class="diffchange diffchange-inline">zfslast</span>.pdf ZFS -- The Last Word in Filesystems]</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>* [http://<span class="diffchange diffchange-inline">wiki</span>.<span class="diffchange diffchange-inline">illumos</span>.org/download/<span class="diffchange diffchange-inline">attachments</span>/<span class="diffchange diffchange-inline">1146951</span>/<span class="diffchange diffchange-inline">zfs_last</span>.pdf ZFS -- The Last Word in Filesystems]</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* [http://www.youtube.com/watch?v=P77HEEgdnqE Hybrid Storage Pools - Using Disk and Flash with ZFS] (videó)</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>* [http://www.youtube.com/watch?v=P77HEEgdnqE Hybrid Storage Pools - Using Disk and Flash with ZFS] (videó)</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> </table> Csibra //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5932&oldid=prev KornAndras: /* Mennyire valószínűtlen a hash-ütközés? */ egyszerűsítés 2016-08-15T10:51:05Z <p>‎<span dir="auto"><span class="autocomment">Mennyire valószínűtlen a hash-ütközés?: </span> egyszerűsítés</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2016. augusztus 15., 10:51-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">143. sor:</td> <td colspan="2" class="diff-lineno">143. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, mivel legfeljebb 128k nagyságúak a blokkok, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, mivel legfeljebb 128k nagyságúak a blokkok, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt (<span class="diffchange diffchange-inline">viszont</span> <span class="diffchange diffchange-inline">egyébként</span> <span class="diffchange diffchange-inline">(az</span> <span class="diffchange diffchange-inline">Oracle Solaris ZFS Administraton Guide szerint) az egyszerű és gyors,</span> fletcher-4 nevű checksumot használja). Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt (<span class="diffchange diffchange-inline">amúgy,</span> <span class="diffchange diffchange-inline">deduplikáció</span> <span class="diffchange diffchange-inline">nélkül,</span> <span class="diffchange diffchange-inline">a</span> fletcher-4 nevű checksumot használja). Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Igen ám, de számolnunk kell a [http://en.wikipedia.org/wiki/Birthday_problem születésnap-paradoxonnal] is. Ahogy nő a bemenetek (blokkok) száma, nő az ütközés valószínűsége is, és korántsem lineárisan. Az imént hivatkozott wikipédia-szócikk tartalmaz egy [http://en.wikipedia.org/wiki/Birthday_problem#Probability_table táblázatot], amelyből kiolvashatjuk, hogy ha azt szeretnénk, hogy a hash-ütközés valószínűsége legfeljebb 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; legyen (tehát négy nagyságrenddel kisebb, mint a bithiba valószínűsége a merevlemezen -- másképp: tízezer bithibára jusson egy hash-ütközés), akkor legfeljebb 4,8*10&lt;sup&gt;&lt;small&gt;29&lt;/small&gt;&lt;/sup&gt; különböző blokkunk lehet. A minimális blokkméret 512 byte, tehát 223517417907714843750 tebibájtnyi egyedi 512 bájtos blokkokból álló adatban már kb. 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; valószínűséggel fordul elő hash-ütközés (ez kb. 203287907 yobibyte; egy yobibyte 1024 zebibyte, egy zebibyte 1024 exbibyte, egy exbibyte 1024 pebibyte, egy pebibyte 1024 tebibyte).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Igen ám, de számolnunk kell a [http://en.wikipedia.org/wiki/Birthday_problem születésnap-paradoxonnal] is. Ahogy nő a bemenetek (blokkok) száma, nő az ütközés valószínűsége is, és korántsem lineárisan. Az imént hivatkozott wikipédia-szócikk tartalmaz egy [http://en.wikipedia.org/wiki/Birthday_problem#Probability_table táblázatot], amelyből kiolvashatjuk, hogy ha azt szeretnénk, hogy a hash-ütközés valószínűsége legfeljebb 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; legyen (tehát négy nagyságrenddel kisebb, mint a bithiba valószínűsége a merevlemezen -- másképp: tízezer bithibára jusson egy hash-ütközés), akkor legfeljebb 4,8*10&lt;sup&gt;&lt;small&gt;29&lt;/small&gt;&lt;/sup&gt; különböző blokkunk lehet. A minimális blokkméret 512 byte, tehát 223517417907714843750 tebibájtnyi egyedi 512 bájtos blokkokból álló adatban már kb. 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; valószínűséggel fordul elő hash-ütközés (ez kb. 203287907 yobibyte; egy yobibyte 1024 zebibyte, egy zebibyte 1024 exbibyte, egy exbibyte 1024 pebibyte, egy pebibyte 1024 tebibyte).</div></td> </tr> </table> KornAndras //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5927&oldid=prev Csaba: /* Mennyire valószínűtlen a hash-ütközés? */ default hash dedup nélkül 2016-06-30T12:11:26Z <p>‎<span dir="auto"><span class="autocomment">Mennyire valószínűtlen a hash-ütközés?: </span> default hash dedup nélkül</span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2016. június 30., 12:11-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">143. sor:</td> <td colspan="2" class="diff-lineno">143. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, mivel legfeljebb 128k nagyságúak a blokkok, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Hash-ütközésnek nevezzük azt az esetet, amikor két különböző bemenethez ugyanazt a kimenetet rendeli egy hash-függvény. Mivel a lehetséges bemenetek száma végtelen (ill. itt, mivel legfeljebb 128k nagyságúak a blokkok, 256&lt;sup&gt;&lt;small&gt;131072&lt;/small&gt;&lt;/sup&gt; körül van, ami majdnem ugyanaz), a kimeneteké pedig véges, szükségszerűen végtelen sok olyan különböző bemenet-pár van, amelyeknek azonos a hash-e. A deduplikáció szempontjából ez azért releváns, mert alapértelmezés szerint az azonos hash-sel rendelkező adatblokkokat azonos tartalmúnak tekinti; így ütközés esetén a később kiírt deduplikált fájl (egy blokkja) helyén a korábban kiírt ütköző fájl tartalmát fogjuk látni.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">−</td> <td style="background: #ffa; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt. Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>Alapértelmezés szerint sha256-os hasht használ a zfs, ha bekapcsoljuk a deduplikációt<span class="diffchange diffchange-inline"> (viszont egyébként (az Oracle Solaris ZFS Administraton Guide szerint) az egyszerű és gyors, fletcher-4 nevű checksumot használja)</span>. Ez azt jelenti, hogy 2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt; különböző hash lehetséges. Ha feltesszük, hogy kb. egyenletes eloszlással rendelődik hash a különféle bemenetekhez (márpedig egy jó hashnél ez nagyjából teljesül), akkor annak az esélye, hogy két különböző bemenethez ugyanaz a hash tartozik, 1:2&lt;sup&gt;&lt;small&gt;256&lt;/small&gt;&lt;/sup&gt;-hoz. Ez rettenetesen kicsi valószínűség.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Igen ám, de számolnunk kell a [http://en.wikipedia.org/wiki/Birthday_problem születésnap-paradoxonnal] is. Ahogy nő a bemenetek (blokkok) száma, nő az ütközés valószínűsége is, és korántsem lineárisan. Az imént hivatkozott wikipédia-szócikk tartalmaz egy [http://en.wikipedia.org/wiki/Birthday_problem#Probability_table táblázatot], amelyből kiolvashatjuk, hogy ha azt szeretnénk, hogy a hash-ütközés valószínűsége legfeljebb 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; legyen (tehát négy nagyságrenddel kisebb, mint a bithiba valószínűsége a merevlemezen -- másképp: tízezer bithibára jusson egy hash-ütközés), akkor legfeljebb 4,8*10&lt;sup&gt;&lt;small&gt;29&lt;/small&gt;&lt;/sup&gt; különböző blokkunk lehet. A minimális blokkméret 512 byte, tehát 223517417907714843750 tebibájtnyi egyedi 512 bájtos blokkokból álló adatban már kb. 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; valószínűséggel fordul elő hash-ütközés (ez kb. 203287907 yobibyte; egy yobibyte 1024 zebibyte, egy zebibyte 1024 exbibyte, egy exbibyte 1024 pebibyte, egy pebibyte 1024 tebibyte).</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>Igen ám, de számolnunk kell a [http://en.wikipedia.org/wiki/Birthday_problem születésnap-paradoxonnal] is. Ahogy nő a bemenetek (blokkok) száma, nő az ütközés valószínűsége is, és korántsem lineárisan. Az imént hivatkozott wikipédia-szócikk tartalmaz egy [http://en.wikipedia.org/wiki/Birthday_problem#Probability_table táblázatot], amelyből kiolvashatjuk, hogy ha azt szeretnénk, hogy a hash-ütközés valószínűsége legfeljebb 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; legyen (tehát négy nagyságrenddel kisebb, mint a bithiba valószínűsége a merevlemezen -- másképp: tízezer bithibára jusson egy hash-ütközés), akkor legfeljebb 4,8*10&lt;sup&gt;&lt;small&gt;29&lt;/small&gt;&lt;/sup&gt; különböző blokkunk lehet. A minimális blokkméret 512 byte, tehát 223517417907714843750 tebibájtnyi egyedi 512 bájtos blokkokból álló adatban már kb. 10&lt;sup&gt;&lt;small&gt;-18&lt;/small&gt;&lt;/sup&gt; valószínűséggel fordul elő hash-ütközés (ez kb. 203287907 yobibyte; egy yobibyte 1024 zebibyte, egy zebibyte 1024 exbibyte, egy exbibyte 1024 pebibyte, egy pebibyte 1024 tebibyte).</div></td> </tr> </table> Csaba //unixlinux.tmit.bme.hu/index.php?title=ZFS&diff=5926&oldid=prev Csaba: /* Jellemzői, működése */ 2016-06-28T18:59:55Z <p>‎<span dir="auto"><span class="autocomment">Jellemzői, működése</span></span></p> <table class='diff diff-contentalign-left'> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td> <td colspan='2' style="background-color: white; color:black;">A lap 2016. június 28., 18:59-kori változata</td> </tr><tr> <td colspan="2" class="diff-lineno">114. sor:</td> <td colspan="2" class="diff-lineno">114. sor:</td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden megvalósítás egy konkrét verziószámig bezárólag minden verziójú poolt/fs-t képes kezelni és helyben upgrade-elni a legújabb általa ismert verzióra.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Minden megvalósítás egy konkrét verziószámig bezárólag minden verziójú poolt/fs-t képes kezelni és helyben upgrade-elni a legújabb általa ismert verzióra.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Mivel azonban az Oracle nem látszik hivatalosan kiadni a legújabb fejlesztéseket (pl. a [https://www.illumos.org/boards/1/topics/256 titkosítást]) és általában sem ápol jó viszonyt a nyílt forrású közösséggel, a zfs fejlesztése több vonalon folyik párhuzamosan: az Oracle ott folytatta, ahol a Sun abbahagyta, a nyílt forráskód körül kiépült közösség pedig szintén, csak másképp. Valószínűnek látszik, hogy az Oracle termékekkel létrehozott zpoolokat a szabad termékek (még jó darabig) nem fogják támogatni és természetesen fordítva. Az utolsó hordozhatónak tekinthető pool-verzió talán a 28-as.</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>** Mivel azonban az Oracle nem látszik hivatalosan kiadni a legújabb fejlesztéseket (pl. a [https://www.illumos.org/boards/1/topics/256 titkosítást]) és általában sem ápol jó viszonyt a nyílt forrású közösséggel, a zfs fejlesztése több vonalon folyik párhuzamosan: az Oracle ott folytatta, ahol a Sun abbahagyta, a nyílt forráskód körül kiépült közösség pedig szintén, csak másképp. Valószínűnek látszik, hogy az Oracle termékekkel létrehozott zpoolokat a szabad termékek (még jó darabig) nem fogják támogatni és természetesen fordítva. Az utolsó hordozhatónak tekinthető pool-verzió talán a 28-as.</div></td> </tr> <tr> <td colspan="2" class="diff-empty">&#160;</td> <td class="diff-marker">+</td> <td style="background: #cfc; color:black; font-size: smaller;"><div>* Úgy néz ki, hogy nemsokára lesz [https://github.com/zfsonlinux/zfs/issues/494#issuecomment-217004200 natív titkosítás] a ZoL-ban.</div></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"></td> </tr> <tr> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Deduplikáció ===</div></td> <td class="diff-marker">&#160;</td> <td style="background: #eee; color:black; font-size: smaller;"><div>=== Deduplikáció ===</div></td> </tr> </table> Csaba