Ik heb al heel wat topics doorgewerkt, maar ik hoop dat jullie me nog wat extra tips kunnen geven.
We zijn op zoek naar een nieuwe server voor een van onze databases. Momenteel is deze zo'n 66 GB groot, maar de verwachting is dat dat snel gaat groeien naar meer dan 100 GB. We moeten dus een machine hebben die enige tijd mee kan.
Naast 8 cores (dual quad), en een sloot geheugen (32gb) zal de nieuwe machine ook worden voor zien van de nodige IO infrastructuur. Een flinke array van disks dus.
Gezien de kosten is SSD nog niet interessant, maar wel 15K SAS disks. Deze bieden voor enterprice toepassingen toch wel de meeste io performance.
In onze database zal tamelijk veel geschreven worden, maar ook flink wat gelezen. Hierdoor is random read en write snelheid het meest belangrijke, liefst met zoveel mogelijk processen tegelijk.
Verder zal de gebruikte database Postgresql zijn.
Om het geheel ook nog schaalbaar te houden heb ik het plan gevat om Opelsolaris met ZFS te gebruiken. Dit maakt het schalen naar meer disks lekker makkelijk, en ook de nieuwe IO structuur en ingebouwde raid mogelijkheden zien er erg interessant uit.
Zo hoop ik de optimale balans te vinden tussen hardware en software raid.
Het plan is verder om gewoon een 3U server te nemen en deze gewoon tot de rand te vullen met disks, dus 16 SAS Seagate 15K5 disks. Later kan er altijd nog via FC een extra disk array bij gezet worden, maar ik gok dat dat voorlopig niet nodig zal zijn
Het OS zal op een RAID 1 array van twee disks gezet worden, Dit hoeft niet eens een ZFS pool te zijn. Verder is er nog een postgres transaction log dat zich thuis voelt op losse disks. Ook een RAID1 array, of misschien een raid 10 van 4 disks. Dan blijven er nog 10 of 12 disks over voor de echte database
Raid controller zal een Adaptec ICP 5165BR zijn. Helaas kan ik hier vrijwel geen informatie over vinden
, maar met een 8x PCI-e interface zal ie heel wat IO moeten kunnen genereren. Aangezien deze onderdeel is van een forse server gok ik dat ook de firmware goed ik elkaar steekt. Als iemand wat meer info heeft: graag!
Nu heb ik dus verschillende mogelijkheden:
1) HW raid 1 array's maken per twee disks en deze samenvoegen met dynamic striping van ZFS
2) zelfde als 1) maar dan volledig software raid via ZFS mirror en stripe
3) HW raid 10 array van 10 of 12 disks
4) twee RAID5 array maken en deze stripen met ZFS
5) twee raidz(2) arrays maken en deze stripen met ZFS
6) vier kleine raid5 of raidz arrays en deze stripen.
7) een groot raidz(2) array
een groot hardware array
Nu is mijn verwachting dat 1 t/m 3 de beste prestaties zullen leveren, maar je levert hier ook de meeste disk space in. Op zich is dat niet zo erg: disk space zal de komende tijd het probleem niet zijn.
Verder heb ik hier en daar gelezen dat het bij een grote hoeveelheid kwa performance de keuze voor een bepaald raid level niet veel meer uitmaakt. Ik heb echter grote twijfels aan deze uitstraak, en ook een aantal bronnen spreken dit tegen zoals hier: http://blogs.sun.com/roch/date/20060531 . Hier wordt duidelijk dat mirroring toch echt wel de beste random IO performance.
Misschien hebben jullie nog andere ideeën?
We zijn op zoek naar een nieuwe server voor een van onze databases. Momenteel is deze zo'n 66 GB groot, maar de verwachting is dat dat snel gaat groeien naar meer dan 100 GB. We moeten dus een machine hebben die enige tijd mee kan.
Naast 8 cores (dual quad), en een sloot geheugen (32gb) zal de nieuwe machine ook worden voor zien van de nodige IO infrastructuur. Een flinke array van disks dus.
Gezien de kosten is SSD nog niet interessant, maar wel 15K SAS disks. Deze bieden voor enterprice toepassingen toch wel de meeste io performance.
In onze database zal tamelijk veel geschreven worden, maar ook flink wat gelezen. Hierdoor is random read en write snelheid het meest belangrijke, liefst met zoveel mogelijk processen tegelijk.
Verder zal de gebruikte database Postgresql zijn.
Om het geheel ook nog schaalbaar te houden heb ik het plan gevat om Opelsolaris met ZFS te gebruiken. Dit maakt het schalen naar meer disks lekker makkelijk, en ook de nieuwe IO structuur en ingebouwde raid mogelijkheden zien er erg interessant uit.
Zo hoop ik de optimale balans te vinden tussen hardware en software raid.
Het plan is verder om gewoon een 3U server te nemen en deze gewoon tot de rand te vullen met disks, dus 16 SAS Seagate 15K5 disks. Later kan er altijd nog via FC een extra disk array bij gezet worden, maar ik gok dat dat voorlopig niet nodig zal zijn
Het OS zal op een RAID 1 array van twee disks gezet worden, Dit hoeft niet eens een ZFS pool te zijn. Verder is er nog een postgres transaction log dat zich thuis voelt op losse disks. Ook een RAID1 array, of misschien een raid 10 van 4 disks. Dan blijven er nog 10 of 12 disks over voor de echte database
Raid controller zal een Adaptec ICP 5165BR zijn. Helaas kan ik hier vrijwel geen informatie over vinden
Nu heb ik dus verschillende mogelijkheden:
1) HW raid 1 array's maken per twee disks en deze samenvoegen met dynamic striping van ZFS
2) zelfde als 1) maar dan volledig software raid via ZFS mirror en stripe
3) HW raid 10 array van 10 of 12 disks
4) twee RAID5 array maken en deze stripen met ZFS
5) twee raidz(2) arrays maken en deze stripen met ZFS
6) vier kleine raid5 of raidz arrays en deze stripen.
7) een groot raidz(2) array
Nu is mijn verwachting dat 1 t/m 3 de beste prestaties zullen leveren, maar je levert hier ook de meeste disk space in. Op zich is dat niet zo erg: disk space zal de komende tijd het probleem niet zijn.
Verder heb ik hier en daar gelezen dat het bij een grote hoeveelheid kwa performance de keuze voor een bepaald raid level niet veel meer uitmaakt. Ik heb echter grote twijfels aan deze uitstraak, en ook een aantal bronnen spreken dit tegen zoals hier: http://blogs.sun.com/roch/date/20060531 . Hier wordt duidelijk dat mirroring toch echt wel de beste random IO performance.
Misschien hebben jullie nog andere ideeën?
Do diamonds shine on the dark side of the moon :?
