Lagring för databas! (Postgresql, R-server)

Permalänk
Medlem

Lagring för databas! (Postgresql, R-server)

Hej!

Jag har lite koll på viritualisering och har använt proxmox/esxi sedan innan. Jag har dock lite frågor ang. zfs pool hur den skulle se ut samt prestandan över virituella maskiner.

Behoven
Kommer att ha rätt mycket data > 10TB efter ett tag men kommer räcka med 2TB för tillfället. Så behöver vara utbyggbart.
Behöver "snabbt" kunna ladda in data från databasen i R och kunna göra analyser på den.

Utförande (?!)
Tänkte använda antingen någon serverversion av fedora eller ubuntu och köra viritualseringen med Qemu/Kvm. då jag endast har två/tre virituella maskiner. Någon zfs-pool för de virituella maskinerna??

Krav
Inte nödvändigt med 99.9999% uptime och datan kommer köras backup offsite. Men ser helst inte att datan försvinner om en av diskarna försvinner.

Har kollat på lite WD-red diskar som kanske skulle kunna vara något

Permalänk
Medlem

WD Red diskar i en raidz1/2/3 kommer inte ge dig någon rolig prestanda för VMs. Tänk också på att du inte kan addera diskar till en zfs pool hur som helst, utan man brukar prata om att ha flera olika zpools när man bygger ut. För bäst prestanda rekommenderas dock mirrors.

Förslagsvis kör du en separat zpool med flash-lagring för dina VMar och en ytterligare zpool för din mer statiska/mindre rörliga lagring.

Permalänk
Skrivet av skyw00lker:

Jag har lite koll på viritualisering och har använt proxmox/esxi sedan innan. Jag har dock lite frågor ang. zfs pool hur den skulle se ut samt prestandan över virituella maskiner.

Har du redan valt ZFS för att åstadkomma redundans/logiska volymer, eller kan andra lösningar vara tänkbara?

Skrivet av skyw00lker:

Kommer att ha rätt mycket data > 10TB efter ett tag men kommer räcka med 2TB för tillfället. Så behöver vara utbyggbart.
Behöver "snabbt" kunna ladda in data från databasen i R och kunna göra analyser på den.

De här >10TB, är det ett och samma dataset eller flera olika datamängder (loggar från olika system, tex)? Lagrat i en stor relationsdatabas, eller är det stora klumpar med rådata? Som du gör ett urval på, varvid urvalet laddas i en mindre relationsdatabas på snabbare lagringsmedia och sedan gör analys på i R?

Skrivet av skyw00lker:

Tänkte använda antingen någon serverversion av fedora eller ubuntu och köra viritualseringen med Qemu/Kvm. då jag endast har två/tre virituella maskiner. Någon zfs-pool för de virituella maskinerna??

Ska alla virtuella maskiner kunna nå samma dataset, eller har varje maskin "egna" data?

Skrivet av skyw00lker:

Har kollat på lite WD-red diskar som kanske skulle kunna vara något

Vilken produktserie av mekaniska diskar du ska använda är bland de minst viktiga besluten för hur nöjd du blir med slutresultatet.

Permalänk
Medlem
Skrivet av Hieronymus Bosch:

Har du redan valt ZFS för att åstadkomma redundans/logiska volymer, eller kan andra lösningar vara tänkbara?

Absolut inget spikat, är bara min egen kunskap som inte sträcker sig så långt vad gäller lagring, och ZFS dyker upp överallt.

Skrivet av Hieronymus Bosch:

De här >10TB, är det ett och samma dataset eller flera olika datamängder (loggar från olika system, tex)? Lagrat i en stor relationsdatabas, eller är det stora klumpar med rådata? Som du gör ett urval på, varvid urvalet laddas i en mindre relationsdatabas på snabbare lagringsmedia och sedan gör analys på i R?

Det kommer vara olika dataset, ihopklumpat i en relationsdatabas, så man skulle kunna lagra dessa på olika ställen? Men eftersom jag kontroll hur datan lagras och över mjukvaran som hämtar datan är det väldigt flexibelt också.

Skrivet av Hieronymus Bosch:

Ska alla virtuella maskiner kunna nå samma dataset, eller har varje maskin "egna" data?

Tanken är väl att alla maskiner som ska nå datan är "stateless" och laddar in datan på behov från databasen.

Skrivet av Hieronymus Bosch:

Vilken produktserie av mekaniska diskar du ska använda är bland de minst viktiga besluten för hur nöjd du blir med slutresultatet.

Ja antagligen! Slängde iväg ett köp på två WD-blue 1TB bara för att komma igång.

Permalänk
Skrivet av skyw00lker:

Absolut inget spikat, är bara min egen kunskap som inte sträcker sig så långt vad gäller lagring, och ZFS dyker upp överallt.

Ja, ZFS innehåller det mesta i funktionsväg, så det är praktiskt att välja det. Dock finns andra mekanismer som tillsammans gör ungefär allt som ZFS gör, och mer därtill. Sedan några år tillbaka har t ex Linux' logiska volymhanterare stöd för att använda SSD-enheter eller andra snabba lagringesenheter som läs- och skrivcache för större, långsammare lagringsenheter.

Både LVM och ZFS ger bra möjligheter att öka lagringsutrymme genom att lägga till fysisk lagring (hårddiskar). ZFS har dessutom bra integritetsskydd, men jag vet inte om du vinner något på det eftersom du tänkt lagra allt (?) skyddsvärt data i en relationsdatabas, som har eget integritetsskydd.

Skrivet av skyw00lker:

Tanken är väl att alla maskiner som ska nå datan är "stateless" och laddar in datan på behov från databasen.

Det låter som en bra idé att ha den samlade mängden grunddata på ett ställe med tillräckligt dataskydd och tillräcklig tillgänglighet. Återstår frågan hur data görs tillgängligt för analysmaskinerna, så att dessa får tillräcklig prestanda. Jag ser två egenskaper som kommer att styra designen:

  1. Kommer analysmaskinerna att vara intresserade av samma data vid samma tillfälle? Om så är fallet är det fördelaktigt att placera cache i någon form (ram, SSD, snabb disk) nära lagringen. Om de inte är intresserade av samma data är det nog bättre att placera en eventuell cachefunktion närmre de virtuella maskinerna.

  2. Working set: Hur mycket data är intressant per analysjobb? Om det i förväg inte går att säga vilken delmängd av data som behövs för att göra analysjobbet (eller om denna mängd inte är mycket mindre än den totala mängden data) är det kanske inte vettigt att göra jobbet i form av en ETL, utan analysjobbet får hämta data från central databas efter behov.
    Det här kommer att ha stor påverkan på hur IOPS och internminne disponeras mellan de virtuella maskinerna.

Kommer all nätverkstrafik att göras inom samma virtualiseringshost, eller behöver data flyttas mellan noder i ett kluster? Vilka överföringshastigheter kan man i så fall räkna med mellan de virtuella maskinerna?