Verteiltes Rechnen mit der DiskStation anhand von distributed.net

Aus
Installation von Software, die nicht von Synology kommt geht immer auf eigenes Risiko. 
Zum Teil sind dabei tiefe Eingriffe ins System nötig und das muss über die Konsole erledigt werden. 
Dabei besteht das Risiko von Fehlmanipulationen die bis zur Neuinstallation der DS führen können. 
Und dabei ist das Risiko sehr groß, dass auch die Partitionen mit Userdaten formatiert werden müssen.

Also alles was ihr macht geht auf Eure eigene Kappe :-)

Was macht die DiskStation, wenn man nicht gerade darauf arbeitet? Relativ wenig! Ich habe mir überlegt, dass es bei der Rechenleistung, die die DiskStations haben diese selten durchgehend ausgelastet werden. In diesem Artikel geht es um die Möglichkeit, die DiskStation beim verteilten Rechnen teilnehmen zu lassen. Um mehr über das Projekt zu erfahren: http://www.distributed.net/Projects

Voraussetzungen

Ich gehe in diesem Artikel davon aus, dass der geneigte Leser weiß:

  • wie man im Besitz einer DiskStation kommt: von mir getestet wurden die NASes welche den linux-arm-eabi Client benutzen müssen:
    • DS209
    • DS212
    • DS212+
    • DS215+(Hinweis: "ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3" im Terminal einmalig vorher ohne " eingeben)

Die PowerPC und Intel basierten Synology NAS könnten mit den jeweils verfügbaren Linux Versionen funktionieren. Dies müsste noch getestet werden.

    • Zusatz: DS110j (linux-arm-eabi Client) und DS712+ (linux-amd64 Client) erfolgreich getestet!!!
  • dass die DS nicht ständig voll ausgelastet sein darf, um einen Beitrag beim verteilten Rechnen leisten zu können
  • dass die DS ins Internet kommen muss
  • wie man sich per Telnet/SSH auf die DS einloggt
  • wie man den vi-Editor bedient

Hinweis

  • die NAS wird beim Zugriff langsamer, weswegen ich diesen Klient nur über Nacht laufen lasse, da ich dann darauf normalerweise nicht so oft arbeite. Für diejenigen die über Nacht backups oder anderes CPU intensives laufen lassen sollten andere Laufzeiten gewählt werden.
  • möglicherweise verbraucht die NAS dadurch etwas mehr Strom, bei mir ist die max. Stromaufnahme ohne weiteren Festplattenzugriff von 14 auf 15 Watt gestiegen (DS209).
  • Temperaturprobleme sind bei mir mit max. 47 Grad Celsius Systemtemperatur (ohne weiteren Festplattenzugriff) bei 23 Grad Celsius Raumtemperatur beim Laufen des Klients nicht aufgetreten, was nicht bedeutet, dass es in jeder Umgebung und mit jeder verbauten Festplatte(n) genauso ist. Im Sommer sollte man ein Auge auf die Temperatur der NAS haben und ggf. den Client deaktivieren.
  • Wie immer geschieht die Modifikation auf eigene Gefahr!!!

Installation

Über die Konsole

$ wget http://http.distributed.net/pub/dcti/current-client/dnetc-linux-arm-eabi.tar.gz
$ tar xvf dnetc519-linux-arm-eabi.tar.gz

Über die File Station

  1. Die Datei (verlinkt unter Linux > [ARM/eabi]): dnetc-linux-arm-eabi.tar.gz auf die NAS herunterladen: http://www.distributed.net/Download_clients
  2. In der File Station mit rechte Maustaste > "Hier extrahieren" entpacken

Konfiguration des Klients

Der Klient wird in der Konsole gestartet mit:

$ /path/to/executable/dnetc
  (Beispiel: /volume1/public/dnetc519-linux-arm-eabi/dnetc)

Beim ersten Start öffnet sich die config (um eventuell später wieder in das Menü reinzukommen dnetc -config ausführen).

  1. Hier ist 1 > 1 betätigen um die Mailadresse (auf welche die Pakete "gutgeschrieben" werden). distributed.net versendet keinen Spam!
  2. Als nächstens sollte man sich entscheiden, welche der beiden Projekte man rechnen lässt (wenn man nach der Mailadresse nichts mehr konfiguriert werden beide Projekte also RC5-72 und OGR-NG gerechnet) also im Hauptmenü 2 > 9 wählen und das Projekt wählen. Ich rechne ausschließlich OGR-NG (da RC5-72 geschätzte 900 Jahre gerechnet werden muss), also OGR-NG,RC5-72=0

Einstellen der Laufzeit

Zu einer bestimmten Zeit

Folgendes kann in /etc/crontab eingetragen werden:

#minute hour    mday    month   wday    who     command
# startet den Klient um 0 Uhr für 12 Stunden
0       0       *       *       *       root    /volume1/public/dnetc519-linux-arm-eabi/dnetc -h 12:00 -hide

# updated den Klient mit neuen Paketen
1       12      *       *       *       root    /volume1/public/dnetc519-linux-arm-eabi/dnetc -update &

Die Leerzeichen sind durch TABs zu ersetzen.

Wenn keine SMB Verbindungen bestehen

Da die DS in die Knie geht, wenn dnetc und beispielsweise SMB (Windows Freigaben) aktiv sind, habe ich ein Script geschrieben, dass dnetc nur gestartet wird, wenn keine SMB Verbindungen gerade bestehen. Die Scriptdatei kann beispielsweise unter /etc/rc.local zum Starten eingetragen werden. Ich habe die Datei "startclient" benannt und in das dnetc Verzeichnis gelegt:

#!/bin/ash                                                                                                           
#start dnetc if no network access to DS is detected 
#and kill if network access to DS is detected

while true; do
    if [ $(netstat -t | grep microsoft | wc -l) -ge 1 ]; then
       killall -q dnetc; 
    else
       if [[ ! $(pidof dnetc) ]]; then
          /volume1/public/dnetc519-linux-arm-eabi/dnetc -lurk -hide
       fi
    fi
sleep 5;
done;

The End

Ich hoffe dieser Artikel ist verständlich und hilfreich. Wer Verbesserungen hat, ist gerne eingeladen diese hier einzupflegen.