Ja Wikipedia is ook maar een napraat-wiki - de SMART pagina bijvoorbeeld. Pffff. Mensen die dat hebben getypt, snappen echt niet waar ze het over hebben. En zo geldt dit voor meer dingen. Er wordt gekopieerd wat er op andere sites staan. En dat is soms ook incorrect.
Maar eh, volgens mij snap ik het nog niet helemaal. Bij elke I/O-request moeten toch sowieso alle schijven worden betrokken?
Niet bij RAID4 en RAID5 en RAID6 (parity RAID). Je hoeft alleen één disk + de parity te updaten. Bij ZFS RAID-Z en legacy RAID3 moeten alle disks betrokken worden bij zo'n write. Hoe klein ook.
Daarom kun je ook niet 512 bytes schrijven naar een RAID3 - de sectorsize wordt verhoogd. Bij een 5-disk RAID3 betekent dit dat de sectorsize 4 keer dat van een normale schijf is: 4*512B = 2KiB. Dat betekent dat je alleen in blokjes van 2KiB naar de RAID3 kunt schrijven; 512 bytes schrijven is simpelweg niet mogelijk. Een simpele
dd if=/dev/zero of=/dev/raid3/testvolume bs=512 count=1 is dus gedoemd om te mislukken; je krijgt dan een error.
Eigenlijk is RAID-Z dus eerder een soort RAID-3 met distributed parity?
Ja. Met het verschil dan dat ZFS ook een dynamische stripesize gebruikt, met padding. Dit is niet te imiteren door welke RAID-implementatie dan ook. Maar afgezien daarvan is het qua performance-karakteristieken gelijk aan RAID3.
Ik heb eigenlijk nog nooit gehoord van iemand die dat als nadeel ziet, ik weet inderdaad dat dat de 'truc' van ZFS is

Nouja er zijn wat boze
autistische *KUCH* geestelijk rechtlijnige

mensen die vinden dat die werelden gescheiden moeten blijven, omdat zo een RAID-engine nooit kan nadoen wat ZFS doet. Maar boeie..?!
Dat doet elke RAID5 engine ook dus dat is niets nieuws. Anders zou elke RAID5 engine tegen <10MB/s schrijven. Je hebt een split&combine-engine nodig. Dit betekent dat je requests moet opsparen, en dan in stukjes moet hakken van de gewenste optimale grootte, in mijn voorbeeld een paar posts terug was dat 96KiB, maar meestal is dit veel groter. Dat vereist inderdaad wat bufferruimte. Staat totaal niet in verhouding met de megabytes tot meerdere gigabytes die ZFS kan gebruiken voor één transactie. Dat is nog fftjes wat grotere buffer.
Het hele idee met intelligente RAID1 implementaties zoals geom_raid1 met load_balancing algoritme, is dat de disks zoveel mogelijk sequential I/O kunnen doen maar ook
contiguous I/O. Oftewel, de blokjes die moeten worden gelezen of beschreven, moeten direct aaneensluitend zijn. Als de disks elke keer een blokje over moeten slaan, betekent dit 50% performanceverlies en daar gaat het hele voordeel van meer-dan-van-één-disk-lezen bij RAID1.
Wil je met RAID1 kunnen lezen zo snel als RAID0 dat doet, dan moet je zeggen disk1 doe jij LBA 1 tot 100 en disk2 doe jij LBA 101 tot 200. Dus niet zoals RAID0 doet: disk1 LBA1-2-3-4 en disk2 LBA5-6-7-8. Want dit betekent dat bij een volgende keer disk1 niet LBA5-6-7-8 moet lezen, maar 9-10-11-12, en dus moet het eerst 5-6-7-8 overslaan. Bij RAID1 staat die data ook op disk1, bij RAID0 niet. Daarom heb je bij RAID0 geen last van dit probleem, bij RAID1 moet je dus 'intelligente trucjes' uitvoeren om toch dezelfde performancepotentie te verzilveren als bij RAID0 gebruikelijk is.