============================================================
Anleitung: RAID-6 Array erweitern (mdadm, GPT, ext4/xfs)
============================================================

Diese Anleitung beschreibt die Erweiterung eines bestehenden
RAID-6-Arrays, nachdem die einzelnen RAID-Mitgliedsplatten physisch
durch größere Platten ersetzt wurden und ein Resync durchgeführt wurde.

ACHTUNG:
- Nur durchführen, wenn RAID in "clean"-State ist.
- Backup wichtiger Daten wird dringend empfohlen.
- Root-Rechte erforderlich.
- Beispielangaben (Gerätenamen) anpassen!

------------------------------------------------------------
1) Vorbereitung & Kontrolle
------------------------------------------------------------
1.1 Prüfen, dass alle neuen, größeren Platten erkannt werden:
     lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

1.2 RAID-Status prüfen:
     cat /proc/mdstat
     mdadm --detail /dev/mdX

1.3 Sicherstellen, dass der Status "clean" ist.
     Falls "resync" oder "recovery" läuft → warten, bis fertig.

------------------------------------------------------------
2) Partitionstabellen sichern
------------------------------------------------------------
Für jedes RAID-Mitgliedsgerät:
     sfdisk -d /dev/sdX > backup-sdX-YYYYMMDD.sfdisk

------------------------------------------------------------
3) Partitionen auf Mitgliedsplatten vergrößern
------------------------------------------------------------
Für jede Platte:
     - Startsektor unverändert lassen!
     - Partition bis zum maximal verfügbaren Platz vergrößern.
     - GPT-Partitionstyp unverändert lassen.

     - TYP 'A19D880F-05FC-4D3B-A006-743F0F84911E' für Linux-RAID


1. Vergrößern auf maximal verfügbaren Platz mit sfdisk:

   -  GPT-UUID ermitteln z.bsp. für partition 1 von /dev/sda1:

         lsblk -no PARTTYPE "/dev/sda1"

   - Partition 1 con /dev/sdX vergrößern

       sfdisk --no-reread --force -N 1 /dev/sdX <<EOF
,,type=A19D880F-05FC-4D3B-A006-743F0F84911E
EOF

      --no-reread: Verhindert, dass der Kernel die Partitionstabelle sofort neu einliest.
      --force: Erzwingt Änderungen auch dann, wenn sfdisk normalerweise abbrechen würde,
               z. B. weil die Partition in Benutzung ist.
      N 1: Bearbeitet nur die angegebene Partitionsnummer – hier also Partition 1.

      Eingabe-Redirect <<EOF ... EOF: Damit wird der eigentliche neue Partitions-Eintrag
                                      an sfdisk per Here-Document übergeben.
         Startsektor, Größe, Typ

            - Startsektor: Wenn leer (""), bleibt der bisherige Startsektor erhalten.
            - Größe: Wenn leer (""), nimmt sfdisk den maximal verfügbaren Platz bis zum Plattenende.
            - Typ: Hier type=<GPT-UUID>

oder

1. Vergrößern auf maximal verfügbaren Platz mit parted:

   parted /dev/sdX
   (parted) print
   (parted) resizepart 1 100%
   (parted) quit

oder in einer Zeile:

   parted -s /dev/sdX resizepart 1 100%



2. Danach Partitionstabelle neu einlesen:
     partprobe /dev/sdX
     udevadm settle


Bemerkung 'parted' im Vergleich zu sfdisk:

   - sfdisk ist "roh", arbeitet auf Sektorebene - super für Skripte, aber etwas sperrig für Menschen.

   - parted versteht Größenangaben wie 100%, 10TiB, etc. und ist interaktiv angenehmer. resize verändert
     nur die  Größe, nicht den Typcode - der Linux-Typ bleibt also bestehen.

   - Für ein Skript wäre sfdisk robuster, weil es keine Rückfragen stellt und 100 % skriptfähig ist.

------------------------------------------------------------
4) RAID-Array vergrößern
------------------------------------------------------------
Nachdem alle Partitionen angepasst sind:
     mdadm --grow /dev/mdX --size=max

Anschließend auf Abschluss des internen Resync warten:
     watch cat /proc/mdstat

------------------------------------------------------------
5) Dateisystem vergrößern
------------------------------------------------------------
Je nach Dateisystem:

- ext4:
     resize2fs /dev/mdX

- xfs (muss gemountet sein):
     xfs_growfs <Mountpoint>

------------------------------------------------------------
6) Abschließende Kontrolle
------------------------------------------------------------
- Blockgeräte prüfen:
     lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

- RAID-Details:
     mdadm --detail /dev/mdX

- Dateisystemgröße:
     df -h <Mountpoint>

------------------------------------------------------------
Hinweise
------------------------------------------------------------
- GPT-Typcode ermitteln - z.bsp. mit

      lsblk -no PARTTYPE /dev/sdX1

  für Linux RAID Partition (bei dir):
     A19D880F-05FC-4D3B-A006-743F0F84911E

- Wenn nur einzelne Platten ersetzt/geändert  werden:
     Schrittweise vorgehen: Platte ersetzen - RAID resync - nächste Platte.

- Bei Einsatz von LUKS oder LVM: Zusätzliche Schritte für LUKS-Resize
  bzw. LVM PV Resize nach dem RAID-Resize durchführen.
