Quota

Dette er nå en historisk artikkel da vi nå benytter oss av ZFS og dens innebyggede quota funksjonalitet.

Quota er en service vi bruker for å begrense plassen brukere og grupper har tilgang til på Colargol.

For å sjekke om du har Quota installert:

dpkg -s quota

Om Quota ikke er installert installerer du det slik:

 sudo apt-get install quota 

Det neste vi må gjøre er å aktivere quota på en partisjon. For vår del bruker vi bare quota på /home siden det er der brukerne våre har sine hjemmemapper og kan lagre sine data.

For å aktivere quota for brukere (usrquota) på /home må vi endre /etc/fstab

sudo nano /etc/fstab

Deretter må vi legge til usrquota slik.

/dev/mapper/VG0-home /home           ext4    defaults,usrquota        0       2

Eventuelt grpquota om du skal aktivere quota for en eller flere grupper:

/dev/mapper/VG0-home /home           ext4    defaults,grpquota        0       2

Eventuelt grpquota og usrquota om du skal aktivere quota for grupper og enkeltbrukere:

/dev/mapper/VG0-home /home           ext4    defaults,grpquota,usrquota        0       2

Nå har vi aktivert quota på den partisjonen vi vil skal ha quota. Det neste vi må gjøre er å configurere quota.

Lag filen aquota.user i starten på partisjonen du vil skal ha quota. I vårt tilfelle skal filen ligge i /home. Samtidig må vi sette riktige rettigheter.

sudo touch /home/aquota.user
sudo chmod 600 /home/aquota.user

Om du skal sette quota for en gruppe lager du filen aquota.group

sudo touch /home/aquota.group
sudo chmod 600 /home/aquota.group

Filen du lager skal være eid av root. Kjør følgende kommando om nødvendig

 chown root:root <filnavn> 

For at endringene skal tre i kraft på partisjonen må du unmounte eller reboote systemet.

Reboot:

 shutdown -r now

Remounte partisjonen:

mount -o remount /home

Etter reboot eller remount kan du sjekke om quota er aktivert på partisjonen ved å se på /etc/mtab.

cat /etc/mtab | grep quota

Resultat hos oss:

/dev/mapper/VG0-home /home ext4 rw,relatime,user_xattr,acl,barrier=1,data=ordered,usrquota 0 0

Det neste vi må gjøre er å kjøre quotacheck på partisjonen. Det quota gjør er at den går igjennom partisjonen og skanner systemet for å se hvor mye diskplass og filer brukere/grupper har. Det er meget anbefalt å gjøre dette i maintenance mode da det helst ikke bør være noe I/O aktivitet på partisjonen.

For å komme i maintenance mode kan du kjøre følgende kommando. NB! Når du går inn i maintenance mode mister tjeneren nettilgang. Du må da ha fysisk tilgang til tjeneren for å få gjort noe. Det anbefales da at du går ned på serverrommet og sitter der.

/sbin/init 1

Nå når du er i maintenace mode og det er ingen skriveaktivitet (I/O) på disken kan du kjøre quotacheck:

quotacheck -vgum /home

Det neste du må gjøre er å aktivere quota:

quotaon -av

For å deaktivere quota:

 quotaoff -av

Nå som vi har aktivert quota på en partisjon er det på tide å tillegne quota til brukere eller grupper. Jeg vil anbefale å sette quota på én bruker som vi deretter skal bruke som mal på de andre brukerne. På Colargol har alle brukere 10GB med lagringsplass såfremt de ikke har betalt for mer, er i hs, xhs, drift eller xdrift.

For å sette quota til en bruker: edquota -u <brukernavn> F.eks.:

edquota -u brukeren

Du vil da få opp noe slikt:

  1 Disk quotas for user brukeren (uid 1337):
  2   Filesystem                   blocks       soft       hard     inodes     soft     hard
  3   /dev/mapper/VG0-home            172        0          0         38        0        0

Det eneste vi skal endre her for å sette grenser er de første soft og hard. Soft angir grensen for når brukeren skal bli varslet om lite diskplass. Hard angir grensen brukeren har. De to siste soft og hard angir grenser for antall filer. Vi i drift@TIHLDE angir ikke grenser på antall filer brukere kan ha.

For Colargol sin del hvor vi har 10GB hard limit og 7GB soft kan en brukers quota se slik ut:

Disk quotas for user brukeren (uid 1337):
  2   Filesystem                   blocks       soft       hard     inodes     soft     hard
  3   /dev/mapper/VG0-home            172    10485760   12582912         38        0        0

Alle grenser er angitt i KB, så du bør finne deg en kalkulator og regne ut grensene dine. Ovenfor er det 10GB soft limit og 12GB hard limit.

Det vil si at brukeren kan ha opptil 12GB med data helt til “grace period” er ute. Når grace period er ute og brukeren fortsatt har for mye data vil den nyeste dataen bli slettet helt til brukeren er innenfor soft limit.

Om du bruker quota for grupper endrer du quota slik:

edquota -g <gruppenavn>

For å se quota til egen bruker skriver du:

quota

For å se quota til én annen bruker må du bruke sudo eller være root:

quota -u <brukernavn>

For å få en liste over alle brukeres quotastatus i MB lagret som filen quotastatus.txt:

repquota -us /home > quotastatus.txt
nano quotastatus.txt

Nå som vi har aktivert quota på de(n) partisjonen(e) vi vil gjenstår det bare å rulle ut quota til de brukerne som skal ha. Vi har satt quota på brukeren. Vi skal nå bruke denne brukeren som en mal når vi setter quota på andre brukere.

Først henter vi ut en liste over alle brukere:

getent passwd > brukere.txt

Da vil du få en fil brukere.txt som ser slik ut med alle dine brukere og systembrukere listet opp:

root:x:0:0:TIHLDE Root,,,:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync

Det vi nå skal gjøre er å kjøre en fin liten kommando som henter ut brukernavnet til alle brukere fra denne filen og setter quota til brukerne. Ja, dette er en liten hack som ikke er helt optimal. Når vi nå kjører denne kommandoen blir samme quota satt til alle brukere. F.eks. systembrukere som root og bin trenger ikke quota så det skal vi fikse etterpå. Det samme gjelder hs, xhs, drift og xdriftere.

edquota -p brukeren `awk -F: '{print }' brukere.txt`

Det denne kommandoen gjør er at den tar edquota med -p og bruker brukeren som en prototype(-p). Deretter bruker vi programmet awk og splitter tekststrengen på : og henter det første argumentet {print } som er brukernavnet i filen brukere.txt.

Nå kan du kjøre følgende kommando og du vil se at quota er endret på alle brukere.

repquota -us /home > quotastatus.txt
nano quotastatus.txt

Om det er noen brukere som ikke har fått quota eller som har fått quota og som ikke skal ha kan du gå igjennom og endre slik som vi har gjort tidligere.

http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html