Het klopt wel wat hij zegt; de problemen die RAID-Z krijgt zijn vrij uniek; RAID-Z lijkt van alle RAID levels nog het meest op RAID3.
Als je drie disks in RAID0 zet, heb je een oneven aantal; maar de stripesize is gewoon 128K bijvoorbeeld. Dus als je een megabyte leest dan:
disk0: 128K, 128K, 128K
disk1: 128K, 128K, 128K
disk2: 128K, 128K
Geen echte reden om langzaam te zijn; zeker voor 4K schijven: die blijven I/O doen in optimale block sizes. Bij RAID-Z werkt het echter anders. Stel je schrijft een bestand van 66 kilobyte:
disk0: 33K
disk1: 33K
disk2: 33K (parity)
ZFS past de stripesize dus aan, aan het bestand. Het zorgt er voor dat het bestand pecies netjes verdeeld wordt. Dit is iets wat geen enkel ander RAID level doet. Het voordeel is dat RAID-Z geen 'write hole' heeft; het nadeel is dat het erg gevoelig is met sectorsize; 33K werkt niet lekker op een 4K schijf die wil 32K of 36K doen. Pas als ZFS weet dat het een 4K sector schijf is, zal het zijn allocatie aanpassen. Probleem is dat alle huidige 4K schijven zeggen dat ze 512-byte sectoren hebben, en dus behandeld ZFS ze ook alsdien.
Eigenlijk is dit ook helemaal geen RAID. RAID is een abstractielaag die normaliter geen kennis hoeft/hoort te hebben van wat er wordt opgeslagen. Een RAID-engine kan een virtuele grote disk maken van meerdere kleinere disks, met diverse redundancyniveaus. Daarvoor hoort dus geen kennis nodig te zijn van het filesystem of de data.
Bij ZFS werkt dat heel anders; het RAID-gedeelte is onmogelijk na te bouwen door een andere RAID engine. Normaal werkt RAID met vaste blokgroottes en een vaste stripesize. Bij ZFS is voor elk (klein) bestand de stripesize anders - daar kan een normale RAID engine niets mee; hoe moet die weten wanneer de stripesize verandert? Het kan geen bestanden identificeren of ZFS metadata lezen.
Om deze reden wordt ZFS ook een layering violation genoemd, omdat het in feite twee werelden die gescheiden 'horen' te zijn, samenvoegt in een nieuwe laag die van beide werelden dingen moet weten. Dus in feite doet ZFS geen RAID in de conventionele betekenis; omdat het door andere RAID engines niet is na te bootsen.
[
Voor 9% gewijzigd door
Verwijderd op 29-03-2011 14:32
]