vso, misschien dat ik irritant overkom ofzo, dat is niet mijn bedoeling. Aan de andere kant, kan ik je maar beter nu gelijk uit de droom helpen dan dat je straks met dure port multipliers zit en een aardige performancehit krijgt met ZFS; dat zou zonde zijn omdat je er dan netto weinig mee bent opgeschoten en toch veel geld kwijt bent. Dat probeer ik je gewoon te besparen, omdat port multipliers en/of expanders het voor ZFS gewoon niet waard zijn, naar mijn inschatting.
Als controllers 400 euro per stuk kosten dan zou het inderdaad sneller interessant worden ja, omdat je dan nog aardig wat geld kan besparen. Maar dat hoeft dus niet zo te zijn. Ik heb mijn LSI 1068E controllers voor 110 euro per stuk wat lekker goedkoop is.
Overigens heb je naast de Intel SASUC8i nog andere keuzes:
pricewatch: IBM ServeRAID M1015 SAS/SATA Controller for System x
pricewatch: Supermicro -USAS2-L8i 8-Port SAS/2
en staat niet in de PW maar ook de SuperMicro USAS2-L8e (kan geen RAID; maar niet echt goedkoper dan L8i)
pricewatch: Intel RS2WC080 (RS2WC080)
Bovenstaande zijn opvolgers van de LSI 1068E chip die de LSI SAS2008 chip hebben. Het grote verschil is dat deze acht 6Gbps poorten hebben ipv 3Gbps, maar ook dat ze PCI-express 2.0 x8 in plaats van PCI-express 1.0 x8 ondersteunen. Daarnaast hebben ze - geloof ik - niet de beperking van de meeste 3Gbps LSI SAS adapters dat je max 2TB schijven kunt gebruiken. Bij de Intel SASUC8i is het volgens mij zo dat als je een 3TB+ schijf aansluit je daar maximaal 2.0TiB (2.2TB) van kunt zien, en dat is natuurlijk niet wat je wilt.
Belangrijk is wel dat de controller te flashen is naar IT-mode firmware; dat is niet áltijd het geval dus google/informeer je goed alvorens je de controllers bestelt. Dit is een belangrijke beslissing voor een ZFS server dus hier wat aandacht aan besteden betaalt zich vanzelf uit in minder gezeik en meer plezier. Bedenk ook dat je bijna altijd kabels los moet bijkopen (SFF8087 uit mijn hoofd).
Je vraag of dat je controllers kunt combineren: ja, dat kan. In principe geen nadeel van, zeker niet als het om dezelfde type controllers gaat. Maar ook je onboard poorten kun je prima combineren met zo'n SAS addon controller. Nu moet je wel weten dat je onboard poorten beter zijn dan addon poorten; het zit dichter bij de CPU omdat er geen PCIe bridge tussen zit zoals alles anders wel het geval is. Daarnaast zijn je onboard poorten AHCI poorten, en dat heeft als voordeel dat zaken als TRIM en spindown normaal werken. Dus voor SSDs wil je eigenlijk wel op je onboard poorten aansluiten voor performanceredenen.
Wat ik een beetje mis in je verhaal, ondanks dat ik PM laat varen is over welke performance hit je het hebt ? Want ik heb PM's gezien die 2 "bussen" hebben 1 voor "opdrachten" 1 voor data ..
Je je hebt command switching en FIS switching waarbij de laatste veel beter is en meer lijkt op hoe SAS expanders dit truucje doen. Maar ook bij SAS expanders heb je hetzelfde gezeik. Als je nou een normaal RAID of losse disk configuratie gebruikt, zou dit best goed kunnen werken met weinig performance hit.
Maar ZFS is anders, wat alles te maken heeft met de manier hoe met name RAID-Z werkt. Voor alle requests worden alle disks aangesproken, en de request is pas klaar als alle disks de I/O hebben verwerkt. In plaats van MB/s kijken we nu naar latencies. Die twee hebben met elkaar te maken, maar toch werkt het anders dan je - denk ik - denkt:
300MB/s SATA = 300 * 1024 = 307200 KiB/s. Stel nou dat we een 10-disk RAID-Z2 hebben, dan schrijft ZFS met een recordsize van 128KiB dus 16KiB per disk.
Nu reken je van bandbreedte naar latency, dus 307200KB max per seconde betekent dat je 19200 requests van 16KiB per stuk kunt doen in diezelfde seconde; bij 100% performance scaling en andere overhead zoals command overhead en propagation delay niet meegerekend. Dat betekent dus per request 1000 / 19200 = 0,052ms. Die tijd kost het letterlijk om 16KiB door de interface heen te jagen, dus in de praktijk is het altijd langzamer dan deze tijd. Maar laten we ons tot een theoretisch voorbeeld beperken zonder teveel op de praktijk te letten waar nog andere factoren een rol spelen.
Als ZFS nu de perfecte controller (en disks) heeft, dan is het dus:
disk1: 0,052ms
disk2: 0,052ms
..
disk10: 0,052ms
Dan is je request dus klaar in 0,052ms omdat alle 10 de disks even snel zijn allemaal na dezelfde latency klaar zijn. Mooi! Dan heb je dus kicken performance.
Maar nu komt de crux: wat nou als je een expander of port multiplier gebruikt? Nu ga ik wat cijfers verzinnen die helemaal niet hoeven te kloppen, maar het gaat om het idee:
disk1: 0,052ms
disk2: 0,082ms
disk3: 0,112ms
disk4: 0,142ms
disk10: 0,322ms
De latencies nemen toe per schijf. Nu kloppen bovenstaande latencies niet omdat je bij 300MB/s delen met 10 devices nog veel hogere latencies krijgt, maar laten we het simpel houden, stel de situatie boven klopt, dan zit je met een probleem.
Wat is nou het probleem? Door de manier hoe ZFS de I/O doet, waarbij één logische request opgedeeld wordt in sub-requests die alle disks moeten voltooien voordat de logische request klaar is, krijg je dus een situatie waarbij niet het gemiddelde van de latency er toe doet, maar de maximale latency. In plaats van 0,052ms heb je dus 0,322ms. In feite werkt het dan zo dat vanuit het perspectief van ZFS, alle disks er 0,322ms over hebben gedaan; dat disk1 sneller is dan disk10 maakt niet uit het gaat hierbij om de maximale latency van alle disks samen. En daar zit hem het zwakke punt en de performance hit.
Het punt is dus dat bij het delen van bandbreedte zoals met SAS expanders of port multipliers je altijd een situatie hebt dat wanneer je gelijktijdig I/O doet naar meerdere disks, je een situatie krijgt waarbij de latencies gaan toenemen voor bepaalde disks, en daar is met name ZFS dus erg gevoelig voor.
Maar goed, nog advies naast ZFS RAID-Z2 ? technieken die ik zeker in de moederbord wil zien ?
Sommigen willen graag IPMI zodat ze dingen kunnen doen als remote resetten en geen monitor hoeven aan te sluiten. Ik zelf heb niet zo'n behoefte hieraan, maar het kan een leuke feature zijn. Verder heeft SuperMicro wel leuke bordjes met dual intel gigabit aan boord, wat je weer PCIe scheelt en qua energieverbruik beter is. SuperMicro is doorgaans ook erg zuinig en veel producten zijn goed betaalbaar voor wat je krijgt. Zo heb je bordjes waar al een 6Gbps SAS adapter in zit dus je begint al met 14 poorten met nog 3 of 4 PCI-express voor verdere uitbreiding.
En geheugen wil je niet op bezuinigen als je veel performance wilt, in jouw geval minimaal 16GiB denk ik. Dat kost opzich ook niets meer; 80 euro voor 4 latjes van 4GiB per stuk. Let wel op dat sommige serverbordjes alleen registered geheugen willen of alleen met registered alle geheugensloten kan gebruiken.
Zelf zit ik voor netwerk te twisten tussen "goedkopere" intel desktop versie(s) of de
Die enkele adapter heb je alleen nodig voor Windows platforms zodat je de intel software kan gebruiken voor teaming of link aggregation. Onder Linux/BSD/Solaris heb je dat niet nodig en kun je gewoon de OS link aggregation gebruiken wat voor elk merk adapter zou moeten werken. Zelf lijkt mij dual onboard Intel ethernet op supermicro wel geschikt voor je. Let wel dat link aggregation weer een verhaal apart is; lees je goed in hierover!
Genoeg leesvoer tot zover.