ZFS pooler och prestanda

Trädvy Permalänk
Avstängd
Plats
::1
Registrerad
Jul 2002

ZFS pooler och prestanda

Hej.

Har lite funderingar gällande prestandan vid uppbyggnaden av ZFS pooler.

För tillfället har jag 6st diskar som bildar en pool med 3st mirrors med 2 diskar i varje mirror.

Fördelar med det som jag förstått det är att data skrivs/läses över varje mirror, rent krast får man ut prestandan av vad mirrorsen klarar att prestera ihop?
Det är även enkelt att bygga ut poolen genom att addera ytterliga 2 diskar och peta in en ny mirror poolen. Fördelen finns även att med lite tur i oturen så kan man förlora 3 diskar utan att poolen går ner, det faller dock givetvis bort om 2 diskar i samma mirror brakar.

Nackdelen är att jag endast kan nyttja 50% av diskarnas sammanlagda lagringsyta. Det spelar mindre roll för mig då jag hellre har bättre prestanda.

Men hur skiljer det sig prestandamässigt mot t.ex. RaidZ2

Med Raidz2 hade jag fått ut mer lagringsyta, men hur sprids läs och skrivningar över diskarna? Hade det blivit bättre eller sämre än flera mirrors?
Som nackdel är det svårare att utöka en RaidZ2 då man måste lägga till minst lika stor lagringsyta igen.

Huvudsakliga ändamålet för lagringen är att hosta ett par VM's som kör olika OS och vill då att de ska ha så bra läs och skrivprestanda som möjligt.

Information wants to be free.
Internet: 1Gbit/1Gbit LAN/WiFi: Cisco/Meraki
Laptop: Dell XPS 9550 4K touch HTPC: Raspberry Pi 3 LibreELEC
Desktop: WIP

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2005

Det du har nu ser ut som en RAID10-setup fast med ZFS-pooler i stället för faktiska arrayer, och RAID-Z2 motsvarar (som du säkert vet) RAID-6 i paritet. Här finner du rätt bra info om RAID-Z2 och RAID-6, http://dtrace.org/blogs/ahl/2006/06/18/double-parity-raid-z/

Prestandamässigt är normalt sett RAID10 att föredra, men beroende på vilken typ av IO som du har mot diskarna kan RAID5 (vanlig RAID-Z) vara att föredra (databaser är exempel IO som tjänar på detta). Spridningen sköter ZFS själv, och i inlägget ovan hänvisar han till koden som sköter den biten, så om du är lite insatt i det kan det nog vara matnyttigt.

Moderkort: ASUS Maximus III Formula | Processor: Intel i7 860 @ 3.82GHz | Minnen: 8GB Corsair Vengeance 1600Mhz | Grafikkort: XFX 5870 1GB | Kylare: Noctua NH-D14 | Nätagg: Corsair HX850W
Moderkort: MSI 880GMA-E45 | Processor: AMD Athlon II x2 245e | Minnen: 4GB Dominator GT 1600MHz | Kylare: Scythe BIG Shuriken | Nätagg: Seasonic X-Fanless 400W | 12TB

Trädvy Permalänk
Avstängd
Plats
Sthlm
Registrerad
Nov 2008

En zpool byggs upp av vdevs, dvs grupper av hårddiskar (eller partitioner, eller filer). Varje vdev kan vara konfad som raidz3, raidz2, raidz1 eller mirror.

Det finns huvudsakligen två sorters prestanda när vi pratar raid system. IOPS och bandbredd.

VIKTIGT: Slarvigt kan sägas att ZFS ger dig IOPS prestanda som motsvarar antalet vdevs i din zpool. Jag tror detta gäller alla raidsystem, inkl hårdvaruraidkort.

IOPS, är som du nog vet, hur många olika filer man kan besöka varje sekund. Om du bootar Windows, så måste du besöka många småfiler, och det tar fett med tid eftersom hårddiskhuvudet är långsamt. Men en SSD kan snabbt besöka många filer och bootar mycket snabbare än en HD. En HD kanske läser 1MB/sek när vi pratar slumpmässig 4K block, en SSD kanske läser 60MB/sek. Antag att du måste läsa in totalt 0.5GB för att boota windows, ja, då tar det lång tid med en HD. Detta är IOPS prestanda vi pratar om här.

Raidz2 är bra för höga sekviensella prestanda, dvs hög MB/sek. Med 7 diskar kommer du upp i kanske 4-500 MB/sek.

När du pratar om Virtuella maskiner så vill du ha höga IOPS, eftersom varje användare kommer att läsa många små Windowsfiler då och då. Därför bör du ha många vdevs i din zpool. Mirrors ger dig största antalet vdevs för ett givet antal diskar. Det är klart att du kan skapa många raidz2 vdevs också, men då måste du använda onödigt många diskar, om du bara vill få höga IOPS. Högst IOPS fås med SSD diskar. En vdev ger dig IOPS prestanda som en ensam disk. Om du har sex diskar i tre mirrors, så motsvarar det IOPS prestanda som tre diskar. Om du istället skapar en raidz1 utav alla sex diskar, så har du IOPS prestanda som en ensam disk.

Om du ska strömma en stor fil så snabbt som möjligt, så går det bra med låga IOPS. Då kan du ha en enda stor vdev i din zpool.

Generellt så byggs alla stora raid upp av flera raid-5 grupper eller raid-6 grupper om vi pratar om hårdvaruraid. ZFS är likadan, och använder sig av raidz1/2/3/mirror.

Klargjorde detta saken?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004

IOPS är inte hur många filer man kan "besöka" per sekund. Tänk på att det kan finnas flera filer per block osv.

Trädvy Permalänk
Avstängd
Plats
Sthlm
Registrerad
Nov 2008
Skrivet av iXam:

IOPS är inte hur många filer man kan "besöka" per sekund. Tänk på att det kan finnas flera filer per block osv.

Nej jag vet. Men det var min förenklade förklaring. Att IOPS är hur många I/O per sekund, typ, hur många filer man kan besöka per sekund. Har du en bättre förklaring, som är enkel att förstå?

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Okt 2002

Man kan komplettera med SSD-disk som extra cache till hårddiskarna för att bättra på IOPS.

Hittade ett par länkar som var intressanta:
http://constantin.glez.de/blog/2010/06/closer-look-zfs-vdevs-...
http://constantin.glez.de/blog/2011/02/frequently-asked-quest...