[gelöst] NFS Server und QUOTA für Ordner

Probleme mit Samba, NFS, FTP und Co.
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 21.03.2019 12:17:11

Danke für den Tipp. Das hatte ich während meiner Recherche ebenfalls gefunden.
Ich hab jedoch ein ganz anderes Problem. Mir ist gerade eingefallen, dass nicht jeder meiner Anwender über eine E-Mail verfügt.

Ich habe mir jetzt überlegt, dass man dies mit notify-send lösen könnte.
Der NFS-Server müsste die Quota für die User Profiles überprüfen und sobald das Soft Limit überschritten wird dem Benutzer eine Info geben.
Nachdem dies nicht direkt über das Netzwerk geht, dachte ich, dass der Server z.B. eine Datei (QuotaSoftLimit) in dem jeweiligen User Profile ablegt und der Client mittels Cronjob eine Info ausgibt sobald diese Datei vorhanden ist.

Das hört sich jetzt furchtbar kompliziert an. Sollte es aber eigentlich nicht sein.
Oder hat jemand eine andere Idee wie ich das lösen könnte?

Oder kann ich evtl mit meinem Client die aktuelle Quota abfragen? Meines Wissens geht das nicht.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 21.03.2019 12:50:24

Wenn ich jetzt z.B. an meinem Client folgendes ausführe, wird mir nur der gesamte zur Verfügung stehende Speicher meines NFS Servers angezeigt.
df -h /home/users/USER/

Code: Alles auswählen

NFS-Server/path/home/users/		25GB	374MB	23GB	2%	/home/users
Der Client erkennt somit gar nicht, dass Ihm nur noch Bsp. 100MB zur Verfügung stehen. Das wird wahrscheinlich nur auf dem Server geregelt.
Aber vielleicht geht die Abfrage am Client ja dennoch irgendwie. Hat jemand eine Idee oder weiß das?

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 22.03.2019 11:46:11

Hallo zusammen,

ich wollte euch nur mal mein Script für die Quota Benachrichtigung posten.

Als erstes müsste ein Cronjob auf dem NFS-Server laufen. Da an den Quotas ehr selten Anpassung vorgenommen werden, sollte das einmal am Tag ausreichen.
Das Script hierfür hab ich noch nicht fertig. Aber folgende Zeile müsste für jeden User ausgeführt werden.

Code: Alles auswählen

sudo quota USER > /path/home/users/USER/quota
Anschließend hab ich folgendes auf meinem Client als Cronjob laufen.

Eine kurze Erklärung was ich mache.
  • Vom NFS Server wurde die Qutoa Information auf dem Homelaufwerk des Users gespeichert (~/quota)
  • Ich prüfe ob mein verwendeter Speicher kleiner als 2000 Bytes (HardLimit Info), oder größer als mein Soft Limit (SoftLimit Info) ist.
  • Ich prüfe ob die Datei ~/quota-date vorhanden ist. Diese verwende ich um die Benachrichtigung nach einer gewissen Zeit erneut anzuzeigen.

Code: Alles auswählen

#!/bin/bash

array=($(sed -n '3p;4p' ~/quota))
varSoft=${array[2]}
varHard=${array[3]}
varUsed=($(du -cks ~/))
varUsed2=$(( ($varHard-${varUsed[0]}) ))


# Hard Limit Information
if [ $varUsed2 -le 2000 ]; then 
  if [ \! -e ~/quota-date ]; then
    notify-send --urgency=critical "Notification  -  CRITICAL" "NFS-Server - Quota Hard Limit erreicht\\n\\nSie haben soeben Ihre zulässige Speichergröße erreicht.\\nBitte löschen Sie umgehend nicht benötigete Daten in Ihrem Benutzerprofil und leeren Sie Ihren Papierkorb. Andernfalls hat dies zu Folge, dass Sie sich nicht mehr anmelden können."
    vardate1=$(date +%s)
    echo $vardate1 > ~/quota-date
  else
    vardate1=$(cat ~/quota-date)
    vardate2=$(date +%s)
    vardate3=$(( ($vardate2-$vardate1) ))
    if [ $vardate3 -ge 600 ]; then 
      notify-send --urgency=critical "Notification  -  CRITICAL" "NFS-Server - Quota Hard Limit erreicht\\n\\nSie haben soeben Ihre zulässige Speichergröße erreicht.\\nBitte löschen Sie umgehend nicht benötigete Daten in Ihrem Benutzerprofil und leeren Sie Ihren Papierkorb. Andernfalls hat dies zu Folge, dass Sie sich nicht mehr anmelden können."
      vardate1=$(date +%s)
      echo $vardate1 > ~/quota-date
    fi
  fi
fi


# Soft Limit Information
if [ $varUsed -ge $varSoft ]; then 
  if [ \! -e ~/quota-date ]; then
    notify-send --urgency=critical "Notification  -  WARNING" "NFS-Server - Quota Soft Limit überschritten\\n\\nSie erreichen in Kürze Ihre zulässige Speichergröße.\\nBitte löschen Sie nicht benötigete Daten in Ihrem Benutzerprofil. Sollten Sie das Hard Limit erreichen, kann dies zu Folge haben, dass Sie sich nicht mehr anmelden können."
    vardate1=$(date +%s)
    echo $vardate1 > ~/quota-date
  else
    vardate1=$(cat ~/quota-date)
    vardate2=$(date +%s)
    vardate3=$(( ($vardate2-$vardate1) ))
    if [ $vardate3 -ge 3600 ]; then 
      notify-send --urgency=critical "Notification  -  WARNING" "NFS-Server - Quota Soft Limit überschritten\\n\\nSie erreichen in Kürze Ihre zulässige Speichergröße.\\nBitte löschen Sie nicht benötigete Daten in Ihrem Benutzerprofil. Sollten Sie das Hard Limit erreichen, kann dies zu Folge haben, dass Sie sich nicht mehr anmelden können."
      vardate1=$(date +%s)
      echo $vardate1 > ~/quota-date
    fi
  fi
fi
Ich hoffe ich kann damit jemandem behilflich sein.
Sollte es eine ander Möglichkeit geben wäre ich natürlich dankbar.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: [gelöst] NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 25.03.2019 16:40:02

Ich habe das Ganze noch etwas anders gelöst bzw angepasst.

Auf meinem NFS Server lege ich meine Quotas für die Benutzer sowieso mit einem Script an. In diesem Zuge, erstelle ich zwei versteckte Files (.QuotaHardLimit, .QuotaSoftLimit) mit den entsprechenden Quotas in dem jeweiligen Verzeichnis (/path/home/users/$USER/).

Anschließend prüfe ich auf dem Client den verwendeten Speicher und vergleiche diesen mit dem Inhalt der beiden Files. Somit kann ich mit notify-send die entsprechende Meldung für Hard oder Soft Limit ausgeben.
Dieses Script wird als Timer mittels Service aus dem Verzeichnis /etc/systemd/user/ alle x Minuten gestartet.

Bei Fragen poste ich gerne meinen Timer/Service und Scripts.

Antworten