Add script and documentation to expamd raid6.
This commit is contained in:
140
raid6-expand.md
Normal file
140
raid6-expand.md
Normal file
@ -0,0 +1,140 @@
|
||||
Perfekt — dann schreibe ich dir jetzt einen **minimal-Risiko-Plan**, damit du dein RAID6 (`/dev/md4`) mit Ext4 sauber und ohne Datenverlust auf die volle Größe bringst.
|
||||
|
||||
Ich gehe davon aus, dass:
|
||||
|
||||
* `/dev/sda1`, `/dev/sdb1`, `/dev/sdc1`, `/dev/sdd1` **die RAID-Mitglieder** sind.
|
||||
* Jede Platte 20 TB groß ist, die Partitionen aktuell nur 10 TB.
|
||||
* Das RAID ist **gesund** (`cat /proc/mdstat` zeigt „clean“).
|
||||
|
||||
---
|
||||
|
||||
## **Schritt-für-Schritt Anleitung – Minimal Risk**
|
||||
|
||||
### **1. Status checken**
|
||||
|
||||
Bevor wir irgendwas anfassen, prüfen wir den Status:
|
||||
|
||||
```bash
|
||||
cat /proc/mdstat
|
||||
mdadm --detail /dev/md4
|
||||
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
|
||||
```
|
||||
|
||||
Es muss **clean** sein, und die Partitionen (`sdX1`) müssen ungefähr 10 TB groß sein.
|
||||
|
||||
---
|
||||
|
||||
### **2. Backup der Partitionstabelle**
|
||||
|
||||
Falls wir einen falschen Startsektor erwischen, ist das RAID im Eimer.
|
||||
Deshalb sichern wir die Partitionstabellen **aller** Platten:
|
||||
|
||||
```bash
|
||||
sfdisk -d /dev/sda > sda.part
|
||||
sfdisk -d /dev/sdb > sdb.part
|
||||
sfdisk -d /dev/sdc > sdc.part
|
||||
sfdisk -d /dev/sdd > sdd.part
|
||||
```
|
||||
|
||||
Damit kannst du im Notfall zurückschreiben:
|
||||
|
||||
```bash
|
||||
sfdisk /dev/sda < sda.part
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **3. Eine Platte vergrößern (nacheinander!)**
|
||||
|
||||
Wir machen das **Platte für Platte**, damit immer 3 von 4 Platten voll intakt bleiben.
|
||||
Beispiel für `/dev/sda`:
|
||||
|
||||
1. **Startsektor merken**:
|
||||
|
||||
```bash
|
||||
parted /dev/sda unit s print
|
||||
```
|
||||
|
||||
Notiere die **Start-Sektor-Zahl** der Partition 1 (z. B. `2048s`).
|
||||
|
||||
2. **Partition löschen und neu anlegen** (nur Metadaten, keine Daten!):
|
||||
|
||||
```bash
|
||||
parted /dev/sda
|
||||
(parted) unit s
|
||||
(parted) rm 1
|
||||
(parted) mkpart primary 2048s 100%
|
||||
(parted) quit
|
||||
```
|
||||
|
||||
3. **Kernel über neue Partition informieren**:
|
||||
|
||||
```bash
|
||||
partprobe /dev/sda
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4. RAID Resync starten**
|
||||
|
||||
Nach dem Anpassen der ersten Platte muss mdadm den neuen Bereich initialisieren:
|
||||
|
||||
```bash
|
||||
mdadm --grow /dev/md4 --size=max
|
||||
```
|
||||
|
||||
⚠️ Das kann mehrere Stunden/Tage dauern.
|
||||
Fortschritt beobachten:
|
||||
|
||||
```bash
|
||||
watch cat /proc/mdstat
|
||||
```
|
||||
|
||||
Warte, bis der Status wieder **\[UUUU] clean** ist.
|
||||
|
||||
---
|
||||
|
||||
### **5. Nächste Platten**
|
||||
|
||||
Wiederhole **Schritt 3** für `/dev/sdb`, dann `/dev/sdc`, dann `/dev/sdd`.
|
||||
Nach jeder Platte läuft ein **Teil-Resync** – auch hier **immer abwarten**, bis es fertig ist, bevor du die nächste Platte anfässt.
|
||||
|
||||
---
|
||||
|
||||
### **6. Dateisystem vergrößern**
|
||||
|
||||
Wenn alle Platten angepasst und der RAID-Resync komplett abgeschlossen ist:
|
||||
|
||||
```bash
|
||||
resize2fs /dev/md4
|
||||
```
|
||||
|
||||
Das Ext4-Dateisystem wird dann den gesamten neuen Platz nutzen.
|
||||
|
||||
---
|
||||
|
||||
### **7. Kontrolle**
|
||||
|
||||
```bash
|
||||
df -h /mountpunkt
|
||||
lsblk
|
||||
mdadm --detail /dev/md4
|
||||
```
|
||||
|
||||
Jetzt solltest du die volle Kapazität sehen.
|
||||
|
||||
---
|
||||
|
||||
## **Wichtige Sicherheitsregeln**
|
||||
|
||||
* Immer nur **eine Platte gleichzeitig** verändern.
|
||||
* Niemals den **Startsektor** ändern!
|
||||
* Während Resyncs am besten keine großen Schreiblasten.
|
||||
* Falls irgendetwas nicht clean ist → erst reparieren, dann weitermachen.
|
||||
|
||||
---
|
||||
|
||||
Wenn du magst, kann ich dir **ein fertiges Shell-Skript** bauen, das dir pro Platte die Startsektoren automatisch liest, die Partition neu anlegt und sicherstellt, dass du dich nicht vertippst.
|
||||
Das minimiert Tippfehler und verhindert den Super-GAU.
|
||||
|
||||
Willst du, dass ich dir so ein Skript direkt schreibe?
|
Reference in New Issue
Block a user