Artikel top billede

(Foto: Computerworld)

Sæt turbo på dit usb-flashdrev med RAID

Byg et RAID med en lille bunke usb-flashdrev og en smule
Linux.

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.

Uanset hvad man kalder dem – flashdrev, usb-nøgler, datasticks – kommer vi ikke uden om, at usb-drev er blevet et af mest praktiske stykker ekstraudstyr, man kan have i lommen. Moores Lov har forvandlet de næsten ubrugelige 8MB-pudsigheder, man kunne få i 2000, til 8GB-monsterlagre. I mange henseender har de erstattet disketten, og de udkonkurrerer cd’er og dvd’er.

Hvorfor skulle vi så ikke bruge disse transportable lagerenheder som små harddiske? Man kunne kombinere et par gamle flashdrev ved hjælp af RAID og få en hastighedsforøgelse, sikkerheden ved mirroring eller blot den enkle fordel, der ligger i at udvide mulighederne og øge sin tilgængelige lagerplads.

Når man vil arbejde med usb og RAID, lurer farerne overalt. Man risikerer for eksempel at komme til at fjerne et drev ved et uheld. Og man risikerer at reducere drevenes levetid med overdreven skriveaktivitet. Men hvis man ser bort fra det, er der ingen grund til, at man ikke skulle kunne lave et usb-flashdrev i RAID.

Problemer med Windows

I første omgang ville vi have det til at virke med Windows. Windows understøtter evnen til at håndtere RAID, men vi kom ud for en række problemer. Det største bestod i, at Windows behandler usb-drev på en særlig måde og nægter at betragte dem som egentlige harddiske. Windows afviser at lade noget eksternt drev blive behandlet som ”rigtige” harddiske. Man kan bruge RAID over eksterne Firewiredrev via en modifikation af registreringsdatabasen, men det duer ikke til usb-drev.

Hvis man konverterer partitionerne til dynamiske enheder, kan man måske narre Windows til at lade en oprette et RAID til dem, men den mulighed virker ikke med flashdrev. Vores sidste mulighed var at prøve at tvinge Windows til at bruge alternative drivere. Vi brugte et Hitachi Microdrive, og selvom installationen så fornuftig ud, løste det ikke det problem, at Windows stadig insisterer på at betragte drevene som eksterne og nægter os at konvertere dem til dynamiske diske. Så var vi lige vidt.

Linuxvenlig løsning

Den indlysende løsning var at vende sig mod et mere fleksibelt operativsystem. Og det viser sig, at det er ret nemt at oprette og køre RAID-system i Linux. Vi havde håbet på en idiotsikker peg-og-klik-gui. Men selv om visse Linuxdistributioner (eksempelvis CentOS) omfatter en grafisk grænseflade til drevhåndtering, er Linux bestemt ikke et område, der gør den slags nemmere. Det viste sig, at det meste af verden bruger MDADM, der er nået til version 2.6.x. Det er kun en kommandolinjegrænseflade, men den fungerer udmærket.

Vi brugte Freecom 8GB-Data Bars til at eksperimentere med. Man behøver dog ikke at være så ekstravagant. Enhver bunke usb-flashdrev burde fungere, selv om kapaciteten muligvis bliver begrænset til niveauet for det laveste drev. Der er imidlertid intet i vejen for at prøve et mirrored eller striped array med blot to flashdrev.

For at gøre det enkelt holder vi os til Ubuntu v8. Det første trin består i at installere den nødvendige software. Vi bruger Gnome Partition Editor og MDADM, som man finder på http://neil.brown.name/blog/mdadm. Ved en Ubuntuterminal skal man skrive:

sudo apt get install mdadm

sudo apt get install gparted

Nu skal man begynde at bygge sin usb-RAID. Først skal man dobbelttjekke, at stierne gælder for alle drevene for at forberede dem til brug i et RAID. Alt andet lige burde de være /dev/sdb, /dev/sdc og så videre. I terminalen skriver man:

sudo gparted

Brug menuen øverst til højre til at tjekke alle usb-drevene og skriv deres navne ned. I øvrigt kan man lade dem være. Hvis man vil blive hos kommandolinjen, kan man tjekke status for alle ens drev ved at skrive:

Fdisk-|

Nu er alt parat til, at man kan bygge et RAID ud fra drevene. Vi begynder med et basalt striped array med to drev. Det kalder vi Mdo. Vi bruger MDADM og skriver det følgende i terminalen:

sudo mdadm --create --verbose / dev/md0 --level=0 --raid -devices=2 /dev/sdb /dev/sdc

Lad os hurtigt gennemgå switchene. Først er der ”--create”, der instruerer MDADM om, at vi vil lave et RAID, ”--level=0” angiver den type RAID, der skal laves, og endelig fortæller ”--raid-devices=2” MDADM, hvor mange fysiske drev der er tale om. Og /dev/mdo angiver det drevnavn, man bruger. De andre er navnene på de fysiske drev, der bliver brugt til at bygge array’et.

Formatér et RAID

Nu mangler vi blot at formatere RAID’et med et filsystem. Vi tjekker om det virker ved at skrive disse to linjer ind i terminalen:

sudo mkfs.ext2 /dev/md0

sudo mount /dev/md0 /mnt

Det burde være nok til at få vores usb-RAID op at køre via filsystemet som en MNT-mappe. Det er nemt at justere MDADM, så det passer til ens behov. Vil man ændre RAID-typen, bruger man ”--level=1” for at oprette et mirrored array eller ”--level-5”, hvis man foretrækker et paritybeskyttet array med mindst tre drev. Hvis man har ydelse på hjernen og kører fire usb-drev, skal man prøve ”--level=0” med ”--raid-devices=4” for at maksimere sin stripe-ydelse.

Hvis man på et tidspunkt vil skifte array, skal man først afmontere array’et og bede MDADM om at stoppe det. Det klarer disse to kommandoer:

sudo umount /dev/md0

sudo mdadm stop /dev/md0

Selv om vi kun har kørt enkle læsetest med HDPARM-kommandoen ”-t /dev/md0”, var der er par områder, som vi var interesserede i at teste. Et af dem var, hvordan båndbredden ville sprede sig på tværs af usb-host-controllerne. Det er velkendt, at båndbredden for NAND-hukommelse ikke er stor. Men ville fire forbundet med en enkelt usb-værts-controller skabe en flaskehals, hvis den var forbundet med en usb-hub med fire porte? Eller ville ydelsen blive bedre, hvis drevene blev spredt ud og sluttet til deres egne værtscontrollere?

Det viste sig, at overførslen for en usb-nøgle var 11,9MB/s. For et striped array med to enheder nåede vi op på 46,4MB/s. Mens et mirrored aray med to enheder klarede 14,5MB/s. Derimod nåede et striped array med fire enheder kun op på 45,7MB/s, selv når det var spredt over separate usb-værts-controllere. Vi vil aldrig anbefale at bruge en sådan opsætning som den centrale harddisk, men denne gennemgang viser, at man alligevel kan hente nogle gevinster, når det gælder ydelse.

Vi har ikke tænkt os at gå i dybden med RAID, men det er værd at nævne, at denne form for software-RAID kan være lige så effektiv som mange billige såkaldte ”hardware”-RAID-implementationer, der er integreret på visse bundkort.

De laver alle beregningerne i software, og den eneste hardware, der kræves, skal simpelthen boote computeren og overlade styringen til operativsystemets drivere.


[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Det skal du bruge...

[/themepacific_accordion_section]
[/themepacific_accordion]