Synology speichert die Daten seiner Apps standardmäßig auf dem ersten Volumen (volume1). Genauer gesagt in /volume1/@appstore mit Unterordnern für die jeweiligen Apps. Möchte man alle Daten auf ein anderes Volumen verschieben – beispielsweise um Festplatten auszutauschen – müssen neben den gemeinsamen Ordnern auch die Appstore-Daten der Apps verschoben werden. Ansonsten gehen alle Konfigurationseinstellungen verloren. Dieser Artikel zeigt, wie ihr besagte Daten auf ein anderes Volume verschieben könnt. Dazu ist aktivierter SSH-Zugriff auf euer NAS notwendig.
Vorbereitung: Paketdienste anhalten
In diesem Beispiel werden wir eine Migration von volume1 auf volume3 durchführen. Voraussetzung ist dementsprechend, dass ihr das neue Volume bereits angelegt habt. Verbindet euch per SSH auf euer Synology-NAS und stoppt alle aktiven Anwendungen. Dies ist per SSH über das Script /var/packages/${PaketName}/scripts/start-stop-status möglich, beispielsweise
/var/packages/AudioStation/scripts/start-stop-status stop
um die AudioStation zu beenden. Als bequemere Alternative empfehle ich die grafische Oberfläche, welche ihr im Browser über den Hostname bzw. die IP-Adresse eures NAS erreicht. Dort navigiert ihr zu Hauptmenü > Paketzentrum > Installiert und klickt jeweils eine Anwendung an
Nach einer Bestätigung dauert es einen Augenblick, bis der Dienst gestoppt wurde. Dieser Vorgang muss mit allen laufenden Apps wiederholt werden, die ihr verschieben möchtet.
Daten verschieben und Symlinks aktualisieren
Nun geht es an die eigentlichen Daten. Am sinnvollsten verschiebt ihr den gesammten @appdata Ordner mit folgendem Befehl:
mv /volume1/@appstore /volume3
Abhängig von der Anzahl eurer Apps und deren Datenmenge kann das Verschieben einige Sekunden in Anspruch nehmen.
Damit unsere Apps fortan den neuen Pfad verwenden, müssen wir deren symbolische Links aktualisieren. Diese befinden sich jeweils unter /var/packages/${PaketName}/target und zeigt auf den jeweiligen Hauptordner der App im /volume1/@appstore Verzeichnis. Für die AudioStation beispielsweise wie folgt:
NAS> ls -lh /var/packages/AudioStation/target lrwxrwxrwx 1 root root 31 Jan 25 19:12 /var/packages/AudioStation/target -> /volume1/@appstore/AudioStation
Mit folgendem Befehl aktualisieren wir ihn:
NAS> ln -f -s /volume3/@appstore/AudioStation /var/packages/AudioStation/target
Der Parameter f ist an dieser Stelle notwendig, um den alten Link zu überschreiben. Zur Kontrolle können wir mit dem vorherigen Befehl noch einmal überprüfen, ob der Verweis nun auf den richtigen Pfad zeigt:
NAS> ls -lh /var/packages/AudioStation/target lrwxrwxrwx 1 root root 31 May 7 19:48 /var/packages/AudioStation/target -> /volume3/@appstore/AudioStation
Das hat funktioniert, und muss für jedes installierte Paket wiederholt werden. AudioStation ist durch den jeweiligen Namen des Pakets in den Pfaden zu ersetzen – beispielsweise CloudStation oder PhotoStation. Abhängig davon, welche Apps man installiert hat und verwendet.
Anschließend kann man die Dienste über das Paketzentrum wieder starten. Hier erscheint möglicherweise die Fehlermeldung, dass der Vorgang fehlgeschlagen sei:
Dies kann ignoriert werden und liegt vermutlich am fehlenden Index, den wir später neu erstellen. Wie man im Paketmanager sieht, werden die Apps trotzdem gestartet. Anschließend sollte man sich jedoch tatsächlich Abmelden (Personen-Icon rechts oben) und wieder anmelden.
Pfade anpassen
Vor allem Mediendateien werden nach dem Verschieben nicht mehr gefunden, weil im alten Pfad gesucht wird. So findet beispielsweise die VideoStation keine Filme. Dieses Problem muss teilweise anwendungsspezifisch gelöst werden.
Audio Station
Dazu öffnen wir im Browser die Systemsteuerung > Medienbibliothek (unter Anwendung) > erster Tab Medienbibliothek. Hier auf den Button Neu indizieren klicken. Abhängig von der Anzahl der zu indizierenden Medien kann dies eine Weile dauern. Nach Abschluss des Vorgangs werden alle Medien wieder gefunden.
Solltet ihr oder eure Nutzer Playlists verwenden, müssen die Pfade zu den Titeln dort ebenfalls noch angepasst werden. Ansonsten findet DSM die Lieder nicht und verweigert das Abspielen. Die Wiedergabelisten befinden sich im Pfad /usr/syno/etc/preference/{Benutzername}/playlists als M3U-Dateien. Am schnellsten werden die alten Pfade mit sed ersetzt:
sed -i "s/..\/volume1\/music/..\/volume3\/music/" *.m3u
Dieses Beispiel ersetzt /volume1/music durch /volume3/music in allen M3U-Playlists des aktuellen Ordners.
Video Station
Hier habe ich keinen anderen Weg gefunden, als manuell die Pfade in der Datenbank zu ersetzen. DSM speichert die Medieninformationen in einer PostgreSQL-Datenbank. Bevor an dieser Veränderungen vorgenommen werden, empfiehlt sich das Anlegen eines Backups mit folgendem Befehl:
psql -U postgres mediaserver > mediaserver-backup.sql
Anschließend werden alle Pfade in der Datenbank ersetzt:
psql -d mediaserver -U postgres -c "update directory set path=replace(path, '/volume1/video/', '/volume2/video/');"