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

Probleme mit Samba, NFS, FTP und Co.
mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: NFS Server und QUOTA für Ordner

Beitrag von mludwig » 15.02.2019 16:13:54

Auf einer Partition kann man für viele User jeweils unterschiedliche Quotas festlegen. Und da es um Home-Verzeichnisse geht, braucht es den Umweg mit den Gruppen nicht, die Angabe kam bisher irgendwie nicht, oder ich hab das überlesen.

Benutzeravatar
heisenberg
Beiträge: 3548
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: NFS Server und QUOTA für Ordner

Beitrag von heisenberg » 15.02.2019 16:32:48

Ich habe mir das immer gewünscht, Quotas auf Verzeichnisebene setzen zu können. Es ist wirklich schade, dass das nicht geht. Man muss hier leider mit Quotas auf Dateisystemebene/Subvolumeebene arbeiten. Die ganzen Würgarounds dazu (Verzeichnis suid,...) sind nicht wirklich toll.
Zuletzt geändert von heisenberg am 15.02.2019 17:40:43, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: NFS Server und QUOTA für Ordner

Beitrag von jph » 15.02.2019 17:11:13

joe2017 hat geschrieben: ↑ zum Beitrag ↑
15.02.2019 15:25:56
Das bedeutet, ich müsste mit unterschiedlichen Partitionen arbeiten um eine quota nur für /home festzulegen.
Jein. Das kommt auf das Dateisystem an. btrfs bspw. steuert die Quotas auf Ebene der Subvolumes, was dir eine Partitionierung erspart. Du ersetzt dann je User das Home-Verzeichnis durch ein Subvolume gleichen Namens. Das erspart dir eine Vielzahl von Partitionen anzulegen, die alle einzeln gemountet werden müssen. Ein Subvolume ist aus Usersicht nicht von einem Verzeichnis zu unterscheiden.

Weiterhin verbrät eine Partition von, sagen wir mal 200 MB Größe, pauschal 200 MB Plattenplatz unabhängig davon, wieviel davon belegt ist. Für 10 User musst du also 2.000 MB Platz vorhalten. Bei Nutzung von Subvolumes und Quotas kannst du „überbuchen“ unter der Annahme, dass nicht jeder Anwender die 200 MB voll in Anspruch nehmen wird. Bei angenommener mittlerer Nutzung von 100 MB packst du 20 User rein usw.

zfs kann das sicher auch, aber damit kenne ich mich nicht aus.

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 18.02.2019 15:27:09

Ich dachte jetzt auch nicht daran, für jeden einzelnen Benutzer bzw. Home Verzeichnis eine Partition zu erstellen.
Ich habe das so verstanden, das ich eine Partition habe auf welche ich alle Homeverzeichnisse anlege. Und auf dieser Partition erstelle ich dann meine QUOTAS für die einzelnen Benutzer.

Bsp.:
Home Partition mit Verzeichnissen

Code: Alles auswählen

/User1
/User2
/User3
QUOTA

Code: Alles auswählen

User1 200MB
User2 300MB
User3 400MB

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: NFS Server und QUOTA für Ordner

Beitrag von jph » 18.02.2019 22:38:53

joe2017 hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 15:27:09
Und auf dieser Partition erstelle ich dann meine QUOTAS für die einzelnen Benutzer.
Ach so. Du willst Quotas je Benutzer anlegen, das war mir nicht offensichtlich. Schau dir mal Debianquota an.

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 06.03.2019 11:55:14

Entschuldige, dass ich erst jetzt wieder schreibe, jedoch war ich krankheitsbedingt zu Hause.

Ich habe jetzt eine neue Partition erstellt, meine quota auf dem Server installiert und mein mount mit der quota Angabe bereitgestellt.
sudo apt install quota quotatool
sudo nano /etc/fstab

Code: Alles auswählen

/dev/vda3	/media/vda3	ext3	rw,grpquota,usrquota	0	0
sudo repquota /media/vda3/

Code: Alles auswählen

*** Report für user Quotas auf Gerät /dev/vda3
Blockgnadenfrist: 7days; Inodegnadenfrist: 7days
                        Block Limits                Dateilimits
Benutzer        belegt  weich   hart  Gnade   belegt weich hart  Gnade
----------------------------------------------------------------------
root      --   45948       0       0             19     0     0
user1 --   99908       0       0           1063     0     0
Jedoch kann mein Client den mountpoint jetzt nicht mehr mounten. Woran könnte das liegen?

Code: Alles auswählen

mount.nfs4: access denied by server while mounting "Path"
Client:
sudo nano /etc/fstab

Code: Alles auswählen

nfsServer://media/vda3/home/users  /home/users  nfs4  sec=krb5i,rw,sync,users,_netdev,noauto,x-systemd.automount  0  0

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 06.03.2019 13:24:38

Ich habe jetzt noch einmal alle mounts zurückgestellt und wieder freigegeben und auf einmal ging es.
Ich habe keine Ahnung weshalb?

Jedoch habe ich noch eine andere Frage bzw. schwerwiegendes Problem.
Wenn der Speicher überschritten wird, wird die Datei dennoch bis zum freien Speicher angelegt. Somit wird hierbei die Datei zerstört! Kann man das verhindern?
Beispiel.
Ich habe noch 15MB Speicherplatz frei und kopiere eine Datei mit 20MB. Die Datei wird mit 15MB angelegt und die restlichen 5MB werden verboten. Somit habe ich eine defekte Datei mit 15MB anstatt 20MB auf meinem Laufwerk liegen. Wenn ein User das nicht kontrolliert gibt das ein ziemliches CHAOS! Kann man das irgendwie verhindern? Das die Datei erst gar nicht angelegt wird, wenn der Speicher nicht ausreicht?

Zusätzlich kann man den Papierkorb nicht mehr leeren wenn kein einziges Byte mehr zur Verfügung steht. Das ist auch äußerst unschön!
Wie kann ich das abfangen?

Vielen Dank!

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 19.03.2019 14:45:56

Hat hier keiner eine Idee?

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: NFS Server und QUOTA für Ordner

Beitrag von mludwig » 19.03.2019 15:06:49

Wenn <Benutzer> in seiner Anwendung auf Speichern klickt (Word, Libreoffice, wasauchimmer), ist es Aufgabe der Anwendung mit Fehlern umzugehen bzw. den Benutzer zu informieren, dass das speichern nicht geklappt hat weil ... Der Fehler ist mit <Festplatte voll> vergleichbar.

Wie soll das abgefangen werden, wenn der Nutzer anfängt eine Datei auf 15MB freien Speicher zu schreiben, woher soll das OS wissen ob jetzt noch 10MB (geht) oder 20 MB (geht nicht) nachkommen?

Du kannst eventuell mit soft quota experimentieren, die bringen eine Warnung, aber man kann bis zur hard quota schreiben. Aber das verlagert nur das Problem, die Nutzer müssen trotzdem die Meldung lesen und verstehen, nicht nur wegklicken.

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: NFS Server und QUOTA für Ordner

Beitrag von MSfree » 19.03.2019 15:15:48

Das Problem ist, daß der Sever erst in dem Moment, in dem die Überschreitung stattfindet, die Sperre wirksam werden lassen kann. Daß ein User 20MB schreiben möchte, weiß der Server ja nicht im Voraus. Das gleiche Problem taucht auf, wenn du auf eine Festplatte, auf der gerade noch 15MB frei sind, eine 20MB-Datei schreiben willst.

Quota erlaubt aber auch sogenannte Grace-Limits oder Soft-Limits. Man kann die Begrenzung dann um einen gewissen Betrag und für eine bestimmte Zeit überschreiten. Das verlagert das Problem aber nur. Deine 20MB-Datei mag dann vielleichtnoch durchgehen. Aber was soll der Server machen, wenn selbst dieser Grace-Betrag überschritten wird? Im Grunde ist das auch nur ein Aufschieben der Grenze, an das sich die Benutzer gewöhnen werden und dann doch ständig am Limit operieren werden.

Eigentlich ist es auch Aufgabe der Anwendung, abzufangen, wenn eine Datei nicht komplett geschrieben werden kann. Ich weiß aber, daß gerade das von den Programmierern gerne schlampig behandelt wird und nicht nach jedem Schreibvorgangn der Erfolg/Mißerfolg geprüft wird.

Das ganze ist ein soziales Problem, für das es keine technische Lösung gibt. Wenn einzelne Benutzer ständig an der Grenze ihres zugeteilten Speichers operieren, dann ist das schlicht unsoziales Verhalten. Wenn es gute Gründe gibt (z.B. weil jemand große Projekte bearbeiten muß), muß man dem Benutzer eben ein höheres Quota geben.

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 19.03.2019 15:28:14

Da gebe ich euch vollkommen Recht! Dasw Problem liegt in diesem Fall wie so oft bei dem Benutzern. Aber Ihr kennt sicherlich das Problem mit Anwendern... Meldung erschein... Keine Zeit, Mir egal, Was auch immer... Klick und weg. Das ist leider so.

Ich habe auch schon befürchtet, dass ich diese Antwort von euch erhalte. Aber ich hab einfach noch gehofft das es eine ander Möglichkeit gibt.

Dann bleibt mir eigentlich nur das Softlimit und die Benachrichtigung. Hat jemand einen Ansatz für mich wie ich das lösen kann? Wie kann ich den Benutzer über das Überschreiten seines Soft Limits informieren?

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: NFS Server und QUOTA für Ordner

Beitrag von MSfree » 19.03.2019 15:52:53

joe2017 hat geschrieben: ↑ zum Beitrag ↑
19.03.2019 15:28:14
Wie kann ich den Benutzer über das Überschreiten seines Soft Limits informieren?
Üblicherweise macht man das via Email und informiert Admin und Benutzer über die Überschreitung. Alles andere wird schwierig, wenn z.B. Benutzer den Massenspeicher in ihre Windowskisten mounten.

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

Re: NFS Server und QUOTA für Ordner

Beitrag von joe2017 » 19.03.2019 17:11:09

Ich hatte mir vor ein paar Wochen auch schon mal warnquota angesehen. Jedoch werde ich nicht ganz schlau aus dem Ganzen.

Ich hatte bereits die Datei /etc/warnquota.conf angepasst.
Jedoch wo konfiguriere ich den zu verwendenden Mailserver?
Und woher hat warnquota die Zuordnung zu Benutzer und E-Mail Adresse?

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 10:41:32

Zusätzlich habe ich jetzt noch sendmail installiert.
Ich benötige jedoch keinen vollwertigen Mailserver, sondern möchte lediglich system Mails versenden. Hierzu gibt es ja mehrere Ansätze.

Ich habe folgendes ausgeführt und wollte einen ersten Test machen.
sudo apt install sendmail
sudo sendmailconfig
sudo echo "Subject: sendmail test" | /usr/sbin/sendmail -v userXXX@gmx.de


Hier erhalte ich jedoch folgende Fehlermeldung:

Code: Alles auswählen

050 250 2.1.0 Sender ok
050 >>> RCPT To:<userXXX@gmx.de>
050 >>> DATA
050 550 5.7.1 The IP address x.x.x.x has been identified as not meeting PBL's policy for IP addresses permitted to deliver unauthenticated 'direct-to-mx' email
050 554 5.5.0 No valid recipients have been specified
Hat jemand eine Idee was ich vergessen oder nicht konfiguriert habe?

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: NFS Server und QUOTA für Ordner

Beitrag von mludwig » 21.03.2019 11:35:19

sendmail halte ich für vielleicht etwas überdimensioniert für diesen Job. Als ich vor einem ähnlich gelagerten Problem stand (Webserver mit unterschiedlichen Websites, jeweils mit Kontaktformularen die Mails versenden sollen), habe ich mich für ssmtp entschieden. Gibt es als Debianpaket, und die Einrichtung ist relativ simple, z. B. nach dieser Anleitung:
https://decatec.de/home-server/linux-ei ... mit-ssmtp/

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