Festplatte aus Speicherpool entfernen (... auf Kommandozeile)

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
'Nabend zusammen,

bevor mir zu langweilig wird, wollte ich mich zum nächsten Himmelfahrtskommando auf machen. Scherz beiseite, mein Ziel ist es aus einem Speicherpool (SHR) eine Platte zu entfernen, die nicht erforderlich ist. Derzeit sind 6 Platten á 10TB drin, ich brauche aber nur maximal 30TB. Mit "etwas" Luft würde ich fünf Platten im Verbund belassen und die übrige dann als Hot-Spare nutzen wollen.

Da DSM ja auch nur mit Wasser kocht und LVM nutzt, dachte ich mir, ich mache das mal auf der Kommandozeile. mdadm ist ja verfügbar und scheinbar auch die "grow" funktion

Zunächst mal meine Frage: Hat das schonmal jemand auf 'ner Synology gemacht und Tipps, was zu beachten ist?

Auf einem Linux-Fileserver hatte ich das vor 40 Jahren (;-) mal problemlos gemacht, so Rocket-Scienece ist das ja nicht. Ich bin mir nur nicht sicher, ob Synology da irgendwelche Besonderheiten eingebastelt hat.

Viele Grüße vom bonnerchen
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.310
Punkte für Reaktionen
2.870
Punkte
423
Du hast Recht, auch Synology kocht nur mit Wasser. Ich habe bisher auf der DS aber nur mal ein Raid1 wieder auf Basis reduziert.

Aber auf einer Ubuntu-VM habe ich schon einiges probiert. Dort hatte ich ein Raid5 (/dev/md0) aus 3 virtuellen 1GB Platten (sd[b-d]) zunächst um eine weitere 1GB-Disk (sde) erweitert und nachher wieder reduziert. Schau bei dir erstmal mit "cat /proc/mdstat" nach was Sache ist. Im Gegensatz zu meinem Versuch arbeitet die DS nicht mit rohen Platten, sondern mit Partitionen (sda3 ...), auch dürfte das Raid auf der DS eher /dev/md3 sein (md0 ist DSM, md1 ist Swap als Raid1 über alle interne Platten).

Aber vielleicht hilft dir das ja trotzdem weiter. Hier ein Teil meiner Mitschrift:
Code:
...
# Raid5 (2GB netto) mit 3 Platten um 1GB (sde) erweitern
# sde zunächst wieder als Hot Spare hinzufügen
mdadm /dev/md0 --add /dev/sde
#... dann damit erweitern
mdadm --grow --raid-devices=4 /dev/md0
# Filesystem erweitern
umount /dev/md0
fsck.ext4 -f /dev/md0 #<- sonst klappt resize2fs nicht
resize2fs /dev/md0
mount /dev/md0 /volume1
# /dev/md0 hat nun 3GB netto

# Versuch, das Raid5 wieder auf 3 Disks zu verkleinern
# zunächst erforderliche Größe für Filesystem und Raid ermitteln
root@pcvubuntu64:~# mdadm --grow --raid-devices=3 /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 2093056

umount /dev/md0
# Filesystem auf 2093056K verkleinern
fsck.ext4 -f /dev/md0
resize2fs /dev/md0 2093056K  #<- s bedeutet 512k-Blöcke, K bedeutet KB-Blöcke wie bei mdadm/mdstat
# md0 verkleinern
mdadm --grow /dev/md0 --array-size=2093056
# md0 auf 3 Platten reduzieren
mdadm --grow --raid-devices=3 /dev/md0 --backup-file /tmp/md0.backup # <-backup-file ist Pflicht, sde ist dann wieder Hot Spare
mdadm --remove /dev/md0 /dev/sde
mdadm --zero-superblock /dev/sde
mount /dev/md0 /volume1
Für manche Operationen muss das Raid "umounted" werden. Bei der Syno ging das m.W. bei DSM6 nach "syno_poweroff_task -d", bei DSM7 wohl "synospace --stop-all-spaces".
Bei einem SHR-Raid gilt es noch einiges mehr zu beachten, aber das führt hier zu weit.

Wie gesagt, alles nur gesundes Halbwissen, daher alles auf eigene Gefahr.
 
Zuletzt bearbeitet:

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
Hi Benares, danke, dann werde ich zunächst einmal weiter in die Recherche gehen. Die Info "müsste gehen" reicht mir erstmal, dann lag ich mit meiner Vermutung offensichtlich nicht so falsch.
Ich muss auf der DSM vor der Kamikaze-Aktion ja erstmal nahezu alle Servicves stoppen und werde mal sehen, wie ich alle Dienste, bis auf die zwingend notwendigen gestoppt bekomme, damit ich das volume "entmounten" kann ...
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.310
Punkte für Reaktionen
2.870
Punkte
423
Wie gesagt, probier mal die beiden Befehle "syno_poweroff_task -d" (DSM6) bzw. "synospace --stop-all-spaces" (DSM7) aus, die sollten alles stoppen, was das Volume belegt. Danach sollte der umount klappen. Selbst probiert habe ich es allerdings noch nicht.
 

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
Hallo zusammen,

die Weihnachtstage sind ja immer die Zeit, bei der man sich mit den wirklich wichtigen Dingen beschäftigt. Ich habe mal begonnen meinen "Plan" zu konkretisieren, aus einem raid 5 auf der Synology eine Platte zu entfernen.

Vielleicht kann ja mal jemand mit mir über den Plan gucken, ob offensichtliche Fehler vorhanden sind.

Ziel der Geschichte:

  • Aus einem Raid 5 /dev/md4 (SHR) soll eine Festplatte entfernt und "auf Halde" gelegt werden
  • Das Raid besteht aus 7 Festplatten
> cat /proc/mdstat
> md4 : active raid5 sata7p5[0] sata3p5[6] sata2p5[7] sata8p5[4] sata4p5[3] sata5p5[8] sata6p5[1]
> 58569593856 blocks super 1.2 level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
>
> mdadm --detail /dev/md4
> /dev/md4:
> Version : 1.2
> Creation Time : Fri Jun 21 07:34:26 2019
> Raid Level : raid5
> Array Size : 58569593856 (55856.32 GiB 59975.26 GB)
> Used Dev Size : 9761598976 (9309.39 GiB 9995.88 GB)
> Raid Devices : 7
> Total Devices : 7
> Persistence : Superblock is persistent
>
> Update Time : Sun Dec 26 12:05:07 2021
> State : clean
> Active Devices : 7
> Working Devices : 7
> Failed Devices : 0
> Spare Devices : 0
>
> Layout : left-symmetric
> Chunk Size : 64K
>
> Name : synology:4 (local to host synology)
> UUID : 89d963bb:3ec9cbf2:8dca248e:5a8fd468
> Events : 157364
>
> Number Major Minor RaidDevice State
> 0 8 101 0 active sync /dev/sata7p5
> 1 8 85 1 active sync /dev/sata6p5
> 8 8 69 2 active sync /dev/sata5p5
> 3 8 53 3 active sync /dev/sata4p5
> 4 8 117 4 active sync /dev/sata8p5
> 7 8 21 5 active sync /dev/sata2p5
> 6 8 37 6 active sync /dev/sata3p5

  • Das Raid steht dem System als vg2 (Speicherpool 3 im DSM) zur Verfügung
Architektur:
> pvdisplay md4
> --- Physical volume ---
> PV Name /dev/md4
> VG Name vg2
> PV Size 54.55 TiB / not usable 128.00 KiB
> Allocatable yes
> PE Size 4.00 MiB
> Total PE 14299217
> Free PE 78
> Allocated PE 14299139
> PV UUID fr8i23-flbc-Inqj-I5dW-FZco-dKEX-IBn8Em

  • Auf der vg2 liegt neben der "syno_vg_reserved_area" noch das "volume_4"
> lvdisplay vg2
> --- Logical volume ---
> LV Path /dev/vg2/syno_vg_reserved_area
> LV Name syno_vg_reserved_area
> VG Name vg2
> LV UUID om42or-dfte-XObU-tWBQ-6vyA-Pebj-FGIiPw
> LV Write Access read/write
> LV Creation host, time ,
> LV Status available
> # open 0
> LV Size 12.00 MiB
> Current LE 3
> Segments 1
> Allocation inherit
> Read ahead sectors auto
> - currently set to 1536
> Block device 252:2
> --- Logical volume ---
> LV Path /dev/vg2/volume_4
> LV Name volume_4
> VG Name vg2
> LV UUID H0C4xz-VMwv-Qxsl-LXW9-eVFY-IZWD-gmfgpd
> LV Write Access read/write
> LV Creation host, time ,
> LV Status available
> # open 1
> LV Size 54.55 TiB
> Current LE 14299136
> Segments 1
> Allocation inherit
> Read ahead sectors auto
> - currently set to 1536
> Block device 252:3

Der Plan:

Die letzte Platte (sata3p5 aus Bay 3) soll entfernt werden
  • Schritt 1: Filesystem auf Volume 4 verkleinern
  • Schritt 2: Logisches Volume /dev/vg2/volume_4 verkleinern (im Sytem als /dev/mapper/cachedev_0 eingebunden)
  • Schritt 3a: Raid verkleinern
  • Schritt 3b: Platte aus Raid entfernen

Schritt 1 - Filesystem von volume4 verkleinern

Zusätzliche Admin-Tools aktivieren
> synogear install
Alle Dienste stoppen
> synospace --stop-all-spaces
Prüfen, ob noch etwas auf volume4 zugreift
> lsof | grep volume4
Verbrauchte Größe ermitteln (Größe in GB)
> df -BG /volume4
> Filesystem 1G-blocks Used Available Use% Mounted on
> /dev/mapper/cachedev_0 53622G 28589G 15034G 72% /volume4

Volume entmounten
> umount /volume4
Filesystem Prüfen
> e2fsck -fy /dev/mapper/cachedev_0
Filesystem verkleinern
> resize2fs /dev/mapper/cachedev_0 29000G
Filesystem Prüfen
> e2fsck -fy /dev/mapper/cachedev_0
System booten
> shutdown -r now

Schritt 2 - Logische Partition verkleinern

Zusätzliche Admin-Tools aktivieren
> synogear install
Alle Dienste stoppen
> synospace --stop-all-spaces
Prüfen, ob noch etwas auf volume4 zugreift
> lsof | grep volume4
Volume entmounten
> umount /volume4
Volume auf 30000GB reduzieren
> lvm reduce -L 30000G /dev/mapper/cachedev_0
Filesystem Prüfen
> e2fsck -fy /dev/mapper/cachedev_0
System booten
> shutdown -r now

Schritt 3 - Festplatte aus RAID entfernen

Zusätzliche Admin-Tools aktivieren
> synogear install
Alle Dienste stoppen
> synospace --stop-all-spaces
Prüfen, ob noch etwas auf volume4 zugreift
> lsof | grep volume4
Volume entmounten
> umount /volume4
Raid stoppen
> mdadm --stop /dev/md4
Raid reduzieren
> mdadm --grow /dev/md4 -z 30000G
Device entfernen
> mdadm --zero-superblock /dev/sata3p5
System booten
> shutdown -r now

... und dann müsste alles so sein, wie bisher :rolleyes:

Quellen:

https://www.rootusers.com/lvm-resize-how-to-decrease-an-lvm-partition/
https://www.casesup.com/category/knowledgebase/howtos/how-to-shrink-an-lvm-volume-safely-on-linux
https://www.thomas-krenn.com/de/wiki/Software_RAID_mit_MDADM_verwalten
https://documentation.suse.com/sles/12-SP4/html/SLES-all/cha-raid-resize.html
 

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
Mir ist in Schritt 3 noch ein Fehler unterlaufen, leider kann ich den obigen Artikel nicht mehr ändern :-(

Wenn das alles funktioniert (hat), mache ich daraus gerne einmal ein HowTo!

Schritt 3 - Festplatte aus RAID entfernen

Zusätzliche Admin-Tools aktivieren
> synogear install
Alle Dienste stoppen
> synospace --stop-all-spaces
Prüfen, ob noch etwas auf volume4 zugreift
> lsof | grep volume4
Volume entmounten
> umount /volume4
Raid stoppen
> mdadm --stop /dev/md4
Raid reduzieren
> mdadm --grow /dev/md4 -z 30000G
Anzahl Devices reduzieren (von 7 auf 6)

> mdadm --grow /dev/md4 --raid-devices=6 --backup-file=/tmp/raid_backup
Prüfen, welche Platte entfernt wurde
> cat /proc/mdstat
System herunterfahren
> shutdown -h now
Entsprechende Platten entfernen und System einschalten

Quellen:

https://www.rootusers.com/lvm-resize-how-to-decrease-an-lvm-partition/
https://www.casesup.com/category/knowledgebase/howtos/how-to-shrink-an-lvm-volume-safely-on-linux
https://www.thomas-krenn.com/de/wiki/Software_RAID_mit_MDADM_verwalten
https://documentation.suse.com/sles/12-SP4/html/SLES-all/cha-raid-resize.html
https://blog.stalkr.net/2009/10/reducing-number-of-devices-in-raid-5.html
 
Zuletzt bearbeitet:

nas-central.de

Benutzer
Lösungspartner
Mitglied seit
22. Jun 2021
Beiträge
136
Punkte für Reaktionen
29
Punkte
34
Wir haben gerade ein NAS hier stehen, bei dem wir genau die gleiche Aufgabe zu lösen haben. Bisher ist unser Ansatz, das NAS einfach auf ein anderes NAS mit dem gewünschten Layout zu clonen. Das ist einfacher und für die Daten sicherer, weil man den original Datenbestand nicht verändert. Aber in der Regel hat man kein zweites NAS und genügend Platten rum stehen.

In deiner ersten Anleitung hat das Raid Reshapeing gefehlt. Das macht der Befehl in deinem letzten Post.

Das Betriebssystem umd tmpfs liegen auf einem Raid1, dass über alle Platten geht. Wenn du die Platte raus ziehst sollte das NAS die Platte aus diesen beiden Raids automatisch entfernen. Ob man so alles erwischt hat wird man sehen.

Ich wünsche dir viel Erfolg und bin auf deinen Bericht gespannt ;-)
 

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
Danke für die Rückmeldung!

Ein zweites NAS steht mir leider nicht zur Verfügung, daher ist das mein Ansatz ;-)

Ich glaube, das mit dem Reshaping ist mir auch aufgefallen, daher habe ich den Schritt 3 angepsst. Ich lassen den Plan mal ein paar Tage liegen, das hilft wie bei einem guten Wein.

Viele Grüße vom

bonnerchen!
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: ctrlaltdelete

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
10.104
Punkte für Reaktionen
3.644
Punkte
414
@bonnerchen Darf ich fragen was daraus geworden ist?
 

bonnerchen

Benutzer
Mitglied seit
04. Jul 2019
Beiträge
44
Punkte für Reaktionen
2
Punkte
8
Sorry, hatte ich vergessen ;-)

Theoretisch müsste es funktionieren, ich hatte es aber praktisch nicht ausprobiert, da ich mein "Problem" anders gelöst bekommen hatte.

Ein vergleichbares Verfahren habe ich auf einem virtuellen Ubuntu-Linux erfolgreich testen können. Das bedeutet, dass das Verfahren grundsätzlich geeignet ist.
 
  • Like
Reaktionen: ctrlaltdelete


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat