Hej ZyntaX
Hur påläst är du om ZFS och lagring generellt sätt? En sak med NFS är att det är synkront, vilket betyder att NFS client kräver ett svar från servern att datan den precis skickat är skrivit till stabil lagring. Om du har massa vanliga diska och just SATA(som är halvduplex dessutom bl.a) så kommer huvuden att röra på sig mycket då den synkrona förfrågan om dataskrivningen ska ned till disk asap.
Man kan slå av synkron från NFS sida och det gör man vid monteringen. Men när du sedan ska använda ZFS är det en hel del annat att tänka på. Precis som ronnylov skriver så har du aldrig mer skriv prestandard på en raid5(6)/raidz(2) än en enskilld disk. Detta på grund av pariteten som ska räknas ut... det läggs också på en pytteliten latens för detta.
Mirrors är inte så tokigt, och ha man mycket läs så kan t.o.m en 3-vägs spegling passa bättre.
Sedan har vi ZIL som jag tycker du borde använda dig av, speciellt om du ska köra NFS. När data kommer in till en maskin med ZFS så finns det en inställning som säger hur länge datat ska hållas i minne OCH skrivas mot en ZIL disken om det skulle hända något. Efter 5-10 sekunder beroende på vad inställningen är så skrivs datan ned fint på underliggande VDEVs i en seq överförning. Snygg och fint. När datan är skriven så ogiltlighets förklaras datan på ZIL disken. Alltså, man skriver enbart mot denna disk, utom om stömmen har gått, då läser man upp datan och skriver ned den snygg och fint.
En ZIL disk ska därför vara så LÅG i latens det bara går(för att få snabba svar tillbaka), men samtidigt om det är en SSD(vanligtvis) så är det SLC som gäller just för att man skriver hela tiden.
För L2ARCH så är det bara att slänga in MLC diskar och matcha sitt "working set" (den datan som används typiskt mycket). Måste mätas med tiden då cacharna ARCH och L2ARCH måste bli värma.
När det kommer till ZFS, så fläska på med minne
När du utför tester är det viktigt vilken typ av I/O du lastar, random eller seq. Och sedan om det är synkront eller asynkront.
Värt att notera är att VMware skriver alltid synkront, och tack vare de stora antalet VMs man kan köra så blir lasten väldigt random.
Edit: sen har ju vilken blocksize stor betydelse på ren I/O och bandbredd du kan få ut.
Låt oss säga att man har små block på 16K och man har 2000 IO/sec på diskarna så blir det typish 32 MB/s, om du där emot har 128K block men fortfarande 2000 IO/sec så blir det 256 MB/s.
Edit2: VMware och NFSv3 funkar bäst.
Edit3: Vet inte varför du har satt igång VMCI, man får inte bättre nätverks prestandard och det är ett API som applikationer i gäst OS måste ha stöd för. Se länken:
http://communities.vmware.com/thread/206501