Jump to content
We're Hiring! Full Stack Developer ×

Disk Array verkleinern - Aus 3 datadisks werden 2


ullibelgie

Recommended Posts

Ich habe eine Frage, wo ich im Forum keine richtige Antwort drauf gefunden habe:

 

Mein Server hat 4 HDDs Slots - diese sind aktuell bereits voll.

Die Belegung sieht so aus:

grafik.thumb.png.ed644f02994d0040c90335127b4ccc1f.png

 

Jetzt habe ich mir überlegt, daß ich ja von der Data-Disk3 die dort befindlichen 280GB auf die Disk1 verschieben könnte und die Disk3 komplett löschen und aus dem Array entfernen. Damit hätte ich wieder einen freien (mechanischen) Platz im Gehäuse, wo ich stattdessen eine noch unbenutzte SSD (Samsung Evo 850) reinstecken könnte, om diese als Cache zu gebrauchen. Diese SSD habe ich hier noch aus altem Fundus...

Mir stellt sich zwar die Frage, ob das bei meinem uralt PC Sinn macht (nur Sata2) aber probieren könnte ich es mal

 

Jetzt meine Frage:

Wie müsste ich mit den Mitteln die Unraid mir bietet genau vorgehen, um diesen Wechsel im Array zu vollziehen. (Moven der Daten, Andern des Arrays von 3disks auf 2Disks)

Gibt es eine Möglichkeit die Parity durchgehend zu erhalten ? Also ohne diese neu zu erstellen ?

Ich würde gerne eher Bordmittel von Unraid benutzen, als im Terminal irgendwelche Befehle einzugeben, die ich dann doch nicht verstehe...;-(

 

Was ist der schnellste und sicherste Weg für diese gewünschte Serververänderung?

Link to comment

Die Zielplatte würde ich per preclear Plugin nullen lassen.

Daten verschieben.

Damit müsste auch die Parity so geschrieben werden daß die zu ersetzenden Festplatte genullt ist.

Array stop

Screenshot

Runterfahren, neue platte rein und wieder hochfahren.

Settings/new Config.

Einstellen daß Cache und Parity preserved sind. (Parity valid)

Die neue Platte an derselben Stelle im Array wie die alte einbinden.

Fertig.

Die Parity sollte valid sein.

 

 

Link to comment
11 minutes ago, MartinG said:

Die Zielplatte würde ich per preclear Plugin nullen lassen.

Ich habe es so verstanden, das die Daten, die sich aktuell auf der Disk1 befinden, erhalten bleiben sollen.

Und "nur" die Daten der Disk3 hinzukommen sollen.

 

Dazu mal bitte das Plugin unBalance anschauen. Das verschiebt Daten von Disk zu Disk.

Wenn die Disk3 leer ist, kannst Du sie entfernen und die SSD als Cache einbinden.

Link to comment

Aha - habe ich mir gerade angesehen - in der Tat, will ich die Daten des Arrays in Ihrer Gesamtheit erhalten und einfach die 280GB von disk3 verteilen auf disk1 und/oder disk2... denn ich will ja nur Disk3 durch die SSD Cache disk ersetzen.

Das Unassigned Plug in scheint genau zu machen, was ich zunächst benötige (Moven der Data)...

 

Link to comment
1 hour ago, MartinG said:

Und dann mit new Config unter Erhaltung der Parity die neue Konfiguration einrichten.

 

Wenn Du unter "Erhaltung" --> "Parity muss neu aufgebaut werden" verstehst, dann stimmt das. Das ist wiederum aber nicht vom OT gewünscht. Er möchte zu jedem Zeitpunkt die Parity aktualisiert halten.

 

Wenn Du unter "Erhaltung" --> "Parity ist aktuell" verstehst, dann ist das falsch.

 

Zur Erläuterung: Eine durch Unbalance geleerte Festplatte ist im Sinne der Parity-Kalkulation nicht leer. Nur eine komplett mit 0 gefüllte Festplatte wirkt auf die Parity-Kalkulation neutral und kann entfernt werden. Also erst Daten z.B. via Unbalance/Midnight Commander/rsync verschieben, dann Platte komplett löschen. Hierzu gibt es eine in-offizielle Vorgehensweise im Unraid Wiki (Alternative Method):

 

https://wiki.unraid.net/Manual/Storage_Management#Removing_data_disk.28s.29

 

Edited by hawihoney
Link to comment
19 minutes ago, hawihoney said:

Zur Erläuterung: Eine durch Unbalance geleerte Festplatte ist im Sinne der Parity-Kalkulation nicht leer. Nur eine komplett mit 0 gefüllte Festplatte wirkt auf die Parity-Kalkulation neutral und kann entfernt werden. Also erst Daten z.B. via Unbalance/Midnight Commander/rsync verschieben, dann Platte komplett löschen. Hierzu gibt es eine in-offizielle Vorgehensweise im Unraid Wiki (Alternative Method):

 

https://wiki.unraid.net/Manual/Storage_Management#Removing_data_disk.28s.29

 

 

Ja, mir ist klar, daß ich nach dem Move der Daten, die (vermeintlich) leere Disk3 nicht einfach rausziehen darf, wenn ich die Parity nicht verlieren will.

Ich hatte gerade auch im wiki das gefunden:

https://wiki.unraid.net/Shrink_array#Procedure_2

Das scheint mir dasgleiche zu sein, wenn es um clearing der 'leeren' Disk3 geht... aber ich lese mir beide Anleitungen nochmal durch... das Verschieben der Daten wird ja sowieso noch eine weitere Stunde dauern.

Danke für den wichtigen Hinweis!

Link to comment
21 minutes ago, hawihoney said:

Wenn Du unter "Erhaltung" --> "Parity ist aktuell" verstehst, dann ist das falsch.

 

Zur Erläuterung: Eine durch Unbalance geleerte Festplatte ist im Sinne der Parity-Kalkulation nicht leer. Nur eine komplett mit 0 gefüllte Festplatte wirkt auf die Parity-Kalkulation neutral und kann entfernt werden. Also erst Daten z.B. via Unbalance/Midnight Commander/rsync verschieben, dann Platte komplett löschen. Hierzu gibt es eine in-offizielle Vorgehensweise im Unraid Wiki (Alternative Method):

 

Das verstehe ich nicht. Wenn ich doch die Festplatte leerschreibe dann schreibt unraid die parity doch mit und an der Stelle der alten geleerten Platte stehen lauter nullen.

Die haben also keinen Einfluss mehr auf die equal parity von unraid.

Oder ist das Problem daß eine Festplatte fehlt?

Link to comment

Entweder man baut die Parity neu (und hat währenddessen keine Redundanz) oder man schreibt durchgehend nullen auf die leere Datandisk bevor man diese dem Array entnimmt.

So wie ich es verstehe behält man im letzteren Fall die Parity-Integrität und muss diese nicht neu erstellen.

 

Meine Uberlegung war auch, daß Nullen schreiben auf 1TB disk hoffentlich doch etwas schneller geht als Parity bauen auf 12TB (gut 19Stunden auf meiner 'Mühle')

Ausserdem bleibt die Parity dann eben durchgehend erhalten während des ganzen Prozesses...

Link to comment
38 minutes ago, MartinG said:

Das verstehe ich nicht. Wenn ich doch die Festplatte leerschreibe dann schreibt unraid die parity doch mit und an der Stelle der alten geleerten Platte stehen lauter nullen.

 

Nein, das ist völlig falsch. So funktionieren Dateisysteme nicht.

 

Durch das Verschieben bzw. Löschen einer Datei wird die Quelle im Dateisystem nur als gelöscht markiert. Da wird nichts "richtig" gelöscht. Das würde einfach viel zu lange dauern. Das bedeutet, dass die gesamten Bits und Bytes der gelöschten Datei noch auf dem Datenträger liegen und nur in dessen Dateisystem die Lösch-Markierung aktualisiert wurde. Für die Parity bedeutet das dann ebenfalls, dass nur die paar Bytes der Lösch-Markierung aktualisiert wurden und nicht der komplette Inhalt der gelöschten Datei.

 

Das ist übrigens auch der Grund warum es Tools wie Undelete überhaupt geben kann. Würde beim Löschen einer Datei tatsächlich alles auf 0 gesetzt, dann gäbe es den Markt der Wiederherstellungs-Werkzeuge überhaupt nicht.

 

Und jetzt kommt das Problem. In der Parity liegen noch die Ergebnisse der Parity-Kalkulation für den gesamten Inhalt der gelöschten Dateien inkl. Dateisystem der entfernten Platte. Würdest Du nun den Datenträger entfernen dann ist die Parity sofort ungültig und das Array gefährdet. Der Grund ist, dass bei einem Ausfall einer der verbliebenen Platten, aus der Parity und den anderen Disks der Inhalt der defekten Platte berechnet wird. Und dort ist noch der Müll der entfernten Datenplatte einberechnet. Dadurch wird die Austausch-Platte mit Schrott gefüllt.

 

Nachtrag: Nehmen wir exemplarisch und der Einfachheit halber ein einzelnes Byte auf vier Platten plus Parity und nehmen das Dezimalsystem (und Addieren) statt die bei Unraid/RAID4 verwendete bitweise XOR Kalkulation:

 

1. Auf vier Platten liegen 1+2+3+4. Das ergibt auf der Parity 10

2. Nun füllen wir die zu entfernende vierte Platte nicht komplett mit 0 sondern entfernen sie. New Config wird ausgeführt mit Parity ist gültig.

3. In der Parity liegt nach wie vor 10. Es gibt aber nur noch 1+2+3

4. Jetzt fällt die zweite Platte aus und der Inhalt muss rekonstruiert werden.

5. Platte 1+3 ergeben 4, in der Parity liegt nach wie vor 10, also muss die zweite Platte eine 6 enthalten haben. In Wahrheit hatte sie aber eine 2 an der Stelle = BUMM

 

Das bewirkt der Unterschied zwischen Delete und Clear.

 

Edited by hawihoney
Link to comment
45 minutes ago, hawihoney said:

Nein, das ist völlig falsch. So funktionieren Dateisysteme nicht.

Darum gings doch nicht.

Wenn Dateien von einem Datenträger weg verschoben werden dann passt unraid die parity an.

 

Soweit ich weiß arbeitet unraid mit einer "equal parity"

 

Alt:
Parity HDD1 HDD2 HDD3
  0     1    1    0
  1     1    0    0
  1     1    1    1

Daten verschieben weg von HDD2
  1     1    0    0
  1     1    0    0
  0     1    0    1

Nach entfernen der HDD2 und einer neuen Config mit nur zwei Daten platten und einer parity:
  1     1    0
  1     1    0
  0     1    1

Dann stimmt die Parity doch wieder?

Link to comment

Was zu erwarten war:

Plug-in  "Unbalance" hat hier wohl nicht so funktioniert wie es soll  🤪

Ich bin ganz genau so verfahren wie in dem Video von Spaceinvader - was kann man da falsch machen ?!?

 

Aber Resultat ziemlich dramatisch: 

- Anstatt alles zu Moven wie vorgesehen von Disk3 nach Disk1, bleiben alle Folder auf Disk3 erhalten, sind aber leer ! Rest scheint aber wohl auf Disk 1 zu sein...

- Alle Docker weg !  Ich hatte diese vor dem Moven alle beendet - Spaceinvader erklärt das ja auch. Mover habe ich ja gar keinen, weil keine Cache disk. Es war garantiert kein Zugriff von irgendwo her auf irgendwelche Dateien während des Moves...

 

Und jetzt?

 

wie kriege ich meine Docker wieder zurück ? Wo sind die geblieben und warum all die leeren Folder auf der Disk3 übrig geblieben ??

 

Ich begreife das nicht !!!

 

 

Link to comment

Zu wenig Info.

Lagen appdata etc. auf der Platte von der verschoben wurde?

 

Deine Docker kannst Du einfach wieder installieren:

Unter Docker klicke auf Add Container

image.png.0e46fd66c24031624160ca3d5b806d7a.png

 

Dann kannst Du unter Select a template unten Deine alten Docker wieder installieren.

image.thumb.png.bb56ed3d22d6218b656ea42f7af3198f.png

die Einstellungen sollten noch da sein.

Wenn Deine Pfade auf usershares und nicht auf disks weisen sollte es auch keine Probleme geben.

 

Link to comment

Wenn ich einfach das Plug-in "Unbalance" noch einmal ausführen wollte (also um die restlichen leeren Folder auch von Disk3 nach Disk1 zu bringen) kriege ich das:

 

grafik.thumb.png.cacbab8d3bd4ed2cbe1001215feb879d.png

 

The following items will not be transferred....  auf der 4TB Platte soll kein platz sein ??? Da ist noch 3TB frei !!!

Also irgendwas ist hier fundamental verkehrt !!

 

Das Plug in 'fix common problems' sagt Alles ok

Da ich das Plug-in die ganze Zeit bereits installiert hatte, bekam ich wohl auch nicht den Hinweis, (wie im Spaceinvader Video), das mit den Rechten irgendwas nicht stimmt...

 

Was tun ?!

 

Was tun ?!

Link to comment

Also mir ist das vorerst auch ein Rätsel.

Nächstes Mal mach erst den Haken bei "Dry Run" rein.

Damit der erstmal probiert.

 

26 minutes ago, ullibelgie said:

Ich hatte diese vor dem Moven alle beendet

Ich verstehe das grade auch nicht. Leider bin ich aktuell zeitlich auch ein wenig unter Druck...

 

 

 

Link to comment

Danke für die Tipps erstmal...

Werde mal warten, ob noch jemand Tips geben kann...

 

Seltsam, daß ein offenbar so vielgebrauchtes Plug-in derartige Probleme bereitet nach all den Jahren, wo es bereits existiert...

 

Man muss schon sehr vorsichtig sein, was man macht...

 

Ich weiss ehrlich gesagt nicht, ob ich die Docker einfach wieder installieren soll... vor dem Hintergrund, daß aus meiner Sicht die Datenfiles ziemlich undefinierbar verschoben sind...

Ich hatte die Logs noch durchgesehen von dem Plug-in -- kann mich nur daran erinnern, das da stand finished succesfully

 

Leider kam ich auf die glorreiche Idee, den Server zu rebooten, da ich dachte, dass die übriggebliebenen leeren Folder auf der Disk3 einfach nur ein "Anzeigefehler" sein könnten...

Damit sind aber jetzt alle Logs weg... so ein Mist!

 

 

Link to comment

Bevor Du die Docker neu installierst. Die sollen ja dann sowieso auf der SSD laufen...

Die Ordner + Inhalt sind auf der Zielplatte vorhanden?

Ich würde zuallererst die betroffenen Shares so einstellen daß sie nicht mehr auf disk 3 schreiben können.

Dann würde ich die Ordner auf der platte 3 prüfen, händisch, ob da noch etwas drin ist und dann

würde ich gegebenenfalls Restdateien händisch in die passenden Ordner auf HDD1 verschieben.

Anschließend würde ich die Ordner von Disk3 löschen. Nicht die System Shares!

Mit Krusader oder CloudCommander oder wasauchimmer.

 

Beende den Docker Service und den VM Service über die Settings

 

Die Systemshares stellst Du danach erstmal um auf Disk1.

Und spätestens jetzt würde ich mal mit 

Appdata Backup/Restore ein Backup der wichtigen Dinge machen und dieses abseits des Servers sichern.

 

Dann würde ich mal einen Reboot machen und sehen was passiert.

 

 

 

Edited by MartinG
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...