Software-RAID configureren in Linux

Het is een veelvoorkomend scenario om software-RAID te gebruiken op virtuele Linux-machines in Azure om meerdere gekoppelde gegevensschijven als één RAID-apparaat te presenteren. 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 primaire reden voor het maken van een RAID-apparaat is om de prestaties van uw schijf-IO te verbeteren. Op basis van uw IO-behoeften kunt u ervoor kiezen om 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. Dit artikel gaat niet in op het inrichten en koppelen van gegevensschijven aan een virtuele Linux-machine. Zie het Microsoft Azure-artikel Een schijf koppelen 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 langzaamste 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 standaardinstelling te accepteren om 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, typ bijvoorbeeld '+10G' om een partitie van 10 gigabyte te maken. Of druk op <enter> een enkele partitie maken die het hele station beslaat:

    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. In het volgende voorbeeld worden drie partities gestreept (RAID-niveau 0) die zich op drie afzonderlijke gegevensschijven bevinden (sdc1, sdd1, sde1). Na het uitvoeren van deze opdracht wordt een nieuw RAID-apparaat met de naam /dev/md127 gemaakt. Houd er ook rekening mee dat als deze gegevensschijven we eerder deel uitmaakten van een andere afgevallen RAID-matrix, het mogelijk 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 - schakel boot.md in en maak mdadm.conf

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

    Notitie

    Opnieuw opstarten kan vereist zijn nadat u deze wijzigingen op SUSE-systemen hebt aangebracht. Deze stap is niet vereist op SLES 12.

Voeg het nieuwe bestandssysteem toe aan /etc/fstab

Belangrijk

Het onjuist bewerken van het bestand /etc/fstab kan leiden tot een systeem dat niet kan worden opgestart. 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 naam van het apparaat. 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
    

    Of 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 vermelding /etc/fstab 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 ervoor te zorgen dat het bestandssysteem is gekoppeld:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Optioneel) Parameters voor failsafe opstarten

    fstab-configuratie

    Veel distributies bevatten de nobootwait parameters of nofail koppelparameters die kunnen worden toegevoegd aan het bestand /etc/fstab. Deze parameters maken fouten mogelijk bij het koppelen van een bepaald bestandssysteem en zorgen ervoor dat het Linux-systeem kan blijven opstarten, zelfs als het RAID-bestandssysteem niet correct 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 toestaan om op te starten, zelfs als de RAID wordt beschouwd als beschadigd of gedegradeerd, bijvoorbeeld als een gegevensstation per ongeluk van de virtuele machine wordt verwijderd. Standaard kan dit 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 aan het/boot/grub/menu.lst bestand worden toegevoegd. 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 nuttig 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.

Notitie

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 granulariteit op de host ook 512 kB is. Als u de segmentgrootte van de matrix hebt gewijzigd via de parameter van mdadm --chunk= , worden trim-/unmap-aanvragen mogelijk genegeerd door de kernel.

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

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

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

    Ubuntu

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

    RHEL/CentOS

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