Konfigurera Software RAID på Linux

Det är ett vanligt scenario att använda programvaru-RAID på virtuella Linux-datorer i Azure för att presentera flera anslutna datadiskar som en enda RAID-enhet. Detta kan vanligtvis användas för att förbättra prestanda och möjliggöra bättre dataflöde jämfört med att bara använda en enda disk.

Ansluta datadiskar

Två eller flera tomma datadiskar behövs för att konfigurera en RAID-enhet. Den främsta orsaken till att skapa en RAID-enhet är att förbättra prestanda för disk-I/O. Baserat på dina I/O-behov kan du välja att ansluta diskar som lagras i vår Standard Storage, med upp till 500 I/ps per disk eller vår Premium-lagring med upp till 5 000 I/ps per disk. Den här artikeln går inte in närmare på hur du etablerar och kopplar datadiskar till en virtuell Linux-dator. Mer information om hur du ansluter en tom datadisk till en virtuell Linux-dator på Azure finns i Artikeln om att bifoga en disk i Microsoft Azure.

Viktigt

Blanda inte diskar av olika storlekar, vilket skulle leda till att raiduppsättningens prestanda begränsas till den långsammaste disken.

Installera verktyget mdadm

  • Ubuntu

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

    sudo yum install mdadm
    
  • SLES och openSUSE

    zypper install mdadm
    

Skapa diskpartitionerna

I det här exemplet skapar vi en enskild diskpartition på /dev/sdc. Den nya diskpartitionen kallas /dev/sdc1.

  1. Börja fdisk skapa partitioner

    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. Tryck på "n" i kommandotolken för att skapa en n ew-partition:

    Command (m for help): n
    
  3. Tryck sedan på "p" för att skapa en rimarypartition:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Tryck på "1" för att välja partitionsnummer 1:

    Partition number (1-4): 1
    
  5. Välj startpunkten för den nya partitionen eller tryck <enter> på för att acceptera standardinställningen att placera partitionen i början av det lediga utrymmet på enheten:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Välj storleken på partitionen, till exempel "+10G" för att skapa en partition på 10 gigabyte. Eller tryck på <enter> Skapa en enda partition som sträcker sig över hela enheten:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Ändra sedan ID och type för partitionen från standard-ID :t '83' (Linux) till ID 'fd' (Automatisk Linux-raid):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Skriv slutligen partitionstabellen till enheten och avsluta fdisk:

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

Skapa RAID-matrisen

  1. I följande exempel "stripe" (RAID-nivå 0) finns tre partitioner på tre separata datadiskar (sdc1, sdd1, sde1). När du har kört det här kommandot skapas en ny RAID-enhet med namnet /dev/md127 . Observera också att om dessa datadiskar vi tidigare ingick i en annan nedstyckt RAID-matris kan det vara nödvändigt att lägga till parametern --force i mdadm kommandot:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Skapa filsystemet på den nya RAID-enheten

    CentOS, Oracle Linux, SLES 12, openSUSE och Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 – aktivera boot.md och skapa mdadm.conf

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

    Anteckning

    En omstart kan krävas när du har gjort dessa ändringar på SUSE-system. Det här steget krävs inte på SLES 12.

Lägg till det nya filsystemet i /etc/fstab

Viktigt

Om filen /etc/fstab redigeras felaktigt kan det leda till ett system som inte kan startas. Om du är osäker läser du distributionens dokumentation för att få information om hur du redigerar filen på rätt sätt. Vi rekommenderar också att en säkerhetskopia av /etc/fstab-filen skapas innan du redigerar.

  1. Skapa önskad monteringspunkt för det nya filsystemet, till exempel:

    sudo mkdir /data
    
  2. När du redigerar /etc/fstab ska UUID användas för att referera till filsystemet i stället för enhetsnamnet. Använd verktyget blkid för att fastställa UUID för det nya filsystemet:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Öppna /etc/fstab i en textredigerare och lägg till en post för det nya filsystemet, till exempel:

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

    Eller på SLES 11:

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

    Spara och stäng sedan /etc/fstab.

  4. Testa att posten /etc/fstab är korrekt:

    sudo mount -a
    

    Om det här kommandot resulterar i ett felmeddelande kontrollerar du syntaxen i filen /etc/fstab.

    Kör mount sedan kommandot för att se till att filsystemet är monterat:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Valfritt) Felsäkra startparametrar

    fstab-konfiguration

    Många distributioner innehåller antingen de nobootwait parametrar eller nofail monteringsparametrar som kan läggas till i /etc/fstab-filen. Dessa parametrar möjliggör fel vid montering av ett visst filsystem och gör att Linux-systemet kan fortsätta att starta även om det inte går att montera RAID-filsystemet korrekt. Mer information om dessa parametrar finns i dokumentationen för distributionen.

    Exempel (Ubuntu):

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

    Linux-startparametrar

    Utöver parametrarna ovan kan kernelparametern "bootdegraded=true" tillåta att systemet startar även om RAID uppfattas som skadat eller degraderat, till exempel om en dataenhet oavsiktligt tas bort från den virtuella datorn. Som standard kan detta också resultera i ett system som inte kan startas.

    Se distributionens dokumentation om hur du redigerar kernelparametrar korrekt. I många distributioner (CentOS, Oracle Linux, SLES 11) kan dessa parametrar till exempel läggas till manuellt i filen "/boot/grub/menu.lst". På Ubuntu kan den här parametern läggas till i variabeln GRUB_CMDLINE_LINUX_DEFAULT på "/etc/default/grub".

STÖD FÖR TRIM/UNMAP

Vissa Linux-kernels stöder TRIM/UNMAP-åtgärder för att ignorera oanvända block på disken. Dessa åtgärder är främst användbara i standardlagring för att informera Azure om att borttagna sidor inte längre är giltiga och kan ignoreras. Om du tar bort sidor kan du spara kostnader om du skapar stora filer och sedan tar bort dem.

Anteckning

RAID kanske inte utfärdar ignorera-kommandon om segmentstorleken för matrisen är inställd på mindre än standardvärdet (512 KB). Det beror på att avkartans kornighet på värden också är 512 KB. Om du ändrade matrisens segmentstorlek via mdadms --chunk= parameter kan TRIM/unmap-begäranden ignoreras av kerneln.

Det finns två sätt att aktivera TRIM-stöd på din virtuella Linux-dator. Som vanligt läser du distributionen för den rekommenderade metoden:

  • Använd monteringsalternativet discard i /etc/fstab, till exempel:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • I vissa fall kan alternativet discard få prestandakonsekvenser. Du kan också köra fstrim kommandot manuellt från kommandoraden eller lägga till det i crontab för att köra regelbundet:

    Ubuntu

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

    RHEL/CentOS

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