Artikel top billede

(Foto: Computerworld)

Lav din egen nas

Tag en håndfuld gamle drev, og gør dem til en sikker filserver.

Af Redaktionen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

I løbet af det seneste års tid har vi draget fordel af det utrolige prisfald inden for traditionelle roterende harddiske. Indtil de tragiske oversvømmelser i Thailand var priserne faldet til 400 kroner pr. terabyte. Det havde fået mange af os til at opgradere vores systemer med nye drev, og det flød rundtomkring med gamle drev på 160GB til 500GB. Det oplagte spørgsmål er: Hvad skal vi gøre med disse drev?

Det giver ingen mening blot a smide dem væk. Det ville være spild af gode drev, og måske ligger der personlige data på dem. Man kan bruge dem i en ekstra pc, men vi har valgt at bruge dem til en lagerserver. Ideen bag dette valg bygger på tre tanker: For det første er disse drev for små og for langsomme til at gøre nytte i et eksternt drevkabinet. For det andet er de gamle, og der er risiko for drevnedbrud. Efter tre år lever drev normalt på lånt tid. For det tredje har vi alle brug for sikker og problemfri lagerplads.

Den mest oplagte løsning er Jbod, men det er også den mindst tiltrækkende. Som lagerarray er den rædsom, den gør ikke noget mærkbart ved redundans, hastighed eller komfort, ud over at man kan smække flere drev i. Hvis et drev svigter, mister man alle data på drevet. Hvis man bruger striping,mister man alle data på Jbod’en.

Den bedste løsning er raid, men ikke raid 0, for den bruger striping og giver dermed ingen redundans. Heller ikke raid 1, for den giver kun basal mirroring. Raid 01 dur heller ikke, for den er et mirror af et striped array. Raid 5 er den foretrukne opsætning, for den bruger striping med distribueret paritet.

Det vil sige, at den bryder data op på tværs af flere drev og opnår accelereret læsning/skrivning, men den muliggør redundans ved at oprette en paritetsblok, der bliver distribueret over alle drevene. Hvis et drev svigter, kan det pågældende array blive genopbygget, og alle data kan gendannes fra paritetsblokkene. Hurra!

Opnår vi perfektion?

Det lyder ideelt, ikke? Men vi kan gøre det endnu bedre. Raid er faktisk meget gammelt, og i dag findes der overlegne løsninger. ZFS (Zettabyte File System) kan lagre en vanvittig mængde data, der måles på zettabyte-niveau. Det er 2 i halvfjerdsindstyvende. ZFS blev lanceret af Sun Microsystems i 2005, og det er således opdateret og kombinerer drevstyring, dataintegritet og snapshots plus raid-z-funktionalitet.

Hvis du synes, at det lyder forfærdelig indviklet, skal du ikke være bange. Den bedste implementering til hjemmebrug er FreeNAS fra www.freenas.org. Det er et strålende operativsystem, der bygger på FreeBSD, og det er beregnet til netværksforbundne lagerenheder. Der har været understøttelse til ZFS siden 2008, men den blev betydeligt forbedret i begyndelsen af 2011.

Der kan opstå visse situationer, som vi ikke dækker her. Den første er pata-drev, men vi går ud fra, at de er for gamle og for langsomme til at komme i betragtning. Det betyder ikke, at det er umuligt, men man bliver begrænset til højst fire enheder og potentielt to på nyere bundkort. Et nyere problem knytter sig til ssd og hybridkonfiguration – det ligger uden for denne artikels emne – idet ZFS muliggør acceleration af læseadgang eller logging ved at vælge et enkelt drev til at lagre disse data. Vi nævner denne funktion i den generelle gennemgang, men den sigter på specielle løsninger.

Tid til at kløve hår

Den vigtige del af det at oprette en lagerpulje består i at finde ud af, hvordan man bedst arrangerer drevene. På trods af fordelene ved ZFS er der ikke tale om trylleri. Den arver stadig raid 5’s grundlæggende problem med at fiksere den generelle drevstørrelse på arrayets laveste kapacitet. Du snerrer sikkert nu. Den bedste mulighed er at oprette et antal raid 1-mirrors, der kombinerer drev med identisk eller næsten identisk størrelse. Derefter skal man lade FreeNAS stripe dem alle sammen som et raid 10 for fire drev eller raid-z for flere.

Måden, det foregår på, er lidt uelegant, for man skal oprette to enheder med samme navn. FreeNAS striper dem automatisk sammen i en enkelt lagerpulje. Man kan bruge processen med raid-z-arrays på nøjagtig samme måde. Det er nyttigt, for når der er oprettet et raid-z, er det ikke nemt at tilføje drev, men det er nemt at tilføje et ekstra raid-z og lade FreeNAS klare bøvlet med at stripe på tværs af dem alle sammen. Hvis dataene ikke er vigtige, kan man selvfølgelig vælge ZFS-striping. Det maksimerer lagerkapaciteten på bekostning af dataintegritet.

Hvis man bruger det til at lagre data lokalt, til filbackup eller til data fra cloud computing (for eksempel lokale Steam-spil), kan det være en acceptabel risiko med henblik på billigt og rigeligt netværkslager. Hvis du har en bunke aldrende drev tilovers, kan det være en god måde at bruge dem på, indtil de går i graven.

Du skal ikke bruge ret mange dele

1. Først hardware
FreeNAS er beregnet til at boote og køre fra en ssd-enhed, enten et flashkort eller en usb-nøgle. Det frigiver en drevport og desuden drevplads. ZFS er krævende, og du skal bruge mindst 1GB ram, men helst 4GB, og bootenheden skal have en størrelse på 16GB. FreeNAS’ standardfilsystem kræver kun en 2GB-bootenhed og mindre end 256MB systemhukommelse.

2. Opsætning af controlleren
Vi har allerede nævnt raid mange gange, men i forbindelse med hardwarekonfiguration er raid ikke vigtig. I bios skal man konfigurere eventuelle værts-controllere til at køre i AHCI- eller IDE-tilstand. Det er sommetider anført som Jbod-tilstand, hvis det er en raid-controller. ZFS-systemet er en softwarebaseret raid-løsning, der håndterer al striping og paritetslagring foruden andre handlinger på højt niveau.

3. En bunke diske
Når det hele skal forbindes, kan det blive temmelig rodet. Vi anbefaler varmt, at man bruger et godt kabelstyringssystem. Kabelstrips er en oplagt løsning, og strøm- og dataforbindelse kan stadig bruges, selvom et drev svigter. ZFS understøtter hot-swapping på AHCI-kompatible controllere og drev, så man kan reparere og opdatere løbende.

Sådan imponerer du damerne med dit eget delte redundante ZFS-array

1. Tag stilling til opdelingen

Du skal vælge, hvordan drevene skal monteres. Raid 5 mister omkring 30 procent af sin lagerkapacitet til paritet med et array på tre drev. Forholdet for pladseffektivitet er 1-1/R: Jo flere drev, desto mere effektiv er opsætningen. Mirrors mister 50 procent til mirror-drevet. Men de giver begge stærk dataintegritet. Hvis du er skør nok, kan du stripe dem sammen og blive ved, indtil et af dem ryger.

2. Opret lageret
I dette eksempel striper vi to mirror-arrays, men den samme proces kan også bruges med raid-z-arrays. Hvis du vil bruge flere drev, kan du nemt fortsætte ad den vej. Fra FreeNAS’ web-interface skal du vælge Storage-sektionen. Klik på knappen ’Create Volume’, find på et arraynavn, og vælg de drev, der skal med i det første array. Ved mirror-arrays skal det være et lige antal drev.

3. ZFS-muligheder
Når drevene til dit array er markeret, skal du vælge ZFS-muligheden og knappen ’Mirror’ for at oprette arrayet. Vælg den mulighed for raid-z. Du bemærker måske en anden række valgmuligheder, der henfører til de andre drev, der ikke er markeret. Du kan tilføje specifikke cache-drev for at øge læse/skriveydelsen. Idealet er at bruge et ssd-drev, men det henvender sig navnlig til kommercielle arrays.

4. Opret en stripe
Det næste skridt er ikke særlig intuitivt på grund af den relevante sektion i FreeNAS’ interface. Når du skal tilføje det næste stripede mirror, skal du tilbage til trin to og derefter tilføje de tiloversblevne drev for at oprette det nye mirror-array. Giv det samme navn som det første mirror. FreeNAS striper dem automatisk sammen. Du kan se drevenes tilstand i arrayet ved at klikke ’View Disks’.

5. Håndter arrayet
Under ’Storage’ finder du ’Logical Volume’ med ikoner, hvormed du kan styre en række nøglefunktioner. Det første ikon med det røde X giver dig mulighed for at slette lageret og gendanne de rå drev. Det næste Scrub-ikon tjekker asynkront og retter eventuelle fejl på drevene. De sidste to ikoner sætter dig i stand til at se status for arrayet og drevene i det.

6. Opret en deling
Når du skal oprette en Windows-deling, skal du klikke på den øverste ’Service’-knap og derefter aktivere CIFS. Klik på skruenøgleikonet ved siden af, og juster Workgroup og Destination til dine egne værdier. Klik dernæst på ’Shares’, klik ’Add Windows Share’, og skriv et passende navn. Klik på ’Browse’, vælg ZFS-arrayet, og klik ’OK’. Hvis du vil begrænse adgangen under Account, kan du tilføje dine egne grupper og brugere.

Tro os: Det er nemt at lægge sit foretrukne NAS-operativsystem på rigtig hardware

1. Iso-images

Hvis du ikke allerede har gjort det, skal du downloade det seneste FreeNAS fra www.freenas.org. Operativsystemet skal installeres eller køre direkte fra en usb-nøgle eller et flashkort. Den nemmeste måde at installere det hele på består i at brænde imaget på en cd og installere den på systemet fra et optisk drev. Hvis du kun vil afprøve FreeNAS, skal du starte VirtualBox, så klarer det installationen i et virtuelt miljø.

2. Bios-indstillinger
Det er vigtigt, at dit systems bios understøtter boot fra eksterne usb-enheder. Placeringen varierer fra bios til bios. Men enten den specielle ’Boot Menu’ eller ’Advanced Settings’ skal understøtte usb-drev eller tilsvarende. Et system, der ikke er over ti år gammelt, burde virke fint. Når du har installeret operativsystemet, skal du sikre dig, at det er markeret.

3. Direkte imageskrivning
Man kan også brænde imaget direkte på bootenheden, for eksempel på et usb-drev, men det er mere komplekst, end vi bryder os om. Du skal bruge filen amd64.Full_install.xz og ikke iso’en fra downloadsiden. Du skal også bruge en imageskriver. Til Linux er det DD-kommandoen, til Windows skal du downloade Image Writer fra https://launchpad.net/win32-image-writer/+download. Den burde klare sagerne.

4. Brændt barn skyr ilden
Led Image Writer til imagefilen og måldrevet, så klarer den resten. Bortset fra at du skal vælge den som bootdrev, er det eneste problem, du kan opleve, en inkompatibel netværksadapter. Der er ikke meget andet at gøre end at tilføje et nyt og kompatibelt netværkskort. FreeNAS rummer en omfattende liste over kompatibel hardware her: http://wiki.freenas.org/freenas_users_hardware
#compatible_hardware_lists.

Som nævnt er vi ikke helt begejs-trede for FreeNAS som løsning. Ideelt set ville vi have noget, der er så bekvemt og uden størrelsesbegrænsninger som et Jbod, men med driftssikkerhed som et raid. Vi har ikke mødt noget, der kan levere det.

Det vigtigste ved FreeNAS og ZFS er imidlertid at levere en meget fleksibel og robust lagerpulje uden at true dataintegriteten. Harddiske kommer tilsyneladende ud for uundgåelig databeskadigelse for hver 1,2 petabyte, der bliver overført.

Det lyder enormt, men der findes datacentre, som oplever disse fejl hvert kvarter.
Derfor er det vigtigt at sørge for, at disse forældede drev ikke tager vigtige dokumenter med sig, hvis de skulle dø. Og de dør på et tidspunkt. En vigtig del af det at maksimere ens lagerkapacitet er at kombinere de bedste drev. Raid-z begrænser den maksimale individuelle drevkapacitet til det mindste drev i arrayet, og det er derfor vigtigt at gruppere drev med samme størrelse i logiske enheder. Dem kan man så stripe sammen og opnå en større lagerpulje.

Fleksible raids

FreeNAS er måske ikke altid en ønskværdig løsning, navnlig hvis man hænger på Windows som det primære operativsystem på en hjemmeserver, men man har to nemme muligheder. Den første er at bygge ind i Windows via Storage | Disk Management-konsollen. Der er mulighed for span, stripe og mirror med selve Windows. Et bedre Windows-alternativ er FlexRAID (www.flexraid.com), der implementerer en meget fleksibel raid-løsning som en Windows-tjeneste. Den giver ZFS-lignende virtuel lagerstyring, men uden Windows. Det vil være en god løsning, hvis man allerede kører et Windows-system og vil tilknytte en lagerpulje.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Projektets mål

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Det skal du bruge:

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Jargonen oversat

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Toptips

[/themepacific_accordion_section]
[/themepacific_accordion]