Hinweis:

Logische RAID-Volumes auf Oracle Linux konfigurieren

Einführung

Mit LVM RAID können Sie ein logisches Volume (LV) erstellen, das mehrere physische Geräte verwendet, um die Leistung zu verbessern oder Geräteausfälle zu tolerieren. In LVM handelt es sich bei den physischen Geräten um physische Volumes (PVs) in einer einzelnen Volume-Gruppe (VG).

In diesem Tutorial werden die Oracle Linux Volume Manager-Serviceprogramme verwendet, um ein logisches RAID-Volume zu erstellen und dann einen Datenträgerfehler zu beheben.

Ziele

Voraussetzungen

Jedes Oracle Linux 8-System mit den folgenden Konfigurationen:

Laborumgebung einrichten

Hinweis: Wenn Sie die kostenlose Übungsumgebung verwenden, finden Sie unter Oracle Linux Lab - Grundlagen Informationen zu Verbindungen und anderen Nutzungsanweisungen.

  1. Wenn noch nicht geschehen, öffnen Sie ein Terminal und verbinden Sie mit jeder oben genannten Instanz über ssh.

    ssh oracle@<ip_address_of_instance>
    
  2. Prüfen Sie, ob die Block-Volumes vorhanden sind.

    sudo lsblk
    

    In der Ausgabe für die freie Übungsumgebung müssen /dev/sda für das vorhandene Dateisystem und die verfügbaren Festplatten /dev/sdb, /dev/sdc, /dev/sdd und /dev/sde angezeigt werden. Es gibt auch zwei zusätzliche Datenträger (/dev/sdf, /dev/sdg), die wir später verwenden werden.

Physisches Volumen (PV)

  1. Erstellen Sie die physischen Volumes (PV) mit den verfügbaren Datenträgern.

    sudo pvcreate -v /dev/sd[b-e]
    

    Führen Sie den Befehl mit der Option -v aus, um Verbose-Informationen abzurufen.

  2. Prüfen Sie die PV-Erstellung.

    sudo pvs
    

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda3  ocivolume lvm2 a--  45.47g     0 
      /dev/sdb             lvm2 ---  50.00g 50.00g
      /dev/sdc             lvm2 ---  50.00g 50.00g
      /dev/sdd             lvm2 ---  50.00g 50.00g
      /dev/sde             lvm2 ---  50.00g 50.00g
    

Volume-Gruppe (VG)

  1. Erstellen Sie die Volume-Gruppe (VG) mit den neu erstellten physischen Volumes.

    sudo vgcreate -v foo /dev/sd[b-e]
    
  2. Prüfen Sie die VG-Erstellung.

    sudo vgs
    

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo vgs
      VG             #PV #LV #SN Attr   VSize   VFree  
      foo              4   0   0 wz--n- 199.98g 199.98g
      ocivolume        1   2   0 wz--n-  45.47g      0 
    

Logisches Volume (LV)

  1. Erstellen Sie das logische RAID-Volume (LV).

    sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
    
    • --type: Legen Sie die RAID-Ebene fest. LVM unterstützt die RAID-Ebenen 0, 1, 4, 5, 6 und 10.
    • -i: Legen Sie die Anzahl (n) der Stripes (Geräte) für ein logisches RAID 4/5/6-Volume fest. Für eine raid5-LV sind n+1-Geräte erforderlich.
    • -L: Gesamtgröße des RAID-Arrays.
    • -n: Name des RAID-Arrays.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
      Using default stripesize 64.00 KiB.
      Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents).
      Logical volume "rr" created.
    

    Weitere Informationen finden Sie in der lvmraid(7)-Manpage.

  2. Prüfen Sie die LV-Erstellung.

    sudo lvdisplay foo
    

    Die Ausgabe zeigt alle logischen Volumes, die in der Foo-VG enthalten sind.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvdisplay foo
      --- Logical volume ---
      LV Path                /dev/foo/rr
      LV Name                rr
      VG Name                foo
      LV UUID                vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2
      LV Write Access        read/write
      LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000
      LV Status              available
      # open                 0
      LV Size                5.00 GiB
      Current LE             1281
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     1024
      Block device           252:10
    
  3. Zeigen Sie den LV-Typ an.

    sudo lvs -o name,segtype foo/rr
    
    • Der Befehl lvs kann den vollständigen LV-Pfad als Option verwenden, um die Ergebnisse einzugrenzen.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr
      LV     Type 
      rr     raid5
    

Dateisystem erstellen

  1. Erstellen Sie ein XFS-Dateisystem auf dem RAID-LV.

    sudo mkfs.xfs -f /dev/foo/rr
    
    • -f: Erzwingt das Überschreiben eines vorhandenen Dateisystems.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr
    meta-data=/dev/foo/rr            isize=512    agcount=8, agsize=163952 blks
             =                       sectsz=4096  attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=1311616, imaxpct=25
             =                       sunit=16     swidth=48 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=4096  sunit=1 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    

    Hinweis: Das XFS-Dateisystem kann seine Größe nach der Erstellung nicht reduzieren. Der Befehl xfs_growfs kann jedoch erweitert werden.

RAID-LV einhängen

  1. Mounten Sie das Dateisystem.

    sudo mkdir -p /u01
    sudo mount /dev/foo/rr /u01
    
  2. Melden Sie die Verwendung des Dateisystemdatenträgers.

    df -h
    

    Beispielausgabe:

    [oracle@ol-node01 ~]$ df -h
    Filesystem                         Size  Used Avail Use% Mounted on
    ...
    /dev/mapper/foo-rr                 5.0G   69M  5.0G   2% /u01
    

Ändern der Größe eines RAID-LV

Es gibt verschiedene Möglichkeiten, die Größe eines RAID-LV zu ändern:

Wichtig: Das Verringern eines LV ist riskant und kann zu Datenverlust führen. Wenn Sie ein XFS-Dateisystem auf dem LV ausführen, sollten Sie die LV nicht verkleinern, da XFS die Dateisystemgröße nicht reduziert.

Erhöhen der RAID-LV-Kapazität

  1. Erhöhen Sie die RAID-LV-Größe mit dem verfügbaren freien Speicherplatz in der VG auf 10 G.

    sudo lvresize -L 10G foo/rr
    

    Um die Größe um 10G zu erhöhen, verwenden Sie stattdessen die Option -L +10G.

  2. Prüfen Sie, ob der LV auf 10G erhöht wurde.

    sudo lvs foo/rr
    

    In der LSize-Datei sollte 10g angezeigt werden.

  3. Vergrößern Sie das Dateisystem.

    sudo xfs_growfs /u01
    
  4. Melden Sie die aktualisierte Datenträgernutzung des Dateisystems.

    df -h
    
  5. Prüfen Sie den RAID-Synchronisierungsstatus, bevor Sie fortfahren.

    Warnung: Wenn Sie zu schnell mit dem nächsten Schritt fortfahren, wird möglicherweise ein Fehler angezeigt, da foo/rr nicht synchron ist.

    Dieser Fehler tritt auf, wenn die Synchronisierung nach dem Ändern der Größe des RAID-LV oben nicht abgeschlossen wurde.

    Prüfen Sie den RAID-LV mit watch sudo lvs foo/rr, und warten Sie, bis das Feld Cpy%Sync 100% erreicht. Nachdem Cpy%Sync 100% erreicht hat, beenden Sie den Befehl watch mit ctrl-c.

Weitere Informationen finden Sie auf den Manpages lvresize(8), lvextend(8) und lvreduce(8).

Stripes auf RAID-LV erhöhen

Wenn Sie die Anzahl der Stripes in einem RAID-LV ändern, erhöht sich die Gesamtkapazität und ist unter RAID4/5/6/10 möglich. Jeder zusätzliche Stripe erfordert eine gleiche Anzahl von nicht zugewiesenen physischen Volumes (Geräte) innerhalb der Volume-Gruppe.

  1. Prüfen Sie, welche physischen Volumes (PV) in VG-Foo vorhanden sind.

    sudo pvs
    

    Aus der Ausgabe /dev/sdb sind /dev/sdc, /dev/sdd und /dev/sde alle mit VG-Foo verknüpft.

  2. Prüfen Sie, ob nicht verwendete physische Volumes vorhanden sind.

    sudo pvdisplay -m /dev/sd[b-e]
    

    Beispielausgabe:

      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               foo
      PV Size               50.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              12799
      Free PE               11944
      Allocated PE          855
      PV UUID               Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT
       
      --- Physical Segments ---
      Physical extent 0 to 0:
        Logical volume	/dev/foo/rr_rmeta_0
        Logical extents	0 to 0
      Physical extent 1 to 854:
        Logical volume	/dev/foo/rr_rimage_0
        Logical extents	0 to 853
      Physical extent 855 to 12798:
        FREE
    ...
    

    Der Befehl pvdisplay mit der Option -m zeigt die Zuordnung von physischen Extents zu logischen Volumes und speziellen Extents an. Das PV /dev/sdb in der Beispielausgabe zeigt physische Extents, die mit dem RAID-LV verknüpft sind. Dasselbe gilt für /dev/sdc, /dev/sdd und /dev/sde.

  3. Eine weitere PV zur VG hinzufügen.

    Da das vorhandene RAID-LV alle vorhandenen physischen Datenträger verwendet, fügen Sie /dev/sdf zum PV-Foot hinzu.

    sudo vgextend foo /dev/sdf
    

    Die Ausgabe zeigt, dass der Befehl vgextend /dev/sdf in ein PV konvertiert, bevor er dem VG-Foo hinzugefügt wird.

  4. Fügen Sie dem RAID-LV einen Stripe hinzu.

    sudo lvconvert --stripes 4 foo/rr
    

    Antworten Sie mit y auf die Eingabeaufforderung.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr
      Using default stripesize 64.00 KiB.
      WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents!
      Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity.
    Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y
      Logical volume foo/rr successfully converted.
    
  5. Prüfen Sie die neue LV-Größe.

    sudo lvs foo/rr
    

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvs foo/rr
      LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      rr   foo rwi-aor--- 13.34g                                    2.24          
    

    Die Kapazität (LSize) wurde von 3.34g erhöht, und die Synchronisierung (Cpy%Sync) beginnt. Die Synchronisierung ist der Prozess, bei dem alle Geräte in einem RAID-LV konsistent zueinander sind und eine vollständige Synchronisierung erforderlich wird, wenn Geräte im RAID-LV geändert oder ersetzt werden.

  6. Prüfen Sie den Status der Synchronisierung.

    Führen Sie die Prüfung aus, bis der Fortschritt 100 % erreicht.

    watch sudo lvs foo/rr
    

    Nachdem Cpy%Sync 100% erreicht hat, beenden Sie den Befehl watch mit ctrl-c.

    Weitere Möglichkeiten zur Verwendung des Befehls watch:

    • Führen Sie watch -n 5 sudo lvs foo/rr aus, um alle 5s anstelle der Standard-2s zu aktualisieren.
    • Führen Sie timeout 60 watch -n 5 sudo lvs foo/rr aus, um den Vorgang nach 60er Jahren automatisch zu beenden.
  7. Zeigen Sie den neuen Segmentbereich und PV an, der jetzt /dev/sdf enthält.

    sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
    

Wiederherstellen eines ausgefallenen RAID-Geräts in einem LV

RAID-Arrays können weiterhin mit ausgefallenen Geräten ausgeführt werden. Wenn Sie ein Gerät für andere RAID-Typen als RAID1 entfernen, würde die Konvertierung in ein RAID auf niedrigerer Ebene erforderlich sein (in diesem Fall RAID5 in RAID0).

LVM ermöglicht es, ein fehlerhaftes Gerät in einem RAID-Volume in einem einzigen Schritt mit dem Befehl lvconvert --repair für fehlerhafte Geräte zu ersetzen, anstatt ein fehlerhaftes Laufwerk zu entfernen und möglicherweise einen Ersatz hinzuzufügen.

  1. Prüfen Sie das aktuelle RAID-LV-Layout.

    sudo lvs --all --options name,copy_percent,devices foo
    
  2. Simulieren Sie einen Fehler auf /dev/sdd.

    echo 1 | sudo tee /sys/block/sdd/device/delete
    
  3. Überprüfen Sie nach dem Ausfall das RAID-LV-Layout erneut.

    sudo lvs --all --options name,copy_percent,devices foo
    

    Beachten Sie die [unbekannten] Geräte.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
      WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd).
      LV            Cpy%Sync Devices                                                                   
      rr            100.00   rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0)
      [rr_rimage_0]          /dev/sdb(855)                                                             
      [rr_rimage_0]          /dev/sdb(1)                                                               
      [rr_rimage_1]          /dev/sdc(855)                                                             
      [rr_rimage_1]          /dev/sdc(1)                                                               
      [rr_rimage_2]          [unknown](855)                                                            
      [rr_rimage_2]          [unknown](1)                                                              
      [rr_rimage_3]          /dev/sde(855)                                                             
      [rr_rimage_3]          /dev/sde(1)                                                               
      [rr_rimage_4]          /dev/sdf(855)                                                             
      [rr_rimage_4]          /dev/sdf(1)                                                               
      [rr_rmeta_0]           /dev/sdb(0)                                                               
      [rr_rmeta_1]           /dev/sdc(0)                                                               
      [rr_rmeta_2]           [unknown](0)                                                              
      [rr_rmeta_3]           /dev/sde(0)                                                               
      [rr_rmeta_4]           /dev/sdf(0)        
    
  4. Tauschen Sie das fehlerhafte Gerät aus.

    sudo lvconvert --repair foo/rr
    

    Antworten Sie mit y auf die Eingabeaufforderung.

    Der Befehl kann den verfügbaren Speicherplatz oder das verfügbare Gerät nicht in der VG finden.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
      WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd).
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
    Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
      Insufficient free space: 856 extents needed, but only 0 available
      Failed to replace faulty devices in foo/rr.
    

    Warnung: Wenn der Fehler eine "Device in foo/rrr kann nicht ersetzt werden, während es sich nicht um eine synchronisierte Meldung handelt" enthält, prüfen Sie, ob das RAID-LV synchron ist, indem Sie watch sudo lvs foo/rr ausführen und bestätigen, dass Cpy%Sync 100% beträgt. Danach wiederholen Sie den Befehl lvconvert.

  5. Gerät /dev/sdg zur VG hinzufügen

    sudo vgextend foo /dev/sdg
    

    Die WARNING-Meldungen in der Ausgabe sind für das noch fehlende fehlerhafte Laufwerk verantwortlich.

  6. Versuchen Sie, das fehlerhafte Laufwerk zu ersetzen.

    sudo lvconvert --repair foo/rr
    

    Beantworten Sie die Eingabeaufforderung erneut mit y.

    Die Ausgabe zeigt erneut die WARNING-Meldungen über das fehlende Laufwerk an, der Befehl hat das fehlerhafte Gerät in der VG jedoch erfolgreich ersetzt.

  7. Prüfen Sie das Layout.

    sudo lvs --all --options name,copy_percent,devices foo
    

    Beachten Sie, dass /dev/sdg alle [unbekannten] Geräteeinträge ersetzt hat.

  8. Entfernen Sie das ausgefallene Gerät aus der VG.

    LVM-Dienstprogramme melden weiterhin, dass LVM das fehlerhafte Gerät erst finden kann, wenn es aus der VG entfernt wird.

    sudo vgreduce --removemissing foo
    

    Die WARNING-Meldungen in der Ausgabe sind für das noch fehlende fehlerhafte Laufwerk verantwortlich.

  9. Prüfen Sie den RAID-Synchronisierungsstatus, bevor Sie fortfahren.

    Warnung: Wenn Sie zu schnell zum nächsten Abschnitt fortfahren, wird möglicherweise die folgende Fehlermeldung angezeigt:

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr
      foo/rr state is currently "recover".  Unable to switch to "check".
    

    Dieser Fehler tritt auf, wenn die Synchronisierung nach dem Hinzufügen von Stripes zum RAID-LV nicht abgeschlossen wurde.

    Prüfen Sie den RAID-LV mit watch sudo lvs foo/rr, und warten Sie, bis das Feld Cpy%Sync 100% erreicht.

Datenkohärenz in RAID-LV prüfen (Bereinigung)

LVM bietet Bereinigungsmöglichkeiten für RAID LV, das alle Daten- und Paritätsblöcke in einem Array liest und auf Kohärenz prüft.

  1. Bereinigen im Prüfmodus auslösen

    sudo lvchange --syncaction check foo/rr
    
  2. Zeigen Sie den Status der Bereinigungsaktion an.

    watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
    

    Beispielausgabe:

    [oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
      LV   SyncAction Cpy%Sync
      rr   check      30.08   
    
  3. Nachdem die Bereinigung (Syncronisierung) abgeschlossen ist, zeigen Sie die Anzahl der gefundenen inkonsistenten Blöcke an.

    sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
    

    Mit der Option raid_sync_action wird das Feld SyncAction mit einem der folgenden Werte angezeigt:

    • idle: Alle Aktionen sind abgeschlossen.
    • resync: Initialisieren oder Wiederherstellen nach einem Systemfehler.
    • recover: Gerät im Array wird ersetzt.
    • check: Es wird nach Unterschieden gesucht.
    • repair: Unterschiede suchen und beheben.

    Beispielausgabe:

    [oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr
      LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert SyncAction Mismatches
      rr   foo rwi-aor--- 13.34g                                    44.42            check               0
    

    Die Ausgabe zeigt 0 Inkonsistenzen (Nichtübereinstimmungen).

  4. (Optional) Korrigieren Sie die Unterschiede im Array.

    Dieser Schritt ist optional, da in diesem Beispielarray keine Unterschiede wahrscheinlich vorhanden sind.

    sudo lvchange --syncaction repair foo/rr
    
  5. (Optional) Prüfen Sie den Reparaturstatus.

    sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
    

    Beachten Sie, dass das Feld SyncAction in repair geändert wurde.

Weitere Informationen finden Sie auf den Manpages lvchange(8) und lvmraid(7).

Weitere Informationen:

Weitere Lernressourcen

Sehen Sie sich andere Übungen auf der Website docs.oracle.com/learn an, oder greifen Sie auf Inhalte zu, die Sie über den Oracle Learning-Kanal YouTube benötigen. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie unter Oracle Help Center.