yoel caspersen blog bloghoved

Harddisk søger server uden vendor lock-in

Vi står for at skulle gennemføre et projekt for en kunde, hvor vi skal gemme en masse videodata på et antal servere og gøre det tilgængeligt for et større antal brugere efterfølgende.

Til det formål skal jeg bruge en server, og jeg skal bruge noget storage.

Serveren modtager hvert døgn lige omkring 1 TB data fra netværket, som skal skrives til filsystemet og gemmes i 24 timer. I disse 24 timer vil brugerne i gennemsnit nå at læse indholdet ca. 3 gange - så på et normalt døgn skal der læses 3 TB data fra filsystemet, og belastningen peaker ved ca. 750 Mbit/s og ca. 600 samtidige read sessions med random offset.

Det er derfor essentielt, at hardwaren under filsystemet kan holde til en kontinuerlig, tung belastning. Systemet skal kunne skalere tæt på uendeligt ved at tilføje flere nodes til netværket, så en SAN-løsning er på forhånd udelukket.

En node i netværket må koste max 15.000 kr. inkl. storage, og prisen skal holdes i det niveau selv om vi starter med blot 10 servere. Der skal bruges mellem 500 GB og en TB storage-plads pr. server.

Jeg har overvejet at lade mig inspirere af Varnish og gemme data i file backed virtual memory, men jeg har endnu ikke haft tid til at kode den nødvendige software. Derfor er vi p.t. nødt til at anvende et setup med en hjemmestrikket webserver, der læser data fra filsystemet og streamer til netkortet via Linux' sendfile-kald.

En stabil disk

Da jeg er fan af at se på, hvad andre har haft succes med, har jeg taget et kig på den nyeste harddisk-statistik fra backup-firmaet Backblaze.

Generelt ser det rigtig godt ud - harddiske er blevet meget bedre på det seneste, og derfor er der som noget nyt også harddiske, som har opnået 0 % fejlrate i første kvartal. Hvis man har fulgt med i statistikken fra Backblaze gennem årene vil man se, at især HGST har en god track record.

Jeg har selv tidligere haft stor succes med at anvende en 3 TB NAS-disk fra HGST. Disken er en 3,5" SATA-disk med en pris på lige omkring 900 kr, og når prisen er så lav, har vi råd til at lave et RAID 10 med 4 diske, som giver optimal read performance til en overkommelig pris.

Og her kommer min udfordring - hvor finder man en server, som tager helt almindelige, 3,5" SATA-diske?

Det startede ellers rigtig godt tilbage i de glade 0'ere, hvor jeg første gang kom i kontakt med servere fra Sun Microsystems. Suns x2100-model havde et par kraftige harddisk-beslag, som fulgte med serveren, hvor man kunne skrue en helt almindelig SATA-harddisk fast, og på den måde var man helt fri til at vælge den disk, man havde brug for.

Så kom der en nyere model af serveren, og nu var harddisk-beslaget pludselig erstattet af en tynd, ubrugelig placeholder i plastic. Man måtte købe en disk fra Sun, som i mellemtiden var blevet til Oracle, hvor det rigtige beslag fulgte med, og beslagene kunne ikke købes i løs vægt.

Selve interfacet i serveren var dog stadig standard SATA, så hvis man var ligeglad med hvad gæsterne i datacentret tænkte, kunne man pille plastic-placeholderen ud af serveren og skubbe en løs harddisk ind i stedet uden at fastgøre den med beslaget.

Samtlige andre rack-monterede servere, jeg har set, har brugt dyre, specialdesignede harddiske, som kun passer ind i lige netop den specifikke server. Selv hvis man køber en billig Fujitsu-server til 6.000 kr, skal man hoste op med ca. 1.500 kr. for en disk med kun 500 GB plads.

Det er en strategi, hvor printer-producenterne i mange år har vist vejen - køb udstyret billigt (sådan da) mod at betale overpris for forbrugsstofferne. Det første fix er altid gratis.

Nu kommer vinderspørgsmålet til Version2's skarpe læsere:

Hvor finder jeg en server, hvor jeg selv får lov at bestemme hvilken disk jeg vil installere?

Kommentarer (46)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Baldur Norddahl

Du kan samle din server ud af komponenter på en halv time. Vælg et motherboard, cpu, ram, kabinet og fyld op med diske. Design systemet så det er fejltolerant overfor en server der lukker ned, så er det mindre vigtigt med hotswap og dual psu.

Du kan få ok 2 unit kabinetter. 1 unit kan også lade sig gøre men er typisk lidt mere låst og kræver særlige CPU blæsere med mere.

Jeg bruger 3 unit kabinetter men det er en anvendelse hvor vi kun skal bruge få servere, så pladsen er ikke så vigtig. Fordelen ved 3 unit kabinetter er at pci kort kan stå oprejst i stedet for at skulle monteres i en riser.

Maciej Szeliga

Du kan samle din server ud af komponenter på en halv time. Vælg et motherboard, cpu, ram, kabinet og fyld op med diske. Design systemet så det er fejltolerant overfor en server der lukker ned, så er det mindre vigtigt med hotswap og dual psu.


Jeg skulle lige til at skrive det samme...

Jeg vil dog anbefale at smide et Adaptec SAS/SATA RAID kort i, de på MB indbyggede kontrollere kan normalt kun lige RAID0, RAID1 og RAID5.

Jens Dueholm Christensen

Hvad med at lave et setup med Ceph? Du kan anvende consumer "servere", og det kan skalere i det uendelige.


For at få 750Mbit (selv blot i peaks) fra et ceph-cluster skal man desværre hurtigt op i SSD cache pools og 10GBit netkort - og man skal desuden være varsom med at sammensætte nodes (fysiske maskiner) korrekt for at komme derop af.

Det er dog fuldt ud muligt (jeg har set benchmarks med 2Gbit/s kontinuert læsning/skrivning til et 12-nodes ceph cluster med ren SSD), men hvis opgaven ikke indeholder mulighed for at afprøve Ceph som teknologi og der er mulighed for at fejle et par gange inden man er i mål, så er det nok et forkert sted at starte.

Yoel Caspersen Blogger
Jens Dueholm Christensen

Jeg har selv - med stor succes - købt maskiner fra Dell uden diske i.

Jeg har fx. købt en stak Dell R320'ere, hvor jeg efterfølgende selv indkøbte 4x 3,5" carriers samt 2x 2,5"->3,5" adaptors for at få sat et par 2,5" diske og 3,5" diske i maskinerne.

Dell vil - som så mange andre vendors - ikke sælge løse carriers (det hedder de rammer til diske på Dell'sk) og 2,5"-3,5" omformere, men det er til at skaffe fra 3. part til relativt billige penge, og kvaliteten er stortset den samme.

Måden jeg sammenlignede på var at købe en enkelt maskine med diske (både 3,5" og 2,5") for at have noget at sammenligne med, og købe lidt forskellige udgaver af erstatnings-modeller fra 3. parts leverandører.

Carriers blev fundet på amazon.co.uk (en dyrt købt erfaring er dog at vælge firmaer med hjemadresse i england fremfor i asien - ellers kan forsendelsen tage meget meget længe), og 2,5"->3,5" adaptors blev købt hos en lokal dansk hardware pusher, som havde præcis de samme som Dell selv bruger - og til en billigere pris end på amazon.

Da jeg havde en original Dell carrier uden disk liggende ved siden af en 3. parts udgave var det ikke til at se forskel hvis det ikke var for "4TB SATA" klistermærket på fronten.

Alt fra finish på metalkanterne, materiale, farve og dimensioner var ens, og jeg bestilte straks en god stak mere..

Yoel Caspersen Blogger

For at få 750Mbit (selv blot i peaks) fra et ceph-cluster skal man desværre hurtigt op i SSD cache pools og 10GBit netkort - og man skal desuden være varsom med at sammensætte nodes (fysiske maskiner) korrekt for at komme derop af.

Jeg har selv overvejet SSD, men ud over prisen, som bliver voldsomt høj sammenlignet med NAS-diske, er jeg bekymret for om en SSD kan holde til de mange skrivninger. Er der nogen her, der har erfaring med dette? Som nævnt skal der skrives ca. 1 TB pr. dag, så det svarer til en fuld overskrivning - hver eneste dag året rundt.

HGST-disken kan i øvrigt fint levere 750 Mbit/s i et RAID 10 med Linux-baseret software RAID på en 5 år gammel entry-level Oracle-server. Indtil videre er det netværkskortet, der sætter begræsningen på serveren, men jeg tror ikke vi når meget længere op end 1,5 Gbit/s, så det føles lidt overkill at smide 10 Gbit/s netkort i maskinen.

Jens Dueholm Christensen
Yoel Caspersen Blogger

Hvad er dit krav til densitet? Antal units per server.

Er det fikseret at det skal være 8 harddiske per server? Der kan være pænt mange diske i et 3u kabinet.

I dag har vi 4 diske pr. unit, og vi har et throughput på 750 Mbit/s. Det forhold vil jeg gerne bevare - så hvis vi kommer op på fx 3 units vil det være fornuftigt med 12 diske og 2,25 Gbit/s throughput.

Yoel Caspersen Blogger

Jeg ville uden at blinke kaste mig over Intel S3x10 diskene.

Fx. er en 400GB S3710 (http://ark.intel.com/products/84238/) rated til 8,3PB skrivninger hvilket svarer til 10 fulde overskrivninger per dag i 5 år.

Tak for info - så kan SSD'en sandsynligvis fint holde til loadet. Men den er stadig voldsomt dyr - jeg slog lige prisen op.

En 800 GB S3710 koster ca. 6.500 kr. eller lige over 8 kr. pr. GB. En HGST 3 TB disk til 900 kr. koster 30 øre pr. GB - eller en faktor 27 til forskel.

Medmindre S3710 kommer i en særlig Enterprise-udgave, stiger prisen i øvrigt med en faktor 3, hvis den skal passe til en Lenovo-server ;-)

Man kan selvfølgelig argumentere for, at vi ikke kan sammenligne pladsen på HGST-disken med pladsen på en SSD, når vi kun har brug for mellem 500 GB og 1 TB, og de resterende 2 TB på HGST'en derfor er spildplads. Men der skal nok laves nogle beregninger på, hvor meget ekstra throughput man kan få på en SSD - det er i vores case også med til at afgøre, om det er en god forretning eller ej, da det jo har indflydelse på antallet af servere, vi skal bruge.

Brian Hansen

Plejer at være ligeglade med hvad du stopper i af disk.
Har i skrivende stund et P2000 SAN med et par OCZ SSD'er (blandt resten af diskene), og de spiller helt fint.
De to diske i RAID1 lammetæver selv 10 x 15k RPM SAS diske i RAID10, hvis vi f.eks. snakker random IOPS.
Evt. nye RAIDS bliver ikke med roterende diske her, det er helt udelukket :P

Har også haft et lab kørende med en DL380 G5, baseret på aflagte laptop diske.
Eneste man skulle være obs. på her, var at diske skulle være samme vendor og model.
Man kunne godt RAID'e tilfældige diske, men der opstod pudsige scenarier hvor IOPS nærmest frøs i flere sekunder.
HGST 500gb diske har den kørt op til 8stk af, det er nu ca. 5år siden og de kører alle endnu :)

Kenn Nielsen

Jeg har overvejet at lade mig inspirere af Varnish og gemme data i file backed virtual memory, men jeg har endnu ikke haft tid til at kode den nødvendige software.

Hvad med en file-backed RAM-disk , som - måske mere er en cache ?

EPRD-Projektet - Eventually Persistent RAMdisk virker faktisk rigtigt godt.

Det kan allokere x GB som 'RAM-disk' med y TB backing som enten er block eller fil.

Samtidigt vil man opleve en IOPS som er væsentligt højere end hvad rust-pladerne vil være med til.

K

Anders Johansen
Jonas Larsen

HP har flere forskellige server modeller der tager Non hotplug diske (NHP) Det er HP snak for helt normale diske. Det svinger lidt om de kommer med tomme trays eller om du skal købe dem ved siden af. Men alle normale 3,5 tomme diske kan bruges.

Heðin Ejdesgaard Møller

SuperMicro serverne kan du få skruet sammen efter behov, noget alla https://www.supermicro.nl/products/nfo/FatTwin.cfm i 4 node config er sansynligvis interessant.

I den anden grav har de chassis der klarer op til 90LFF diske.

Hvis du overvejer CEPH, så bør du kigge nærmere på følgende vedr. cache-tier
http://docs.ceph.com/docs/master/rados/operations/cache-tiering/

Yoel Caspersen Blogger

Hvad med en file-backed RAM-disk , som - måske mere er en cache ?

EPRD-Projektet - Eventually Persistent RAMdisk virker faktisk rigtigt godt.

Det kan allokere x GB som 'RAM-disk' med y TB backing som enten er block eller fil.

Samtidigt vil man opleve en IOPS som er væsentligt højere end hvad rust-pladerne vil være med til.

Spændende ide - men kan du (eller andre) med mere indsigt end mig forklare, hvorfor det gør nogen forskel i forhold til blot at skrive filerne direkte til filsystemet i Linux og læse dem igen derfra?

Linux bruger jo i forvejen al tilgængelig hukommelse som buffer, så er en EPRD ikke bare en anden rækkefølge at gøre præcis det samme på?

Min ide med at lægge filerne i en memory mapped fil skulle være at spare det overhead, der er i at skulle vedligeholde filsystemet, samt tillade serveren at spare på skrive-kræfterne ved at undlade forced commits og lade kernen selv bestemme, hvornår det er tid til at offloade data til disk.

Yoel Caspersen Blogger

SuperMicro serverne kan du få skruet sammen efter behov, noget alla https://www.supermicro.nl/products/nfo/FatTwin.cfm i 4 node config er sansynligvis interessant.

SuperMicro ser også interessante ud - har du selv erfaring med dem?

Hvis du overvejer CEPH, så bør du kigge nærmere på følgende vedr. cache-tier
http://docs.ceph.com/docs/master/rados/operations/cache-tiering/

CEPH kunne godt være et forsøg værd en dag, men jeg vurderer umiddelbart, at der er mange ubekendte i den løsning i forhold til at køre med rene standalone-nodes med kendt konfiguration.

Yoel Caspersen Blogger

Køb en supermicro eller Quanta server med plads til 70 diske , og så lav mindre raid sets.

Burde blive billigere og fyldt mindre , dog bliver blast radius lidt større

Der er mange gode argumenter for at skalere op, men det er vigtigt at man har en strategi for også at skalere ud, for ellers rammer man loftet på et tidspunkt. Det er måske fint nok i et statisk setup, hvor man kender load m.v. om 6 måneder fra nu, men min erfaring med systemer i vækst siger mig, at det er vigtigere at kunne skalere ud på sigt.

Dels kan man undgå spild (man står ikke med en ubrugelig, underdimensioneret server, når man har købt storebroderen fordi man skal opgradere), dels stiger omkostningerne lineært med systemets load og er derfor dejligt forudsigelige.

I den konkrete opgave er en ny servertype en ubekendt, som skal testes af, så det går ikke at hoppe ombord i den store model med det samme.

Kenn Nielsen

Spændende ide - men kan du (eller andre) med mere indsigt end mig forklare, hvorfor det gør nogen forskel i forhold til blot at skrive filerne direkte til filsystemet i Linux og læse dem igen derfra?

Jeg har ikke indsigten til helt at se hvorfor det hele virker mere 'sprødt'.

Som POC har jeg brugt det på en KVM-host med 5400rpm 2TB diske.
Noget tyder på at diskfabrikanterne de-optimerer FW på consumer-diske, så disse ikke kan levere ret mange IOPS, men alligevel et højt sequential sustained throughput.
Med EPRD kan man tilsyneladende udnytte den høje transfer rate, samtidigt med at applikationerne ikke sløves af få IOPS.
Det virkede over al forventning, og fik lov at 'leve' i et par år.

Men dit scenarie er nok lidt anderledes med mange sekventielle writes, efterfulgt af mange sekventielle reads.

Måske en stor readahead-buffer vil være nok ?

K

Yoel Caspersen Blogger

Har også haft et lab kørende med en DL380 G5, baseret på aflagte laptop diske.
Eneste man skulle være obs. på her, var at diske skulle være samme vendor og model.
Man kunne godt RAID'e tilfældige diske, men der opstod pudsige scenarier hvor IOPS nærmest frøs i flere sekunder.
HGST 500gb diske har den kørt op til 8stk af, det er nu ca. 5år siden og de kører alle endnu :)

Fedt med lidt praktiske erfaringer ;-)

Jeg går stærkt ud fra, det har været en Adaptec RAID-controller eller lignende, du har haft siddende i kassen, når det er en DL380-server (i øvrigt en af mine gamle kendinge, jeg har altid været glad for stabiliteten i HP-servere).

Er der nogen, der har erfaring med software-RAID vs hardware-RAID? Når jeg spørger, så er det fordi vi stort set udelukkende kører software-RAID baseret på Linux. Det må alt andet lige nedsætte performance sammenlignet med hardware-RAID, men til gengæld tillader det at man mixer disk-typerne, hvilket bør gøre systemet mere robust, da produktionsfejl på diskene sjældent vil optræde samtidig.

Yoel Caspersen Blogger

Som POC har jeg brugt det på en KVM-host med 5400rpm 2TB diske.
Noget tyder på at diskfabrikanterne de-optimerer FW på consumer-diske, så disse ikke kan levere ret mange IOPS, men alligevel et højt sequential sustained throughput.
Med EPRD kan man tilsyneladende udnytte den høje transfer rate, samtidigt med at applikationerne ikke sløves af få IOPS.
Det virkede over al forventning, og fik lov at 'leve' i et par år.

Interessant teori - jeg forventede egentlig, at IOPs på en gammeldags harddisk var en funktion af RPM og antal læse-hoveder og skiver, men det kan da godt tænkes at harddisk-producenterne med vilje indbygger en lille forsinkelse i firmwaren på consumer-diske. Det burde så i princippet kunne mod'es, ligesom jeg husker det var populært at gøre på DVD-drev, så regionskodningen forsvandt.

Men det lyder da som et godt bud på en optimering af et cache-lager, der fylder mere end der er plads til i hukommelsen. Vi bruger i forvejen RAM-disks i de tilfælde, hvor cachen er lille nok, og selv om der helt sikkert er noget overhead i at køre et virtuelt filsystem oven på RAM, har det speedet udviklingsprocessen gevaldigt op. Jeg gad dog godt vide, hvor meget ekstra throughput vi kan opnå, hvis vi tager det sidste skridt og mmap'er cachen i stedet.

Hvor hurtig er Varnish efterhånden blevet? Det er vel nærmest at betragte som den kanoniske implementering af det vi har brug for ;-)

Brian Hansen

Fedt med lidt praktiske erfaringer ;-)
Jeg går stærkt ud fra, det har været en Adaptec RAID-controller eller lignende, du har haft siddende i kassen, når det er en DL380-server (i øvrigt en af mine gamle kendinge, jeg har altid været glad for stabiliteten i HP-servere).


P400 og P800 fra HP, svjh. P400 er onboard, P800 er indstikskort af PCI-X typen.
Jeg mener de er LSI2000 baserede, og efter min mening meget nemme at have med at gøre.
VMWare ESXi har f.eks. drivere til dem, så man kan se RAID status osv.
SNMP traps understøttes svjh. også.

Flemming Riis

I den konkrete opgave er en ny servertype en ubekendt, som skal testes af, så det går ikke at hoppe ombord i den store model med det samme.

Det er standard hardware , ville ikke være bekymret for det

Smid rack unit pris , strøm , køl ind i et regne ark og tage den med scale units

Prisen for 32U med 12 diske kontra 14-5 med plads til 70+ er typisk en god busines case , og hvis du ikke fylder op rammer du heller ikke alle andre flaske halse ved at bruge en kasse

Jens Jönsson

Det er nok ikke relevant for Yoels use case. Men ellers får du det også ved at bruge ZFS og en SSD til intent log.

Jeg ville da tage et kig på f.eks. http://www.freenas.org/ eller https://nexenta.com/, som netop bruger ZFS. Tror der er mange der benytter dem til high performance videoredigeringslager.
Nu har jeg ikke lavet målinger på performance på min egen boks, for det kører hurtigt nok (tm) til mit formål, men jeg bruger f.eks. en Nexenta server med 2 x 8 Gbit/s FC kort i, 4 x SSD diske, samt 18 stk. 1 Tb SAS diske og 96 Gb RAM.
Det kan godt nok puste noget data igennem. Bedste af det hele er at det er "standard" hardware der kan købes nede på hjørnet.

SuperMicro laver kompatible servere og benytter LSI controllere (HBA'er).

Skruet rigtigt sammen kan man både vokse i sådan setup, samt levere en vild performance.
Jeg kan starte > 12 Windows 2012 servere samtidigt op på 2-3 sekunder i mit VMWare cluster hvor Nexenta boksen er shared storage...

Heðin Ejdesgaard Møller

SuperMicro ser også interessante ud - har du selv erfaring med dem?


Jeg har brugt deres twin serie til vmware hosts og nogle af de mindre tower løsninger til standalone hypervisor.
De første twins er nu ca. 2½ år og der har ikke været nogen problemer med dem.
Du kan finde en "positiv liste" over testede harddiske til et givent bundkort eller controller, på deres hjemmeside, så du slipper også for at betale faktor 3 gebyret for "Cisco|Dell|HP" klitermærket, for diskene.
IPMI interfacet er standard på langt de fleste servere og der er pr. default iso mount, persistent console access mv. som hos flere andre producenter koster en ekstra licens.
Selv deres atom C2750 løsniger har IPMI.

CEPH
Enig, der er en del mere kompleksitet i ceph i forhold til en standalone løsning.
Fordelen er så at den skallerer både op og ud, efter behov.
Jeg har hørt fra redhat/ceph at der er >=10PB løsninger kørende i produktion, ude i verden.
Det burde være tæt nok på dit behov for

"...Systemet skal kunne skalere tæt på uendeligt ved at tilføje flere nodes til netværket"


ceph integrerer også uden videre med openstack, aws, qemu mv.

Referancer
http://docs.ceph.com/docs/master/rbd/rbd/
http://docs.ceph.com/docs/master/radosgw/

En ide om hvordan det kan skalere. :)
https://cds.cern.ch/record/2015206/files/CephScaleTestMarch2015.pdf

Victoria Hansen

Må det være brugt, vil jeg klart anbefale en HP DL120 G7, med en HP P410 raid controller (1GB FBWC) og et HP NC550SFP 10GbE netkort. da du får meget for pengene med dette setup.

Det er en low-end server, men den understøtter en quad core xeon E3 og 32 GB RAM.

RAID controlleren tager almindelige ikke-brandede SAS og SATA diske så der kan bruges billige nearline SAS diske hvis ønsket, den leverer snilt 600MB/s read, 350MB/s write til 4 kapable diske i RAID 10. (personlige erfaringer)

Netkortet er gammelt, men leverer fint 6Gb/s x2.

Server: ~4000kr
P410: ~800kr
NC550SFP: ~300kr
4stk 3TB SATA Diske: 4000kr

Total: ~10000kr

Log ind eller Opret konto for at kommentere
Brugerundersøgelse Version2
maximize minimize