3.5. Software-RAID

3.5.1. Hvad er RAID?

RAID er en metode til at slå flere diske sammen til én volume (dvs. én logisk disk); det kan gøres for at opnå et større brugerdrev eller for at højne sikkerheden ved redundans.

Derfor er der flere måder at kombinere diske til et RAID, og man har derfor vedtaget nogle RAID-levels.

3.5.2. Forskel mellem hardware- og software-RAID

RAID kan laves hardware- eller software-mæssigt. Det sikreste er via hardware eller med andre ord en RAID-controller.

3.5.2.1. Hardware-RAID

Ved at lade hardwaren styre diskene og "narre" styresystemet til at tro at der er tale om et eller flere logiske drev, behøver man ikke at bekymre sig så meget om opsætning af Linux, da hardwareproducenterne som regel har en brugervenlig opsætningsmenu installeret i kortets BIOS.

Ulempen er at disse kort som regel er dyre at anskaffe og ofte benytter sig af de noget dyrere scsi-diske. Med andre ord: En RAID-controller er ofte "bare" en avanceret scsi-controller.

3.5.2.2. Software-RAID

Her lader man et stykke software styre RAID, hvilket sparer en RAID-controller og det er muligt at blande scsi-diske med IDE eller kun benytte sig af IDE.

Ulempen er at man så selv skal konfigurere RAID og på Linux er det lidt besværligt.

3.5.3. Opsætning af spejlede diske.

Et disk-spejl er hvis man ønsker 2 diske som en logisk enhed, hvor begge diske indeholder samme data. Sikkerheden er her at hvis en disk står af, så kører den anden videre.

Hvis man ønsker yderligere sikkerhed, kan man benytte en ekstra reservedisk som vil kunne erstatte en nedbrudt disk i spejlet. På den måde undværer man kun sikkerheden i den tid som det tager RAID-softwaren at opbygge et nyt spejl på reservedisken.

3.5.3.1. Fremgangsmåde

Start i enkeltbrugertilstand - (linux s ved opstart eller init 1).

Opret partitionen på begge diske med fdisk. Filsystemet skal være "Linux RAID autodetect". Skriv enhedens nummer ned.

Opret en /etc/raidtab-fil, med indhold som kunne se således ud:


raiddev               /dev/md0
raid-level                   1
nr-raid-disks                2
chunk-size                   8
persistent-superblock        1
nr-spare-disks               0
    device           /dev/sdc1
    raid-disk                0
    device           /dev/sdd1
    raid-disk                1         

Opret RAID-enheden med kommandoen mkraid /dev/md0.

Opret filsystemet til din logiske enhed /dev/md0 med kommandoen mkfs /dev/md0.

Montér det logiske drev med f.eks. mount /dev/md0 /spejl

Opret en linje i /etc/fstab svarende til det nye spejl.


/dev/sda1  /           ext2    defaults        1 1
/dev/md0   /Spejl      ext2    defaults        1 2
/dev/sda5  /home       ext2    defaults        1 2
/dev/cdrom /mnt/cdrom  iso9660 noauto,owner,ro 0 0
/dev/sdb5  /vol2       ext2    defaults        1 2
/dev/sdb1  swap        swap    defaults        0 0
/dev/fd0   /mnt/floppy ext2    noauto,owner    0 0
none       /proc       proc    defaults        0 0
none       /dev/pts    devpts  gid=5,mode=620  0 0

Har du tidligere haft et RAID-system sat op på diskene, skal du bruge mkraid --force /dev/md0 til at initialisere diskene igen, også selvom de er slettede med fdisk. Husk dog at tage backup (f.eks. tar pcfz data.tar.gz /mount/data, før du anvender mkraid --force /dev/md0, da RAID-diskene slettes derved.

3.5.4. Opsætning af linear RAID

Betegnelsen Linear RAID betyder, at man ønsker at slå flere diske sammen til én logisk enhed og udnytte den samlede disk kapacitet. Det giver ikke større data-sikkerhed - kun større samlet plads. Et eksempel på en /etc/raidtab hvor 2 diske som slås sammen er følgende:


raiddev                /dev/md0
raid-level             linear
nr-raid-disks          2
chunk-size             8
persistent-superblock  1
nr-spare-disks         0
    device             /dev/sdc1
    raid-disk          0
    device             /dev/sdd1
    raid-disk          1         

3.5.5. raidhotadd og raidhotremove

Det er muligt at tilføje og fjerne diske fra RAID-systemet medens systemet kører. Det kan være en god ting, hvis filsystemet af en eller anden grund er gået i stykker på den ene af diskene. Det kan ske uden at disken rent fysisk har fejlet.

  Fjern disk

F.eks. fjern disken /dev/hdd1 fra RAID-systemet:


[root@linus /etc]# raidhotremove -a /dev/md0 /dev/hdd1

Nu kan man arbejde på disken med fdisk.

  Tilføj disk

Disken som er blevet repartitioneret, kan tages i brug således:


[root@linus /etc]# raidhotadd -a /dev/md0 /dev/hdd1

RAID-systemet vil automatisk blive opdateret, og et evt. spejl vil blive genopbygget medens produktionen kører, performance-nedgangen er lille selv ved IDE-diske.