[gelöst] NFS Server und QUOTA für Ordner
Re: NFS Server und QUOTA für Ordner
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.
- 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
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.
- 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
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.joe2017 hat geschrieben:15.02.2019 15:25:56Das bedeutet, ich müsste mit unterschiedlichen Partitionen arbeiten um eine quota nur für /home festzulegen.
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.
Re: NFS Server und QUOTA für Ordner
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
QUOTA
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
Code: Alles auswählen
User1 200MB
User2 300MB
User3 400MB
Re: NFS Server und QUOTA für Ordner
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
sudo repquota /media/vda3/
Jedoch kann mein Client den mountpoint jetzt nicht mehr mounten. Woran könnte das liegen?
Client:
sudo nano /etc/fstab
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
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
Code: Alles auswählen
mount.nfs4: access denied by server while mounting "Path"
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
Re: NFS Server und QUOTA für Ordner
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!
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!
Re: NFS Server und QUOTA für Ordner
Hat hier keiner eine Idee?
Re: NFS Server und QUOTA für Ordner
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.
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.
Re: NFS Server und QUOTA für Ordner
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.
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.
Re: NFS Server und QUOTA für Ordner
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?
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?
Re: NFS Server und QUOTA für Ordner
Ü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.joe2017 hat geschrieben:19.03.2019 15:28:14Wie kann ich den Benutzer über das Überschreiten seines Soft Limits informieren?
Re: NFS Server und QUOTA für Ordner
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?
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?
Re: NFS Server und QUOTA für Ordner
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:
Hat jemand eine Idee was ich vergessen oder nicht konfiguriert habe?
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
Re: NFS Server und QUOTA für Ordner
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/
https://decatec.de/home-server/linux-ei ... mit-ssmtp/
Re: NFS Server und QUOTA für Ordner
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.
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.
Re: NFS Server und QUOTA für Ordner
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/
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?
df -h /home/users/USER/
Code: Alles auswählen
NFS-Server/path/home/users/ 25GB 374MB 23GB 2% /home/users
Aber vielleicht geht die Abfrage am Client ja dennoch irgendwie. Hat jemand eine Idee oder weiß das?
Re: NFS Server und QUOTA für Ordner
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.
Anschließend hab ich folgendes auf meinem Client als Cronjob laufen.
Eine kurze Erklärung was ich mache.
Ich hoffe ich kann damit jemandem behilflich sein.
Sollte es eine ander Möglichkeit geben wäre ich natürlich dankbar.
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
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
Sollte es eine ander Möglichkeit geben wäre ich natürlich dankbar.
Re: [gelöst] NFS Server und QUOTA für Ordner
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.
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.