Synology: Dateisystem im laufenden Betrieb ändern

Ich habe meine DS213j (lies: Ein 2-Bay-NAS der kleinsten (“j”-) Reihe von Synology von 2013) gegen die aktuelle Version DS223j getauscht. Das geht, was die Hardware angeht, erstaunlich einfach: Platten raus aus der 213, in derselben Reihenfolge rein in die 223, dem Wizard folgen, fertig.

meine Beweggründe waren initial:

  • USB 3.x, denn 3TB über USB 2 zu backupen macht keinen Spaß.
  • Gigabit Netzwerk. Vollformat RAW-Fotos über 100MBit macht nämlich auch keinen Spaß. Außerdem ist es kontraproduktiv, wenn die Internetverbindung schneller ist (hier 300 MBit) als die Netzwerkschnittstelle des NAS 🙂

Inzwischen habe ich dann gelernt, dass die DS223j die erste DiskStation der “j”-Reihe ist, die Btrfs unterstützt. Sprich: Snapshots, Kompression, Prüfsummen, … Das will ich, und sei es nur für besagte Fotos!

Nun sagt Synology, dafür müsse man alle Daten extern zwischenspeichern, die Platten platt machen und als Btrfs neu aufsetzen – btrfs-convert scheint hier unbekannt. Es gibt allerdings einen Weg, das “live” zu tun 🙂 Das Folgende basiert stark auf diesem Post, der aber für ein 4-bay-NAS geschrieben wurde, auch ansonsten sehr zu detailliert ist, und dabei trotzdem einige nützliche Details vermissen lässt:

Einschub: Es wird am Ende ein “Synology Hybrid Raid” (SHR) mit “One-Drive Fault Tolerance” sein, was RAID 1 entspricht. Der – dann einzige – Speicherpool wird “Speicherpool 2” heißen, das – dann einzige – Volume wird “Volume 2” heißen.

  1. Mach genug Backups, um Dich angesichts der Gefahr eines kompletten Datenverlusts auf dem NAS an sich “wohlzufühlen”.
    • PS: Die NAS-Konfiguration wird inzwischen zwar automatisch in der Cloud gespeichert, aber unter Systemsteuerung > Aktualisieren & Wiederherst. > Konfigurationssicherung kann man sie selber auch noch mal exportieren
  2. Prüfe alle Backups – das ist wichtig, bei mir schlug eine Prüfung fehl!
    • Tipp: Man kann auch mal eine Datei aus einem Backup öffnen, das scheint mir insbesondere bei datenbankbasierter Speicherung ratsam
  3. Prüfe alle Platten auf Integrität
    • PS: “Datenbereinigung” ist nur verfügbar auf Btrfs, sowie SHR mit mindestens drei Laufwerken. Nicht in meinem Szenario, will ich sagen.
  4. Jetzt wird Platte 2 (!) deaktiviert: Speicher Manager > HDD/SSD > Rechtsklick auf Laufwerk 2 > Laufwerk deaktivieren
    • Nun wird das NAS wild piepen, das kann man stummschalten unter Systemsteuerung > Hardware & Energie > Signaltonsteuerung > Stummschalten
  5. Hier sagt der verlinkte Post, man müsse/könne/solle Platte 2 ausbauen und an einem anderen Rechner formatieren. Das wollte ich auch tun, aber mein SATA-USB-Adapter ging irgendwie nicht. Ich habe die Platte unverändert wieder eingebaut, wo das Folgende dann trotzdem problemlos möglich war.
  6. Neuen Speicherpool im Speicher-Manager anlegen. Neues Volume darin anlegen (maximale Größe, Btrfs natürlich)
  7. Dann kann die Migration losgehen. Dafür gibt es zwei Möglichkeiten:
    1. Systemsteuerung > Freigegebener Ordner > Rechtsklick auf jeden Ordner > Bearbeiten > “Ort” ändern. Wichtig: Außerdem unter “Erweitert” die “Daten-Prüfsumme”, denn das kann man nachträglich nicht mehr!
      • Vorteile: Sehr einfach, die Zuordnung zu Backup-Tasks bleibt rudimentär erhalten
      • Nachteil: Kann nach beliebiger Zeit schiefgehen! Dann hat man den Platz auf Volume 2 bereits belegt, die Dateien werden aber in der File Station nicht angezeigt! Lösung ist, sich per SSH einzuloggen (Aktivierung unter Systemsteuerung > Terminal & SNMP), Dateien unter /volume2/@tmp/ manuell löschen (du half mir). Die Zeit ist natürlich trotzdem verloren
    2. Unter Systemsteuerung > Freigegebener Ordner neue Ordner anlegen, und die Daten dann manuell rüberschieben
      • Nachteil: Aufwändiger
      • Vorteile: Flexibler, schlägt früher fehl
      • PS: Das ist auch ein praktikabler Weg, um nachträglich Prüfsummen einzuschalten
  8. Irgendwann ist Platte 1 “leer” (1.4GB waren bei mir trotzdem noch belegt; laut SSH für DSM, nginx, etc.) und kann selbst im Speicher-Manager entfernt werden – DSM wird dann warnen, dass eine gewisse Menge Apps davon betroffen sind. Diese Apps sollt man idealerweise manuell deinstallieren, bevor man Platte 1 wirklich entfernt! Gute Gelegenheit, auch hier mal aufzuräumen. PS: Man kann pro App entscheiden, ob Settings erhalten bleiben sollen.
  9. Jetzt wird Platte 1 wirklich entfernt (dauert kurz), danach der Speicherpool 1 an sich.
  10. Unter Speicherpool 2 kann man via “Laufwerk hinzufügen” Platte 1 hinzufügen – Achtung, der Prozess dauert eine ganze Weile, denn hier werden die Daten ja erneut gespiegelt. Bei mir mit 1.4 belegten TB von insgesamt 2.7 TB (“3” TB) dauert es gut 7 Stunden.
  11. Nun kann man Aufräumen, Apps neu installieren, Datenbereinigung ausführen, und – wenn man unter Punkt 7.2. umsortiert hat – direkt ein neues Backup anlegen. Spätestens damit sollte dann aber alles fein sein.
    • PS: Man erschreckt erst ein wenig, weil Volume 1 weg ist, aber ein Klick auf Speicherpool 2 oder Volume 2 zeigt, dass nun beide Laufwerke diesem zugeordnet sind. Nein, Stand heute kann man die nicht umbenennen 🙂

 

Was habe ich nun gelernt?

  • Datenbankbasierte Backups sind stuhl
    • ich habe erst heute gelernt, dass eines meiner Backups defekt war. Mit immerhin drei Dateiversionen der fraglichen defekten Datei darin. Sie war noch nie korrekt gespeichert worden, was Hyper Backup aber offenbar nie aufgefallen ist, auch nicht beim (wieder fehlerhaften!) Überschreiben.
    • Man kann das auch nicht reparieren! Schon gar nicht punktuell die eine defekte Datei. Man kann noch aus dem Backup lesen, aber es nicht mehr beschreiben – man muss es komplett neu erstellen dafür (oder man versucht dies)
  • kleinere “Freigegebene Ordner” sind besser!
    • sie sind leichter umzuziehen, siehe Punkt 7
    • sie sind schneller zu backupen, siehe vorheriger Punkt
    • sie sind auch feingranularer freizugeben und/oder zu verschlüsseln und/oder zu komprimieren und/oder mit Prüfsummen zu versehen
  • Man kann (und vermutlich: sollte) seine Daten ein wenig pflegen:
    • Defragmentierung: Ja, das geht! Vielleicht nicht das Schlechteste, nachdem man die Daten gerade 1x auf links gedreht hat.
    • einen SMART-Test haben wir ja gerade durchgeführt, aber man kann den auch planen
    • Apropos planen: Für den Speicherpool kann man eine “Datenbereinigung planen” (Knopf oben) oder – erstmalig – “Jetzt ausführen” (Knopf ca. mittig). Meine ist eben erfolgreich durch 🙂
    • ggf. geplante Integritätsprüfungen für (geplante!?) Backups
    • ggf. regelmäßige Snapshots erstellen, wozu es allerdings einer weiteren App bedarf, siehe auch Details hier

Hm: Nun ist auch dieser Eintrag ziemlich lang geworden 🙂

hth!

Synology: Seinen eigenen DDNS-Service hosten

Achtung: Setzt inwx.de als Registrar voraus!

Der Service

Auf xuad.net gibt es eine entsprechende Anleitung für einen DDNS-Service, auf GitHub liegen die Sourcen. Dabei ist einiges zu beachten:

Man muss dieses Skript unter einer anderen (Sub-) Domain als das DDNS-“Ziel” laufen lassen, klar. Sobald man die DDNS-Domain dynamisch um-mapped, ist das Skript sonst nicht mehr erreichbar.

Wer bei INWX ein Passwort mit Sonderzeichen verwendet, sollte es in der .ini in Anführungszeichen setzen.

Wenn man die IP auslesen möchte, statt sie zu übergeben (siehe Comments in dem Post), und der Server nur schon IPv6 spricht, sollte man den hier beschriebenen “Fix” verwenden, denn INWX erwartet eine v4-Adresse:

Darüber hinaus muss bei INWX ein expliziter Eintrag für die Subdomain angelegt sein. Das Skript ruft diesen bestehenden Eintrag ab, extrahiert eine ID, und updated dann über diese ID. Gibt es keinen Eintrag, gibt es auch keine ID, und das Update kann nicht durchgeführt werden. Ein Wildcard-Eintrag genügt nicht.

Dann sollte das klappen. Falls nicht, kann man im DDNSManager.php Debugging einschalten, um Request und Response an INWX ausgeben zu lassen:

Und/oder PHP-Fehler anzeigen, klar:

 Den Service aufrufen (lassen)

Interessanter ist die Frage, wie und wann sich das NAS dann registriert. Der hauseigene DDNS-Client bietet zwar drölfzig Anbieter zur Auswahl, aber kein Feld für custom Skripte 🙁

Erste Idee: cron. Zwar bringen die Synologys cron mit, allerdings will man sich mit einem regelmäßigen Cronjob ja nicht seinen Ruhezustand versauen.

Zweite Idee: dhclient-exit-hooks.d (siehe auch), dhcpcdnetworkmanager, oder irgendwas, das einen Hook bei IP-Änderung bietet. Gibt es auf einem Synology offenbar (so) nicht.

Dritte Idee: Den erwähnten DDNS-Dienst pimpen. Google liefert tatsächlich einen Ansatz:

  • per SSH auf dem NAS einloggen, Benutzer “root”, Passwort vom “admin”-Account
  • /etc.defaults/ddns_provider.conf editieren (bsplw. mit vi)
  • Einen neuen Eintrag anlegen a la

Hier wäre übrigens möglich, die IP zu übergeben, dann muss man sie nicht auslesen: Neben __USERNAME__ und __PASSWORD__ sind __HOSTNAME__ und __MYIP__ möglich. Trotzdem: Die IPv6-Übersetzung scheint angebracht, wie gesagt wegen INWX.

htaccess-Authentifizierung habe ich hier nicht hinbekommen, sobald sich das ändert, gibt es hier ein Update.

Nun kann man im DSM seinen neuen DDNS-Service auswählen; “Hostname” kann in diesem Fall mit irgendwas gefüllt werden, da er in der Query-URL ja nicht verwendet wird

HTH