Schlagwort-Archive: admin

UMS als systemd Service

Der Universal Media Server ist praktisch um Musik oder Filme und Serien zum Beispiel über eine Playstation abspielen zu können. Besonders wenn man einen kleinen Server laufen hat. In dem Fall soll der UMS natürlich beim Systemstart ebenfalls starten. Leider hat der UMS manchmal aber auch seine macken, insbesondere leidet er an gelegentlichen Exceptions und lässt den Speicher voll laufen.

Installation als Service

Neuere Systeme, z. B. CentOS 7 oder die aktuelle LTS Ubuntu-Variante Yakkety Yak nutzen systemd anstelle von init.d zum Starten von Systemdiensten. Es gibt einige Ressentiments dagegen und viele Diskussionen. Es spielen sogar irgendwie Nazis rein :D

[…] he’s your typical German that’s into efficiency and control, and that’s the philosophy the software is built around. Doing everything as efficiently as possible with whatever is available. This doesn’t mesh too well with the (arguably very American) Linux philosophy of modularity and freedom of choice. [1]

Gemeint ist hier wohl Entwickler Lennart Poettering und sein Beitrag zur Klärung. Ein weiter deutscher Entwickler ist Kay Sievers, der durch seine Art scheinbar Stress mit Linus Torvalds hat, der mal wieder einen seiner epischen Rants abgelassen hat

Wie dem auch sei, man kann den UMS auch mit systemd starten.

Zur Konfiguration des Media Servers als Service wird in der Datei

/etc/systemd/system/ums.service

die Konfiguration hinterlegt. UMS kommt bereits mit einem Startscript namens UMS.sh, was als Startkommando ExecStart hinterlegt wird. Wie es sich gehört, sollte der Media Server auch mit seinen eigenen Benutzerrechten laufen, in diesem Fall als Nutzer ums.

Im bereich [Install] wird angegeben, wann der Service gestartet werden soll, in diesem Fall also beim Systemstart vom Ziel multi-user.

[Unit]
Description=Universal Media Server
 
[Service]
Type=simple
User=ums
Group=ums
ExecStart=/opt/UMS/UMS.sh
 
[Install]
WantedBy=multi-user.target

Nun muss der Service noch aktiviert werden.

systemctl enable ums.service
systemctl start ums.service

Neustart des Service

Eigentlich könnte es das schon gewesen sein. Leider stürzt der Server manchmal ab oder belegt zu viele Resourcen. Eine Möglichkeit das zu umgehen ist ein regelmäßiger Neustart.

Das kann man mit systemd auch automatisieren, es ist ein cron ähnlicher Scheduler enthalten (siehe feature creep ;) ) Die Umsetzung ist aber etwas umständlich. Zunächst benötigt man einen eigenen Service

/etc/systemd/system/umsRestart.service

dessen Aufgabe darin besteht, den gerade definierten UMS Service neu zu starten. Er soll danach direkt beendet werden, und nicht wieterlaufen. Es ist daher eigentlich kein Service im eigentlichen Sinne. Dazu wird der Type als oneshot definiert. Um einen systemd-Service neu zu starten kann der Befehl try-restart genutzt werden.

[Unit]
Description=Universal Media Server Restart Service
 
[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart ums.service

Nun fehlt noch der Timer. Dazu wird ein dritter systemd-Service benötigt, der diesmal ein anderer Typ ist und daher in der Datei

/etc/systemd/system/umsRestart.timer

mit der Endung .timer spezifiziert wird. Die genaue Uhrzeit kann als Parameter OnCalendar im 24-Stunden-Format angegeben werden, zum Beispiel nachts wenn normalerweise nichts läuft. Die verschiedenen Timer werden vom Target timer verwaltet.

[Unit]
Description=Universal Media Server Restart Timer
 
[Timer]
OnCalendar=4:45
Persistent=true
 
[Install]
WantedBy=timer.target

Damit nun alles läuft, muss die neuen Services noch gestartet werden:

systemctl daemon-reload
systemctl start umsRestart.service

Testen

Eine Liste der aktuell laufenden Timer kann mit

systemctl list-timers

angezeigt werden. Wenn alles funktioniert hat ist der UMS Restart Service in der Liste enthalten:

NEXT                         LEFT          LAST                         PASSED               UNIT                
Di 2017-04-11 00:04:01 CEST  42min left    Mo 2017-04-10 13:07:02 CEST  10h ago              apt-daily.timer     
Di 2017-04-11 02:21:04 CEST  2h 59min left Mo 2017-04-10 19:32:02 CEST  3h 49min ago         snapd.refresh.timer 
Di 2017-04-11 04:45:00 CEST  5h 23min left Mo 2017-04-10 04:45:02 CEST  18h ago              umsRestart.timer    
Di 2017-04-11 22:33:35 CEST  23h left      Mo 2017-04-10 22:33:35 CEST  47min ago            systemd-tmpfiles-clean.timer

4 timers listed.

Wichtig ist, dass der Universal Media Service tatsächlich läuft. Ansonsten kann er nämlich nicht neu gestartet werden. Das kann man testen, indem der Restart-Service direkt ausgeführt wird. Es erscheint dann eine zugegebenermaßen nicht sehr verständliche Fehlermeldung:

$ systemctl status umsRestart.service
● umsRestart.service - Universal Media Server Restart Service
   Loaded: loaded (/etc/systemd/system/umsRestart.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mo 2017-04-10 04:45:02 CEST; 18h ago
 Main PID: 28192 (code=exited, status=203/EXEC)
 
Apr 10 04:45:02 k systemd[1]: Starting Universal Media Server Restart Service...
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Main process exited, code=exited, status=203/EXEC
Apr 10 04:45:02 k systemd[1]: Failed to start Universal Media Server Restart Service.
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Unit entered failed state.
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Failed with result 'exit-code'.
Geschrieben von Kap. Zuletzt geändert am 22. April 2017.

ProLiant MicroServer Gen 8 ruhig stellen

Mein kleiner Miniserver der Reihe ProLiant von HP tut bisher was er soll, hat mich jedoch in letzter Zeit durch schrille Töne etwas gestört. Er steht auch direkt auf dem Schreibtisch, da er ja auch sehr ansehnlich ist :)

Nachdem eine Reinigung der üblichen Verdächtigen (vulgo: des Prozessorlüfters) keine Verbesserung ergab, musste ich feststellen, dass das Netzteil in einer unangenehmen Tonlage Geräusche von sich gab. Zum Glück ist es möglich das Standardnetzteil durch ein lüfterloses Modell auszutauschen. Für Leute, die schonmal einen Rechner mit dem Schraubenzieher traktiert haben, ist es ganz einfach. Alle anderen gehen so vor, wie im Folgenden beschrieben.

Was braucht man?

Um das Netzteil im MicroServer Gen 8 auszutauschen braucht man nicht einfach ein „Silent Gen 8 Power Supply“ sondern mehrere einzelne Teile:

Lüfterloses Netzteil:

Die wichtigste Komponente ist selbstverständlich die leise Stromversorgung, zum Beispiel das PicoPSU-160-XT 160W ATX Netzteil. Das kleine Netzteil passt direkt auf den ATX-Stecker der Hauptplatine. Das Netzteil kann 160 Watt mit kurzzeitigen Spitzen bis zu 200 Watt liefern.
Das PicoPSU 160-XT Netzteil für den MicroServer Gen 8 passt in den ATX-Stecker und hat einige SATA- und Molex-Anschlüsse.

Das PicoPSU 160-XT Netzteil für den MicroServer Gen 8 passt in den ATX-Stecker und hat einige SATA- und Molex-Anschlüsse.

Adapter:

Wie jedes Netzteil braucht auch die kleine Variante Strom, im Unterschied zu handelsüblichen Steckern passt jedoch nicht direkt ein Schukostecker an das PicoPSU. Eine Möglichkeit für die Stromversorgung ist ein Standard-AC/DC Adapter. Der Adapter ist natürlich viel Größer als das alte Netzteil und wird wie ein Laptop-Netzadapter hinter dem Server auf dem Boden liegen (oder sonstwo versteckt.)
Adapter für den PicoPSU 160-XT

Adapter für den PicoPSU 160-XT

Anschlusskabel:

Das PicoPSU hat für den MicroServer Gen 8 einen Anschluss zu wenig. Einige Geräte sind über einen Berg-Stecker (ein herkömmlicher, eigentlich aus der Mode gekommener Disketten-Anschluss) verbunden. Um diesen Anschluss weiterhin zu ermöglichen. Das ist die Gelegenheit den lange vergessenen Molex-Y-Adapter (für alte Stromanschlüsse von Festplatten) aus der alten Kiste mit Kabeln zu suchen. Zumindestens, wenn man so eine Kiste im Keller stehen hat. Ansonsten gibts den auch noch zu kaufen.
Standard Molex-Y-Adapter mit Berg-Anschluss.

Standard Molex-Y-Adapter mit Berg-Anschluss.

Ausbau des alten Netzteils

Bevor die Arbeiten beginnen sollte natürlich das Stromkabel vom alten Netzteil abgezogen werden. Dann kann der ATX-Pfostenstecker von der Hauptplatine abgezogen werden. Das Netzteil des Gen 8 hat noch einige weitere Anschlüsse. Die Festplatten sind über einen Molex-Adapter angeschlossen, der sich unter dem optischen Laufwerk verbirgt. Nachdem das Laufwerk gelöst und rausgeschoben worden ist, wird der Anschluss unter dem Gehäuse sichtbar. Es ist nicht notwendig, das CD-Laufwerk komplett auszubauen. Man kommt nicht direkt an den Molex-Stecker heran, sondern muss durch zwei kleine Öffnungen hindurch. Ich habe einen Schraubenzieher und den Inbusschlüssel, der sich vorne hinter der Klappe befindet, genommen um den Stecker auseinander zu ziehen.

Der zum Netzteil gehörende Stecker muss durch einen Adapter ersetzt werden.

Der zum Netzteil gehörende Stecker muss durch einen Adapter ersetzt werden.

Unter dem optischen Laufwerk befindet sich eine Molex-Steckverbindung, die gelöst werden muss.

Unter dem optischen Laufwerk befindet sich eine Molex-Steckverbindung, die gelöst werden muss.

Ein weiteres Anschlusskabel mit Berg-Stecker verläuft direkt oben auf dem Gehäuse. Das Gegenstück zum Stecker ist ziemlich fest verbaut, es lässt sich aber gut lösen wenn ein spitzer Gegenstand zum Anheben der Klemme benutzt wird.

Der Berg-Stecker, der das optische Laufwerk mit Strom versorgt.

Der Berg-Stecker, der das optische Laufwerk mit Strom versorgt.

Zum Lösen des Steckers muss etwas spitzes unter die Klemme geschoben werden.

Zum Lösen des Steckers muss etwas spitzes unter die Klemme geschoben werden.

Das Netzteil selbst ist innen und außen mit jeweils drei Schrauben fixiert, die mit dem Inbusschlüssel an der Vorderseite gelöst werden können. Anschließend kann das alte Netzteil leicht herausgenommen werden.

Drei Schrauben müssen innen entfernt werden um die Halterung zu lösen.

Drei Schrauben müssen innen entfernt werden um die Halterung zu lösen.

Drei Schrauben müssen auf der Rückseite entfernt werden um das Netzteil vom Gehäuse zu lösen.

Drei Schrauben müssen auf der Rückseite entfernt werden um das Netzteil vom Gehäuse zu lösen.

Einbau des neuen Netzteils

Das PicoPSU besteht im wesentlichen nur aus dem Pfostenstecker und kann einfach auf das Motherboard aufgesteckt werden. Das Y-Kabel wird zwischen den Molex-Anschluss des PicoPSU und den unter dem Gehäuse liegenden schwer zu erreichenden Anschluss der Festplatten geklemmt. Hier ist wieder etwas Fingerspitzengefühl oder der geschickte Einsatz eines Schraubenziehers als fester Gegenpol hilfreich.

Das PicoPSU ist sehr klein und sitzt direkt auf dem ATX-Connector der Hauptplatine.

Das PicoPSU ist sehr klein und sitzt direkt auf dem ATX-Connector der Hauptplatine.

Der Y-Adapter wird zwischen das PicoPSU und den Anschluss unter dem optischen Laufwerk eingefügt.

Der Y-Adapter wird zwischen das PicoPSU und den Anschluss unter dem optischen Laufwerk eingefügt.

Der Berg-Connector des Y-Adapters wird nach oben gezogen und einfach in das entsprechende Gegenstück eingesteckt. Zuletzt muss noch das 4-polige Anschlusskabel des Netzteils nach hinten an die Stelle des alten Netzteils gelegt werden, so dass der Netzadapter angeschlossen werden kann. Es bleibt noch ein Loch hinten in der Rückwand des Servers, der als Staubschutz noch mit einem geeigneten Stück Altmetall verschlossen werden kann. Man denke nur an oben erwähnte Kiste ;)

Der Berg-Anschluss des Y-Kabels wird mit dem oben liegenden Gegenstück verbunden.

Der Berg-Anschluss des Y-Kabels wird mit dem oben liegenden Gegenstück verbunden.

Das vierpolige Anschlusskabel für den Stromadapter wird nach hinten gezogen und durch die Lücke des alten Netzteils nach außen geleitet.

Das vierpolige Anschlusskabel für den Stromadapter wird nach hinten gezogen und durch die Lücke des alten Netzteils nach außen geleitet.

Das war’s schon, und jetzt viel Spaß mit eurem neuen, leisen Server :)

Geschrieben von Kap. Zuletzt geändert am 10. März 2017.