Hvordan sette filsystem (disk) kvoter på Ubuntu


Filsystemkvote er en standard innebygd funksjon som finnes i Linux Kernel. Kvoter bestemmer hvor mye plass en fil skal ha for å støtte brukeraktiviteter. Diskkvotene begrenser også antallet filer en bruker kan opprette på systemet.

Filsystemer som støtter kvotesystemet inkluderer xfs, ext2, ext4 og ext3 for å nevne noen. Tildelingen av kvoter er spesifikk for filsystemet og for hver bruker. Denne artikkelen inneholder alt du trenger å vite om å jobbe med kvotefilsystemet i et Ubuntu-miljø med flere brukere.

Forutsetningen her er at du bruker Ubuntu-systemet med en bruker (tecmint) gitt sudo-rettigheter. Ideene som deles her kan fungere på hvilken som helst Linux-distro så lenge du bruker riktig implementeringsteknikk.

Trinn 1: Installer Quota i Ubuntu

For at kvoter skal være klare og brukbare, installer kommandolinjeverktøyet quota ved å bruke apt-kommandoen, men før det må du oppdatere systemprogramvarepakkene.

sudo apt update

Bruk nå følgende kommando for å installere kvote-pakken på Ubuntu.

sudo apt install quota

Trykk Y, og deretter ENTER for å starte installasjonsprosessen.

Bekreft installasjonsversjonen ved å kjøre kommandoen nedenfor. Ditt versjonsnummer kan avvike fra det du ser nedenfor.

quota --version

Trinn 2: Installere modulen for Quota Kernel

For de som kjører et skybasert virtuelt system, kan standardinstallasjonen Ubuntu mangle kjernemodulene som støtter bruk av kvote. Du må bekrefte bruken av søkeverktøyet og sørge for at de to modulene, quota_v1 og quota _v2, er i katalogen /lib/modules.

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

Dette bør være resultatet av kommandoen ovenfor.

Ikke bekymre deg for kjerneversjonene så lenge de to modulene er til stede. Hvis ikke funnet, bruk følgende kommando for å installere kvotekjernemoduler som vist.

sudo apt install linux-image-extra-virtual

Du vil få de riktige modulene du trenger for kvoteimplementering.

Trinn 3: Oppdatering av monteringsalternativer for filsystem

For at kvotene skal være aktive på et spesifikt system, må det være montert med relaterte kvotealternativer. Du kan gjøre dette ved å oppdatere filsystemoppføringen i /etc/fstab-filen.

sudo nano /etc/fstab

Du bør være klar til å redigere filen på riktig måte. Forskjellen mellom en fstab-fil og en skrivebordsfil er forskjellen i hvordan / eller rotfilsystemet representerer hele diskplassen. Erstatt linjen (/) som peker til rotsystemet ved å bruke linjene nedenfor.

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

Linjene vil endres slik at brukerkvoten og grpkvoten er tilgjengelig. Du kan la en som ikke er en del av den endelige konfigurasjonen. Hvis fstab hadde noen alternativer, legg til de nye alternativene på slutten av linjen. Når du legger til, skiller du de nye elementene med komma, men uten mellomrom mellom dem.

Monter filsystemet på nytt for at endringene skal tre i kraft.

sudo mount -o remount /

MERK: bekreft at det ikke finnes mellomrom mellom alternativene i /etc/fstab for å unngå slike feil.

mount: /etc/fstab: parse error

Verifiseringen av bruken av nye alternativer ved montering av filsystemet i /proc/mounts-filen gjøres gjennom grep. Kommandoen viser rotfilsystemoppføringen i filen.

sudo cat /proc/mounts | grep ' / '

Fra utgangen kan du se de to alternativene vi har satt opp. Det er på tide å skru på kvotesystemet.

Trinn 4: Aktivering av diskkvoter på Ubuntu

Først må du kjøre kommandoen quotacheck.

sudo quotacheck -ugm /

Kommandoen oppretter to filer en kvotebruker og en kvotegruppe som har informasjon om grensen og bruken av filsystemet. Disse filene må være tilstede før du begynner å bruke kvoten.

Her er en definisjon av parametrene:

  • -u: symboliserer at en brukerbasert kvotefil vil bli opprettet.
  • -g: indikerer at en gruppebasert kvotefil vil bli opprettet.
  • -m: deaktiverer remontering av filsystemet som skrivebeskyttet, samtidig som det gir nøyaktige resultater i et miljø der brukeren fortsetter å lagre filer. Alternativet m er ikke obligatorisk under oppsett.

Når det ikke er behov for å aktivere bruk av kvoter basert på bruker eller gruppe, er det ikke nødvendig å kjøre quotacheck-alternativet. Bekreft dette ved å liste opp rotkatalogen ved å bruke ls-kommandoen.

ls /
Eksempelutgang
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

Hvis parameterne u og g ikke tas med i quotacheck-kommandoen, vil de tilsvarende filene mangle.

Nå er vi klare til å slå på kvote på rotfilsystemet (/) med følgende kommando.

sudo quotaon -v /

Trinn 5: Konfigurer kvoter for en enkeltbruker

Vi kan bruke kommandoene edquota og setquota for å angi dem for brukere eller grupper.

Bruker edquota

edquota-kommandoene redigerer kvoter, for eksempel kan vi redigere en kvote som tilhører en tecmint-bruker ved å bruke:

sudo edquota -u tecmint

Bruk av -u alternativet spesifiserer at kvoten tilhører en bruker. Bruk -g alternativet hvis du trenger å redigere en kvote som tilhører en gruppe. Kommandoen åpner en fil ved å bruke ditt valg av tekstredigeringsprogram.

Utdataene viser brukernavnet, uid, filsystemet med aktive kvoter, og bruken av blokker og inoder. En kvote basert på inoder begrenser antall filer og kataloger brukere kan opprette uavhengig av størrelsen de bruker på disken. De fleste administratorer foretrekker den blokkbaserte kvoten som kontrollerer diskplassen.

MERK: Bruken av blokker viser ikke hvordan den kan endre seg avhengig av ulike faktorer, for eksempel kommandolinjeverktøyet som rapporterer dem. Innenfor kontekstkvotene på Ubuntu kan vi anta at en enkelt blokk er det samme som en kilobyte diskplass.

Ved å bruke kommandolinjen ovenfor vil brukeren bruke 2032 blokker, som er det samme som 2032KB plass på /dev/sda1. 0-verdien deaktiverer både myke og harde grenser.

Hvert kvotesett gir mulighet for å sette opp myke og harde grenser. En bruker som går over den myke grensen kan være over kvoten hennes, men ikke utestengt fra å bruke flere mellomrom eller inoder. Brukeren i et slikt tilfelle har syv dager på seg til å løse inn sin myke grenseplass, og unnlatelse gjør det vanskelig å lagre eller opprette filer.

En hard limit betyr at opprettelsen av nye blokker eller inoder stopper i det øyeblikket du når grensen. Brukere vil rapportere å se advarsler eller feil mens de utfører vanlige oppgaver.

Vi kan oppdatere tecmints blokkeringskvote til å ha en myk grense på 100 MB og 110 MB for den harde grensen.

Etter redigering, lukk filen og kontroller de nye innstillingene for brukerkvotegrense ved å bruke kvotekommandoen.

sudo quota -vs tecmint

MERK: For å gi brukerne dine en mulighet til å analysere kvotene sine uten å påkalle sudo-kommandoen, må de gis tilgang til å lese kvotefiler i løpet av opprettelsesfasen i trinn fire. En enkel måte å gjøre det på er å opprette en brukers gruppe og gi gruppen tilgang slik at du kan legge til brukere i den.

Bruker settkvote

setquota oppdaterer kvoteinformasjonen ved hjelp av en enkelt kommando uten noe interaktivt oppsett. Kommandoen krever brukernavnet og innstillingen for både myke og harde grenser blokken og inoden vil bruke. Du må også deklarere filsystemet kvoten vil bruke.

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

Kommandoen dobler de blokkbaserte kvotegrensene til 200 megabyte og 220 megabyte. De to 0 0 indikerer at både de harde og myke grensene ikke er satt, det er et krav selv når det ikke er behov for å sette inodebaserte kvoter.

Som vanlig, bruk quota-kommandoen for å bekrefte fremgangen din.

sudo quota -vs tecmint

Trinn 6: Generering av kvoterapporter

Generering av en kvoterapport må indikere bruk fra alle brukere. Kommandoen repquota brukes.

sudo repquota -s /

Utdataene ovenfor er en rapport om / rotfilsystemet. -s instruerer repquota til å gi resultater i et format som kan leses av mennesker.

Standard utsettelsestid for blokkering er 7 dager. Grace-kolonnen varsler brukeren om antall dager før nektet tilgang til ressursdisken.

Trinn 7: Angi utsettelsesperioder for konfigurasjon

Utsettelsesperioden er tiden en bruker får tillatelse til å jobbe utover standardtidspunktet.

sudo setquota -t 864000 864000 /

Kommandoen instruerer blokken og inoden til å ha en utsettelsesperiode på 864000 sekunder, tilsvarende 10 dager. Innstillingen vil påvirke alle brukere, derfor må verdier angis selv når det ikke vil være bruk av blokker og inoder. Tidsverdien må være i sekunder.

Bekreft endringene og se om de trådte i kraft ved å bruke kommandoen:

sudo repquota -s /

Vanlige feilmeldinger

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

Feilen ovenfor er vanlig hvis du prøver å slå på kvoter ved å bruke kommandoen qoutaon før et forsøk på å sjekke statusen til en kvote ved å bruke kommandoen 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.

Denne feilen forteller administratoren at kjernen ikke støtter den eller at du kan ha feil versjon på maskinen (vi har quota_v1 og quota_v2). For Ubuntu er slike feil typiske på en skybasert virtuell server.

Rett opp feilen ved å installere pakken Linux-image-extra-virtual ved å bruke apt-kommandoen.

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

Feilen er merkbar når gjeldende bruker ikke har tillatelse til å lese kvotefiler. Som administrator trenger du bare å gjøre de riktige tillatelsesendringene eller bruke sudo når du trenger å få tilgang til filer i et kvotesystem eller en fil.

Konklusjon

Øverst i artikkelen startet vi med quota kommandolinjeverktøy og verifiseringen av kjerneversjonen og gikk videre for å forklare hvordan du setter opp en blokkbasert kvote for en enkelt bruker og hvordan generere en rapport om bruk av filsystemkvoter.

Artikkelen dekker også vanlige feil og hvordan du unngår dem ved å bruke en ekstra pakke eller verifisere kjerneversjonen på systemet ditt.