Diskovne kvote

Postavljanje kvote na disku spada u obavezne radnje sistemca u slučaju kada na poslužitelju postoji više korisnika. To se posebno odnosi na poslužitelje na kojima se nalaze neodgovorni korisnici, kakvi se uvijek nađu među studentima.

Postoje dvije osnovne vrste kvota. Prva određuje količinu diskovnog prostora koja se može koristiti, a druga se odnosi na broj datoteka i direktorija koje se mogu kreirati. Moguće je postaviti tzv. soft kvotu, limit nakon kojeg korisnik mailom dobiva obavijest da se približava efektivnom limitu, tzv. hard kvoti. Također, može se definirati i grace period koji dozvoljava korisnicima da kratkotrajno premaše postavljeni limit. On je obično postavljen na 7 dana.

Kvote se tipično implementiraju postavljanjem ograničenja na diskovni prostor korisnicima (per user) i/ili grupama korisnika (per group). Na taj se način korisnicima ne dozvoljava da iskoriste sav diskovni prostor na pojedinoj particiji i time dovedu u pitanje ispravan rad poslužitelja. U slučaju kvote nad grupama, "kvaka" leži u činjenici da se diskovni prostor ograničava cijeloj grupi, a ne pojedinim korisnicima.

Za primjer ćemo implementirati per user kvotu na /var i /home particije. Jedina stvar koja nam treba jest paket quota. Njegova je instalacija standardna. Sljedeći korak jest promjena datoteke /etc/fstab tako da u konfiguraciju particije na koju želimo implementirati kvotu, dodamo parametar usrquota i/ili grpquota. Prepravljeni dio datoteke može izgledati na sljedeći način:

 /dev/sda3       /var      ext3    defaults,usrquota,errors=remount-ro  0      2
 /dev/sda4       /home     ext3    defaults,usrquota,errors=remount-ro  0      2

Nakon toga treba napraviti remount svih particija koje smo mijenjali:

# mount -o remount /var
# mount -o remount /home

Na svakoj particiji treba još kreirati datoteku aquota.user i prava čitanja i pisanja dodijeliti isključivo root korisniku. Ta datoteka sadrži tablicu trenutnog zauzeća diska na određenoj particiji. Za kvote nad grupama napravimo datoteku aquota.group.

# touch /var/aquota.user
# chmod 600 /var/aquota.user

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

Ako se rade izmjene na već uključenoj kvoti, nju treba isključiti kako bi promjene mogli kasnije aktivirati. U suprotnom, ovaj se korak preskače:

# quotaoff /dev/var
# quotaoff /dev/home

Kvotu zatim treba inicijalizirati tj. popuniti datoteke aquota.user:

# quotacheck –vaum /var
# quotacheck –vaum /home

Kvote za korisnike se postavljaju tako da odredimo kvotu za jednog proto-korisnika. To se obavlja naredbom edquota:

# edquota -u proto-korisnik

Otvorit će se zadani tekstualni editor u kojem postavimo limite. Za primjer ćemo proto-korisniku postaviti soft limit od 20MB, a hard limit nešto veći:

Disk quotas for user proto-korisnik (uid 12345):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                      1324      20000    25000       1       0        0
  /dev/sda4                       100      20000    25000       22        0        0

Stupac blocks prikazuje količinu diska (u jedinicama od 1k) koju korisnik trenutno koristi, a stupac inodes prikazuje broj datoteka i direktorija koje je taj korisnik već kreirao na pojedinoj particiji. Svaka od dvije vrsta kvota ima svoj soft i hard limit, a vrijednost 0 znači da kvota nije postavljena. Iz primjera je vidljivo da nije ograničen broj direktorija i datoteka koje korisnik može kreirati.

Nakon što smo proto-korisniku postavili limite, njih je potrebno preslikati na sve ostale korisnike koristeći naredbu

# edquota –p proto-korisnik drugi_korisnik

Ovo može biti zamorno jer treba navesti redom sve korisnike kojima želimo uključiti kvotu. Ako je riječ o poslužitelju na kojem se nalaze isključivo studentski korisnički računi, možemo iskoristiti činjenicu da njihovi uid-i idu redno. U datoteci /etc/passwd treći podatak u svakom retku označava uid (primjerice, korisnik www-data ima uid 33). Provjerimo prvi i zadnji uid i preslikamo kvotu naredbom:

# edquota -p proto-korisnik `awk -F: '($3 > prvi_uid && $3 < zadnji_uid) {print $1}' /etc/passwd`

U ovoj naredbi koristeći awk iz datoteke /etc/passwd izdvajamo uid svih korisnika koji se nalazi u traženom rasponu i na sve te korisnike dupliciramo kvotu našeg proto-korisnika. Važno je pripaziti da ne postavimo kvotu sistemskim korisnicima poput www-data jer bi time ugrozili rad nekih servisa. Srećom, oni imaju uid manji od 1000 pa ih je lako razlikovati od "ljudskih" korisnika. Zadnji korak je uključivanje same kvote na particijama:

# quotaon /dev/var
# quotaon /dev/home

Time smo dovršili postavljanje kvote. Za provjeru kvote pojedinog korisnika koristi se naredba

# quota korisnicko_ime

Disk quotas for user neki_korisnik (uid 12345):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda3   1048    20000   25000            1       0       0
      /dev/sda4     36    20000   25000            9       0       0

Zgodnom se može pokazati i naredba repquota kojom možemo zbirno prikazati kvote svih korisnika. Naredbom edquota –t moguće je postaviti već spomenuti grace period. Također, naredba quotacheck obavlja provjeru datotečnog sustava i kvote te ispravlja sve moguće greške. Nju je zgodno postaviti u dnevni cron. Naravno, preporuka je da se pogledaju man stranice svih navedenih naredbi. Na kraju napomenimo da je kvotu, naravno, moguće uključiti i na operativnom sustavu Windows Server.

P.S. Zaboravio sam napomenuti da se za obavijest o približavanju hard limitu koristi naredba warnquota čija se konfiguracija nalazi u datoteci /etc/warnquota.conf. I ovu naredbu bi trebalo postaviti u dnevni cron.

Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)

Komentari

Dobro je ovakav članak imati za podsjetnik.