Zoeken op website

Hoe bestandssysteemquota (schijf) in te stellen op Ubuntu


Bestandssysteemquota zijn een standaard ingebouwde functie in de Linux Kernel. Quota bepalen de hoeveelheid ruimte die een bestand moet hebben om gebruikersactiviteiten te ondersteunen. De schijfquota beperken ook het aantal bestanden dat een gebruiker op het systeem kan maken.

Bestandssystemen die het quotasysteem ondersteunen zijn onder meer xfs, ext2, ext4 en ext3 om er maar een paar te noemen. De toewijzing van quota is specifiek voor het bestandssysteem en voor elke gebruiker. Dit artikel bevat alles wat u moet weten over het werken met het quotabestandssysteem in een Ubuntu-omgeving voor meerdere gebruikers.

De veronderstelling hier is dat je het Ubuntu-systeem gebruikt met een gebruiker (tecmint) die sudo-rechten heeft. De hier gedeelde ideeën kunnen op elke Linux-distro werken, zolang je de juiste implementatietechniek gebruikt.

Stap 1: Quota installeren in Ubuntu

Om quota's gereed en bruikbaar te maken, installeert u het opdrachtregelprogramma quota met behulp van de opdracht apt, maar daarvoor moet u de systeemsoftwarepakketten bijwerken.

sudo apt update

Gebruik nu de volgende opdracht om het quota pakket op Ubuntu te installeren.

sudo apt install quota

Druk op Y en vervolgens op ENTER om het installatieproces te starten.

Bevestig de installatieversie door de onderstaande opdracht uit te voeren. Uw versienummer kan afwijken van wat u hieronder ziet.

quota --version

Stap 2: De module voor Quota Kernel installeren

Voor degenen die een cloudgebaseerd virtueel systeem gebruiken: bij de standaard Ubuntu-installatie ontbreken mogelijk de kernelmodules die het gebruik van quota ondersteunen. U moet bevestigen met behulp van de zoekfunctie en ervoor zorgen dat de twee modules, quota_v1 en quota _v2, zich in de map /lib/modules bevinden.

find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

Dit zou het resultaat moeten zijn van het bovenstaande commando.

Maak je geen zorgen over de kernelversies zolang de twee modules aanwezig zijn. Indien niet gevonden, gebruik dan de volgende opdracht om quota-kernelmodules te installeren, zoals weergegeven.

sudo apt install linux-image-extra-virtual

U krijgt de juiste modules die u nodig heeft voor de quota-implementatie.

Stap 3: De bestandssysteemmountopties bijwerken

Om de quota's actief te laten zijn op een specifiek systeem, moeten deze worden gekoppeld met gerelateerde quota-opties. U kunt dit doen door de bestandssysteemvermelding in het bestand /etc/fstab bij te werken.

sudo nano /etc/fstab

U moet klaar zijn om het bestand op de juiste manier te bewerken. Het verschil tussen een fstab-bestand en een desktopbestand is het verschil in de manier waarop het /- of rootbestandssysteem de volledige schijfruimte vertegenwoordigt. Vervang de regel (/) die naar het rootsysteem verwijst met behulp van de onderstaande regels.

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

De regels veranderen zodat de userquota en grpquota toegankelijk zijn. U kunt er een laten staan die geen deel uitmaakt van de uiteindelijke configuratie. Als de fstab enkele opties had, voeg dan de nieuwe opties aan het einde van de regel toe. Terwijl u de items toevoegt, scheidt u de nieuwe items met een komma, maar zonder spaties ertussen.

Koppel het bestandssysteem opnieuw aan zodat de wijzigingen van kracht worden.

sudo mount -o remount /

OPMERKING: bevestig dat er geen spaties bestaan tussen de opties in /etc/fstab om dergelijke fouten te voorkomen.

mount: /etc/fstab: parse error

De verificatie van het gebruik van nieuwe opties bij het mounten van het bestandssysteem in het /proc/mounts bestand gebeurt via grep. Met de opdracht wordt de vermelding van het rootbestandssysteem in het bestand weergegeven.

sudo cat /proc/mounts | grep ' / '

Uit de uitvoer kunt u de twee opties zien die we hebben ingesteld. Het is tijd om het quotasysteem in te schakelen.

Stap 4: Schijfquota inschakelen op Ubuntu

Eerst moet u de opdracht quotacheck uitvoeren.

sudo quotacheck -ugm /

Met de opdracht worden twee bestanden gemaakt, een quotagebruiker en een quotagroep, die informatie bevatten over de limiet en het gebruik van het bestandssysteem. Deze bestanden moeten aanwezig zijn voordat u het quotum gaat gebruiken.

Hier volgt een definitie van de parameters:

  • -u: symboliseert dat er een op gebruikers gebaseerd quotabestand wordt aangemaakt.
  • -g: geeft aan dat er een op groepen gebaseerd quotabestand zal worden aangemaakt.
  • -m: schakelt het opnieuw aankoppelen van het bestandssysteem als alleen-lezen uit en geeft tegelijkertijd nauwkeurige resultaten in een omgeving waarin de gebruiker bestanden blijft opslaan. De m optie is niet verplicht tijdens de installatie.

Als het niet nodig is om het gebruik van quota's op basis van gebruiker of groep in te schakelen, is het niet nodig om de optie quotacheck uit te voeren. Bevestig dit door de hoofdmap weer te geven met behulp van de opdracht ls.

ls /
Voorbeelduitvoer
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

Als u de parameters u en g niet in de quotacheck-opdracht opneemt, zullen de bijbehorende bestanden ontbreken.

Nu zijn we klaar om quota in te schakelen op het root-bestandssysteem (/) met de volgende opdracht.

sudo quotaon -v /

Stap 5: Configureer quota voor één gebruiker

We kunnen de opdrachten edquota en setquota gebruiken om deze in te stellen voor gebruikers of groepen.

Edquota gebruiken

De edquota-opdrachten bewerken quota's. We kunnen bijvoorbeeld een quotum bewerken dat toebehoort aan een tecmint-gebruiker met behulp van:

sudo edquota -u tecmint

Als u de optie -u gebruikt, geeft u aan dat het quotum aan een gebruiker toebehoort. Gebruik de optie -g als u een quotum wilt bewerken dat bij een groep hoort. Met de opdracht wordt een bestand geopend met de door u gekozen teksteditor.

De uitvoer vermeldt de gebruikersnaam, uid, het bestandssysteem met actieve quota en het gebruik van blokken en inodes. Een quotum gebaseerd op inodes beperkt het aantal bestanden en mappen dat gebruikers kunnen maken, ongeacht de grootte die ze op de schijf gebruiken. De meeste beheerders geven de voorkeur aan het op blokken gebaseerde quotum dat de schijfruimte bepaalt.

OPMERKING: het gebruik van blokken laat niet zien hoe deze kunnen veranderen afhankelijk van verschillende factoren, zoals het opdrachtregelprogramma dat deze rapporteert. Binnen de contextquota op Ubuntu kunnen we ervan uitgaan dat een enkel blok hetzelfde is als één kilobyte schijfruimte.

Met behulp van de bovenstaande opdrachtregel gebruikt de gebruiker 2032 blokken, wat hetzelfde is als 2032 KB ruimte op /dev/sda1. De waarde 0 schakelt zowel zachte als harde limieten uit.

Elke quotaset maakt het instellen van zachte en harde limieten mogelijk. Een gebruiker die de zachte limiet overschrijdt, kan zijn quotum overschrijden, maar mag niet meer spaties of inodes gebruiken. De gebruiker heeft in een dergelijk geval zeven dagen de tijd om zijn zachte limietruimte in te wisselen. Als u dat niet doet, wordt het moeilijk om bestanden op te slaan of te maken.

Een harde limiet betekent dat het maken van nieuwe blokken of inodes stopt zodra je de limiet bereikt. Gebruikers melden dat ze waarschuwingen of fouten hebben gezien tijdens het uitvoeren van reguliere taken.

We kunnen het blokkeerquotum van tecmint bijwerken zodat er een zachte limiet van 100MB en 110MB voor de harde limiet komt.

Na het bewerken sluit u het bestand en controleert u de nieuwe gebruikersquotalimietinstellingen met behulp van de quota-opdracht.

sudo quota -vs tecmint

OPMERKING: Door uw gebruikers de kans te geven hun quota's te analyseren zonder de sudo-opdracht aan te roepen, moeten ze toegang krijgen om quotabestanden te lezen tijdens de creatiefase in stap vier. Een eenvoudige manier om dit te doen is door een gebruikersgroep te maken en de groep toegang te geven zodat u er gebruikers aan kunt toevoegen.

Setquota gebruiken

setquota werkt de quota-informatie bij met één enkele opdracht, zonder enige interactieve instellingen. Het commando vereist de gebruikersnaam en de instelling van zowel de zachte als de harde limieten die het blok en de inode zullen gebruiken. U moet ook aangeven welk bestandssysteem het quotum zal gebruiken.

sudo setquota -u tecmint 200M 220M 0 0 /

De opdracht verdubbelt de op blokken gebaseerde quotumlimieten tot 200 megabytes en 220 megabytes. De twee 0 0 geven aan dat zowel de harde als de zachte limieten niet zijn ingesteld. Het is een vereiste, zelfs als het niet nodig is om op inode gebaseerde quota in te stellen.

Gebruik zoals gewoonlijk de opdracht quota om uw voortgang te verifiëren.

sudo quota -vs tecmint

Stap 6: Quotumrapporten genereren

Het genereren van een quotarapport moet het gebruik van alle gebruikers aangeven. Het commando repquota wordt gebruikt.

sudo repquota -s /

De bovenstaande uitvoer is een rapport over het / rootbestandssysteem. De -s instrueert repquota om resultaten te geven in een voor mensen leesbaar formaat.

De standaard respijtperiode voor blokkeren is 7 dagen. De respijtkolom waarschuwt de gebruiker over het aantal dagen voordat de toegang tot de bronschijf wordt geweigerd.

Stap 7: Stel de respijtperioden voor configuratie in

De respijtperiode is de tijd dat een gebruiker toestemming krijgt om verder te werken dan de standaardtijd.

sudo setquota -t 864000 864000 /

De opdracht instrueert het blok en de inode om een respijtperiode van 864000 seconden te hebben, wat overeenkomt met 10 dagen. De instelling heeft invloed op alle gebruikers. Daarom moeten waarden worden ingesteld, zelfs als er geen gebruik wordt gemaakt van blokken en inodes. De tijdswaarde moet in seconden zijn.

Bevestig de wijzigingen en kijk of ze van kracht zijn met behulp van de opdracht:

sudo repquota -s /

Veelvoorkomende foutmeldingen

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

De bovenstaande fout komt vaak voor als u quota's probeert in te schakelen met de opdracht qoutaon voordat u probeert de status van een quota te controleren met behulp van de opdracht quotacheck.

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

Deze fout vertelt de beheerder dat de kernel dit niet ondersteunt, anders staat er mogelijk de verkeerde versie op de machine (we hebben quota_v1 en quota_v2). Voor Ubuntu zijn dergelijke fouten typisch op een cloudgebaseerde virtuele server.

Herstel de fout door het Linux-image-extra-virtual pakket te installeren met de opdracht apt.

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

De fout treedt op wanneer de huidige gebruiker geen toestemming heeft om quotabestanden te lezen. Als beheerder hoeft u alleen de juiste machtigingswijzigingen door te voeren of sudo te gebruiken wanneer u toegang wilt krijgen tot bestanden in een quotasysteem of bestand.

Conclusie

Bovenaan het artikel zijn we begonnen met quota opdrachtregelprogramma's en de verificatie van de kernelversie. Vervolgens hebben we uitgelegd hoe je een op blokken gebaseerd quotum instelt voor een enkele gebruiker en hoe je een rapport genereren over het quotagebruik van een bestandssysteem.

Het artikel behandelt ook veelvoorkomende fouten en hoe u deze kunt vermijden door een extra pakket te gebruiken of door de kernelversie op uw systeem te verifiëren.