RAID durch Entfernen einer Festplatte verkleinern?

14

Ich habe ein Synology NAS mit 12 Einschüben. Ursprünglich haben wir beschlossen, alle 12 Festplatten einem einzigen RAID-6-Volume zuzuweisen. Jetzt möchten wir das Volume jedoch verkleinern, um nur 10 Festplatten zu verwenden und zwei Festplatten als Ersatzlaufwerke zuzuweisen.

Der Volume Manager-Assistent kann das Volume problemlos durch Hinzufügen von Festplatten erweitern. Ich habe jedoch keine Möglichkeit gefunden, das Volume durch Entfernen von Festplatten zu verkleinern . Wie kann ich das tun, ohne das gesamte System neu initialisieren zu müssen?

Pierre Arnaud
quelle
Was ist das Ziel hier? Derzeit werden zwei Festplatten als Parität verwendet, sodass das Array zwei Fehler tolerieren kann. Wenn Sie zwei Ersatzteile benötigen, können Sie diese auch in der Nähe lassen und die gleiche Toleranz haben, jedoch mit mehr Speicherplatz.
Paul
Klar, aber ich muss ins Büro, eine Diskette herausnehmen und eine Ersatzdiskette einlegen. Mit einem Ersatzteil können Sie dies aus der Ferne tun.
Pierre Arnaud
Ist in Ihrer Synology MDADM integriert, wenn Sie mit SSH arbeiten?
Paul
Ja, ich habe Zugriff auf das Tool mdadm.
Pierre Arnaud

Antworten:

19

Aus diesem Grund gehe ich davon aus, dass sich 12 Festplatten im Array befinden und jede 1 TB groß ist.

Das bedeutet, dass 10 TB Speicherplatz vorhanden sind. Dies ist zum Beispiel der Fall, wenn Sie nicht mehr als 6 Festplatten (6 TB) verwenden, es spielt keine Rolle, wie groß diese sind.

Haftungsausschluss: Keine dieser Funktionen wird von Synology unterstützt. Ich würde daher bei ihnen nachfragen, ob dieser Ansatz Probleme verursachen kann. Führen Sie vorher eine Sicherung durch, und fahren Sie alle Synology-Dienste zuvor herunter. Synology verwendet meines Wissens Standard-MD-RAID-Arrays. Sie sind verfügbar, wenn die Festplatte auf einen Standard-Server verschoben wird, der MD unterstützt. Es sollte also keine Probleme geben.

Überblick

Die Sequenz sieht folgendermaßen aus:

  1. Verkleinern Sie das Dateisystem
  2. Reduzieren Sie die Größe des logischen Volumes
  3. Reduzieren Sie die Array-Größe
  4. Ändern Sie die Größe des Dateisystems zurück
  5. Konvertieren Sie die Ersatzlaufwerke in Ersatzlaufwerke

Dateisystem

Suchen Sie die Hauptpartition mit df -h, sie sollte ungefähr so ​​aussehen:

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         10T       5T   5T         50% /volume1

Verwenden Sie diesen Befehl, um die Größe auf das erforderliche Maximum und nicht mehr zu ändern:

umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1

Jetzt überprüfen:

mount /dev/vg1/volume_1 /volume1
df -h

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         5T       5T    0T        100% /volume1

Volumen

Verwenden Sie lvreduce, um das Volumen zu verkleinern (vergrößern Sie es nur für den Fall):

umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1

Nachdem das logische Volume reduziert wurde, können Sie mit pvresize die Größe des physischen Volumes verringern:

pvresize --setphysicalvolumesize 5.3T /dev/md0

Wenn die Größenänderung fehlschlägt, sehen Sie sich diese andere Frage an, um die am Ende des physischen Datenträgers zugewiesenen Datenbereiche an den Anfang zu verschieben.

Jetzt haben wir ein Volumen von 5,3 T auf einem 10 T-Array, sodass wir die Array-Größe sicher um 2 T reduzieren können.

Array

Finden Sie das md-Gerät heraus:

 pvdisplay -C
 PV         VG      Fmt  Attr PSize   PFree
 /dev/md0   vg1     lvm2 a--  5.3t    0.1t

Der erste Schritt besteht darin, mdadm anzuweisen, die Array-Größe zu verringern (mit grow):

mdadm --grow -n10 /dev/md0
mdadm: this change will reduce the size of the array.
       use --grow --array-size first to truncate array.
       e.g. mdadm --grow /dev/md0 --array-size 9683819520

Dies bedeutet, dass wir die Array-Größe reduzieren müssen, um das aktuelle Array auf 10 Festplatten anzupassen.

 mdadm --grow /dev/md0 --array-size 9683819520

Jetzt ist es kleiner, wir können die Anzahl der Festplatten reduzieren:

 mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup

Dies wird einige Zeit in Anspruch nehmen und kann hier überwacht werden:

 cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[1] sdj4[1] 
      [>....................]  reshape =  1.8% (9186496/484190976)
                              finish=821.3min speed=9638K/sec [UUUUUUUUUU__]

Aber wir müssen nicht warten.

Ändern Sie die Größe von PV, LV und Dateisystem auf das Maximum:

pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1

Legen Sie Ersatzlaufwerke als Ersatzlaufwerke ein

Hier gibt es nichts zu tun, alle Ersatzlaufwerke in einem Array werden automatisch ersetzt. Überprüfen Sie nach Abschluss Ihrer Umformung den Status:

cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[S] sdj4[S] 
Paul
quelle
Vielen Dank für diese ausführliche Anleitung. Ich warte zunächst, bis mein RAID-Array wiederhergestellt ist, nachdem eine Festplatte ausgetauscht wurde (Gesamtkapazität: 17,86 TB, es dauert einige Zeit).
Pierre Arnaud
Schauen Sie sich auch den mdadm-Spickzettel an ( ducea.com/2009/03/08/mdadm-cheat-sheet ).
Pierre Arnaud
@ Paul - superuser.com/questions/1274328/... Flagge dieser Kommentar zum Entfernen , nachdem Sie bestimmen , ob Sie den Benutzer helfen kann
Ramhound
In acht nehmen! Ich denke, diese Antwort könnte zu Datenverlust führen, da: Es gibt keine Überprüfung, ob das lvm lv tatsächlich am Anfang des pv steht! (was bei lvm nicht garantiert ist). Siehe unix.stackexchange.com/questions/67702/... (und unix.stackexchange.com/questions/67702/... im Fehlerfall) für einen Weg , um das Ende des PV , um sicherzustellen , ist frei geschrumpft werden.
Ekleog
@Ekleog Vielen Dank, dieser Kommentar wäre besser als Teil der Antwort zu verstehen, falls er verpasst wird
Paul