Delen via


Software RAID configureren in Linux

Het is een veelvoorkomend scenario voor het gebruik van software-RAID op virtuele Linux-machines in Azure om meerdere gekoppelde gegevensschijven als één RAID-apparaat weer te geven. Dit kan doorgaans worden gebruikt om de prestaties te verbeteren en een verbeterde doorvoer mogelijk te maken in vergelijking met het gebruik van slechts één schijf.

Gegevensschijven koppelen

Er zijn twee of meer lege gegevensschijven nodig om een RAID-apparaat te configureren. De belangrijkste reden voor het maken van een RAID-apparaat is het verbeteren van de prestaties van uw schijf-IO. Op basis van uw I/O-behoeften kunt u ervoor kiezen schijven te koppelen die zijn opgeslagen in onze Standard Storage, met maximaal 500 IO/ps per schijf of onze Premium-opslag met maximaal 5000 IO/ps per schijf. In dit artikel wordt niet beschreven hoe u gegevensschijven inricht en koppelt aan een virtuele Linux-machine. Zie het artikel Een schijf koppelen op Microsoft Azure voor gedetailleerde instructies over het koppelen van een lege gegevensschijf aan een virtuele Linux-machine in Azure.

Belangrijk

Meng schijven van verschillende grootten niet, dit zou ertoe leiden dat de prestaties van de raidset worden beperkt tot die van de traagste schijf.

Het hulpprogramma mdadm installeren

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES en openSUSE

    zypper install mdadm
    

De schijfpartities maken

In dit voorbeeld maken we één schijfpartitie op /dev/sdc. De nieuwe schijfpartitie wordt /dev/sdc1 genoemd.

  1. Beginnen fdisk met het maken van partities

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Druk op 'n' bij de prompt om een new-partitie te maken:

    Command (m for help): n
    
  3. Druk vervolgens op 'p' om een primary-partitie te maken:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Druk op 1 om partitienummer 1 te selecteren:

    Partition number (1-4): 1
    
  5. Selecteer het beginpunt van de nieuwe partitie of druk op <enter> om de standaardwaarde te accepteren en de partitie aan het begin van de vrije ruimte op het station te plaatsen.

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Selecteer de grootte van de partitie, bijvoorbeeld typ '+10G' om een partitie van 10 gigabyte te maken. Of druk op <enter> om een enkele partitie te maken die het hele station omvat:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Wijzig vervolgens de id en type van de partitie van de standaard-id '83' (Linux) in id 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Schrijf ten slotte de partitietabel naar het station en sluit fdisk af:

    Command (m for help): w
    The partition table has been altered!
    

De RAID-matrix maken

  1. Het volgende voorbeeld zal "striping" (RAID-niveau 0) toepassen op drie partities die zich bevinden op drie afzonderlijke gegevensschijven (sdc1, sdd1, sde1). Nadat u deze opdracht hebt uitgevoerd, wordt een nieuw RAID-apparaat met de naam /dev/md127 gemaakt. Houd er ook rekening mee dat als deze gegevensschijven eerder deel uitmaakten van een andere niet-functionerende RAID-array, het mogelijk is dat het nodig is om de --force parameter toe te voegen aan de mdadm opdracht.

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Het bestandssysteem maken op het nieuwe RAID-apparaat

    CentOS, Oracle Linux, SLES 12, openSUSE en Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 : boot.md inschakelen en mdadm.conf maken

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Opmerking

    Mogelijk is opnieuw opstarten vereist nadat u deze wijzigingen hebt aangebracht op SUSE-systemen. Deze stap is niet vereist voor SLES 12.

Het nieuwe bestandssysteem toevoegen aan /etc/fstab

Belangrijk

Als u het /etc/fstab-bestand onjuist bewerkt, kan dit leiden tot een niet-opstartbaar systeem. Als u niet zeker weet wat u moet doen, raadpleegt u de documentatie van de distributie over het bewerken van dit bestand. U wordt ook aangeraden een back-up van het bestand /etc/fstab te maken voordat u het bewerkt.

  1. Maak het gewenste koppelpunt voor uw nieuwe bestandssysteem, bijvoorbeeld:

    sudo mkdir /data
    
  2. Bij het bewerken van /etc/fstab moet de UUID worden gebruikt om te verwijzen naar het bestandssysteem in plaats van de apparaatnaam. Gebruik het blkid hulpprogramma om de UUID voor het nieuwe bestandssysteem te bepalen:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Open /etc/fstab in een teksteditor en voeg een vermelding toe voor het nieuwe bestandssysteem, bijvoorbeeld:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Ofwel op SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Sla vervolgens /etc/fstab op en sluit deze.

  4. Test of de /etc/fstab-vermelding juist is:

    sudo mount -a
    

    Als deze opdracht resulteert in een foutbericht, controleert u de syntaxis in het bestand /etc/fstab.

    Voer vervolgens de mount opdracht uit om te controleren of het bestandssysteem is gekoppeld:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Optioneel) Noodveilig-opstartinstellingen

    fstab-configuratie

    Veel distributies bevatten de nobootwait of nofail koppelparameters die kunnen worden toegevoegd aan het /etc/fstab-bestand. Met deze parameters kunnen fouten optreden bij het koppelen van een bepaald bestandssysteem en kan het Linux-systeem blijven opstarten, zelfs als het RAID-bestandssysteem niet goed kan worden gekoppeld. Raadpleeg de documentatie van uw distributie voor meer informatie over deze parameters.

    Voorbeeld (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Linux-opstartparameters

    Naast de bovenstaande parameters kan de kernelparameter 'bootdegraded=true' het systeem laten opstarten, zelfs als de RAID als beschadigd of gedegradeerd wordt beschouwd, bijvoorbeeld als een gegevensstation per ongeluk van de virtuele machine wordt verwijderd. Dit kan standaard ook resulteren in een niet-opstartbaar systeem.

    Raadpleeg de documentatie van uw distributie over het correct bewerken van kernelparameters. In veel distributies (CentOS, Oracle Linux, SLES 11) kunnen deze parameters bijvoorbeeld handmatig worden toegevoegd aan het '/boot/grub/menu.lst'-bestand. Op Ubuntu kan deze parameter worden toegevoegd aan de GRUB_CMDLINE_LINUX_DEFAULT variabele op '/etc/default/grub'.

TRIM/UNMAP-ondersteuning

Sommige Linux-kernels ondersteunen TRIM/UNMAP-bewerkingen om ongebruikte blokken op de schijf te verwijderen. Deze bewerkingen zijn voornamelijk handig in standaardopslag om Azure te informeren dat verwijderde pagina's niet meer geldig zijn en kunnen worden verwijderd. Het verwijderen van pagina's kan kosten besparen als u grote bestanden maakt en deze vervolgens verwijdert.

Opmerking

RAID geeft mogelijk geen verwijderingsopdrachten uit als de segmentgrootte voor de matrix is ingesteld op minder dan de standaardwaarde (512 KB). Dit komt doordat de unmap-granulariteit op de host ook 512 KB is. Als u de segmentgrootte van de matrix hebt gewijzigd via de parameter van --chunk= mdadm, kunnen TRIM/unmap-aanvragen worden genegeerd door de kernel.

Er zijn twee manieren om TRIM-ondersteuning in te schakelen op uw Linux-VM. Zoals gebruikelijk raadpleegt u uw distributie voor de aanbevolen aanpak:

  • Gebruik de koppelingsoptie discard in /etc/fstab, bijvoorbeeld:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • In sommige gevallen kan de optie gevolgen hebben voor de discard prestaties. U kunt de fstrim opdracht ook handmatig uitvoeren vanaf de opdrachtregel of deze toevoegen aan uw crontab om regelmatig uit te voeren:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data