Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
server_und_serverdienste:systemd [2018/09/16 20:27] boospyserver_und_serverdienste:systemd [2023/08/17 22:07] (aktuell) – [Systemd Mount mit Samba] loma
Zeile 1: Zeile 1:
 ====== Systemd ====== ====== Systemd ======
 +
 +Hauseigenes Apt-Repo: [[https://apt.iteas.at]]    [[https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KE592Y5993ZKW|{{:wiki:btn_donatecc_lg.gif|}}]]
 +\\
 +\\
 Ein Service bearbeiten und personalisieren.  Ein Service bearbeiten und personalisieren. 
-<code> + 
-systemctl edit --full rc-local + systemctl edit --full rc-local 
-</code>+ 
 +Um den Defaulteditor VI von SystemD zu überschreiben bedient man sich diesem Befehl: 
 + EDITOR=nano systemctl edit --full rc-local 
 + 
 +Hier wird das komplette Service kopiert und wird von Updates des Systems nicht weiterhin berührt. Dies kann je nachdem zu irgendwann auch zu Problemen führen. Deshalb gibt es auch eine andere Variante wo die Files virtuell verschmolzen werden: 
 + EDITOR=nano systemctl edit apache2 
 + 
 +Oder wenn es ein komplett neues Unitfile ist: 
 + systemctl edit -f -l rc-local
 Man könnte auch Dienste direkt in ''/etc/systemd/system/blabla-custom.service'' kopieren. Von dem wird abgeraten. Vor allem da viele Services erst von anderen Systemddiensten nur temporär angelegt werden. Das Kommando oben extrahiert die richtigen Files automatisch.  Man könnte auch Dienste direkt in ''/etc/systemd/system/blabla-custom.service'' kopieren. Von dem wird abgeraten. Vor allem da viele Services erst von anderen Systemddiensten nur temporär angelegt werden. Das Kommando oben extrahiert die richtigen Files automatisch. 
  
Zeile 53: Zeile 65:
  
 Hier wird z.B. der xbmc Benutzer automatisch eingeloggt. Danach werden natürlich .zshrc .bashrc und auch die .xinitrc beachtet. Hier wird z.B. der xbmc Benutzer automatisch eingeloggt. Danach werden natürlich .zshrc .bashrc und auch die .xinitrc beachtet.
 +
 +===== Systemdservices über Remote ausführen =====
 +Mit Systemd ist es sehr bequem möglich Dinge zu organisieren ohne das man direkt am Host ist. z.b.
 +<code>
 +systemctl -H root@myhost.supertux.bla status apache2
 +</code>
  
 ===== NFS-Client ===== ===== NFS-Client =====
Zeile 59: Zeile 77:
   systemctl enable rpc-statd.service   systemctl enable rpc-statd.service
   systemctl enable rpcbind.service   systemctl enable rpcbind.service
 +
 +===== Mounten mit Systemd - FSTAB ruhe in Frieden =====
 +
 +==== Systemd Mount mit NFS ====
 +
 +__Testsystem: Debian 10/Proxmox 6.3__
 +
 +Die FSTAB ist mehr oder weniger überholt. Benötigt wird sie vom System wohl nur mehr für den Root Mount. Generell wird bereits bei jedem manuellen FSTAB-Eintrag ein Systemd-Unit-File generiert dass auf die FSTAB verweist. Daher wird auch empfohlen statt der FSTAB nur mehr Systemd zu verwenden, was sehr viele Vorteile mit sich bringt. Z.B. hat man damit die Möglichkeit auch Abhängigkeiten von anderen Programmen und States anzugeben. Ein praktischen nerviges Beispiel wäre wenn ein Netzwerkmount nicht immer automatisch in der FSTAB gemountet wird, weil das Netzwerk vielleicht nicht immer gleich schnell verfügbar ist. Und obwohl man in der FSTAB die Option gesetzt hat dass, das Netzwerk verfügbar sein muss, funktioniert es trotzdem doch immer nicht. Systemd schafft hier für dich Abhilfe. Auch [[https://proxmox.com/|Proxmox]] verwendet den Systemd-Mounter als Default. 
 +
 +Hier als Beispiel ein einfacher Mount einer lokalen HDD. Als erstes legst du ein sogenanntes Unit-File an. Der Mountpoint wird dabei automatisch erstellt.
 + systemctl edit -f -l "/mnt/datastore/HDD-extern-OSIT"
 +
 +Um den Defaulteditor VI von SystemD zu überschreiben bedient man sich diesem Befehl:
 + EDITOR=nano systemctl edit -f -l "/mnt/datastore/HDD-extern-OSIT"
 +
 +Wie du siehst muss der Name der exakte Mountpoint sein. Nun befüllst du das File mit diesem Inhalt:
 +<code>
 +[Install]
 +WantedBy=multi-user.target
 +
 +[Unit]
 +Description=Mount datatstore 'sicherung-osit-extern' under '/mnt/datastore/HDD-extern-OSIT'
 +
 +[Mount]
 +Options=defaults
 +Type=ext4
 +What=/dev/disk/by-uuid/d6b3aa86-aa6c-4b41-b6b2-16457820169629
 +Where=/mnt/datastore/HDD-extern-OSIT
 +</code>
 +Und NFS4:
 +<code>
 +[Install]
 +WantedBy=multi-user.target
 +
 +[Unit]
 +Description=Mount datatstore under /home/mydata
 +Requires=network.target
 +Requires=NetworkManager.service
 +Requires=network-online.target
 +
 +[Mount]
 +Options=rw,_netdev,auto,acl,exec,intr,bg,nfsvers=4,minorversion=2,x-systemd.device-timeout=60,x-systemd.mount-timeout=60
 +Type=nfs4
 +What=myhostserver.lan:/ssd-pool/mydatastore
 +Where=/home/mydata
 +</code>
 +
 +
 +Mit dem nächsten Befehl hast eine tolle Übersicht für alle Mountpoints die es gibt, und ob diese im Autostart sind oder nicht.
 + systemctl list-unit-files -t mount
 +<code>
 +UNIT FILE                                 STATE    
 +-.mount                                   generated
 +boot-efi.mount                            generated
 +dev-hugepages.mount                       static   
 +dev-mqueue.mount                          static   
 +mnt-datastore-HDD\x2dextern\x2dOSIT.mount disabled  
 +proc-fs-nfsd.mount                        static   
 +proc-sys-fs-binfmt_misc.mount             static   
 +run-rpc_pipefs.mount                      static   
 +sys-fs-fuse-connections.mount             static   
 +sys-kernel-config.mount                   static   
 +sys-kernel-debug.mount                    static
 +</code>
 +In den Autostart damit:
 + systemctl enable "mnt-datastore-HDD\x2dextern\x2dOSIT.mount"
 +Und mounten:
 + systemctl start mnt-datastore-HDD\\x2dextern\\x2dOSIT.mount
 +Bei der Mountübersicht sieht das ganze nun so aus:
 +<code>
 +UNIT FILE                                 STATE    
 +-.mount                                   generated
 +boot-efi.mount                            generated
 +dev-hugepages.mount                       static   
 +dev-mqueue.mount                          static   
 +mnt-datastore-HDD\x2dextern\x2dOSIT.mount enabled  
 +proc-fs-nfsd.mount                        static   
 +proc-sys-fs-binfmt_misc.mount             static   
 +run-rpc_pipefs.mount                      static   
 +sys-fs-fuse-connections.mount             static   
 +sys-kernel-config.mount                   static   
 +sys-kernel-debug.mount                    static
 +</code>
 +Bestehende Unitfiles kann mit dem folgenden Befehlen editieren: 
 + systemctl edit -l mnt-datastore-HDD\\x2dextern\\x2dOSIT.mount
 +oder auch:
 + systemctl edit -l "/mnt/datastore/HDD-extern-OSIT"
 +
 +==== Systemd Mount mit Samba ====
 +
 +__Testsystem: Ubuntu 20.04, 22.03LTS auf Proxmox LXC__
 +
 +Dies gestaltet sich sehr ähnlich wie NFS. Lediglich ein Paket und die Authentifizierung kommt dazu.
 + apt install cifs-utils -dy
 +Danach erstellen wir unser Unitfile, und aktivieren es:
 + EDITOR=nano systemctl edit -f -l "/data-docs"
 +
 +<code>
 +[Unit]
 +Description=samba mount for sambafiles
 +Requires=systemd-networkd.service
 +After=network-online.target
 +Wants=network-online.target
 +
 +[Mount]
 +What=//yourserver.lan/data-docs
 +Where=/media-kodi
 +Options=credentials=/root/.smbcredentials,auto,vers=3.0,uid=2344,gid=2344,file_mode=0777,dir_mode=0777
 +Type=cifs
 +TimeoutSec=30
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +Nun noch SystemD reloaden und den Mount aktivieren:
 +<code>
 +systemctl daemon-reload
 +systemctl enable "data\x2ddocs.mount"
 +</code>
 +Nun kann das Systemd-Service getartet werden, und somit wird auch das Laufwerk eingehängt.
 + systemctl start "data\x2ddocs.mount"
 +
 +Für die Erweiterung deines Unitfiles empfehle ich [[https://wiki.ubuntuusers.de/systemd/Units/|diesen Artikel]] und auch [[https://wiki.ubuntuusers.de/systemd/Mount_Units/|diesen]] auf Ubuntuusers. 
 +
 +===== Systemd Autostart =====
 +Hier ein Beispiel für ein WOL Script das beim Boot ausgeführt wird, aber erst wenn der Server online ist.
 + systemctl edit -f -l wol-at-boot.service
 +Inhalt:
 +<code>
 +[Unit]
 +Description=execute Wake-up on LAN
 +
 +Wants=network.target
 +After=syslog.target network-online.target
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/etc/cron.hourly/wol.sh
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 + systemctl enable wol-at-boot.service
 + systemctl daemon-reload 
  
 ===== Debuging ===== ===== Debuging =====
Zeile 65: Zeile 227:
 systemd-analyze plot > bootchart.svg systemd-analyze plot > bootchart.svg
 systemd-analyze blame systemd-analyze blame
 +</code>
 +
 +==== Weitere nützliche Systemd-Befehle ====
 +<code>
 +systemctl reset-failed
 +systemctl --failed
 </code> </code>
  
Zeile 70: Zeile 238:
  
   *  [[https://www.freedesktop.org/software/systemd/man/systemd.service.html|Hersteller|Dokumentation Systemd]]   *  [[https://www.freedesktop.org/software/systemd/man/systemd.service.html|Hersteller|Dokumentation Systemd]]
 +  * [[https://www.freedesktop.org/software/systemd/man/systemd.mount.html|Hersteller|Dokumentation Systemd Mount Unit]]
   * https://wiki.ubuntuusers.de/systemd/systemctl/   * https://wiki.ubuntuusers.de/systemd/systemctl/
 +  * https://wiki.ubuntuusers.de/systemd/Mount_Units/