Linux – Friheden til systemadministration: Version 2.8.20060113 – 2021-01-07 | ||
---|---|---|
forrige | Kapitel 2. Systemadministration | næste |
Hvis man driver en server med mange brugere, sker det fra tid til anden at en bruger bevidst eller ubevidst kommer til at fylde disken op med filer. For at et sådant uheld ikke skal kunne påvirke de andre brugere på systemet, så kan man installere quota. Quota gør det muligt at sætte en disk forbrugs-grænse for den enkelte bruger eller evt. for en gruppe.
Systemet er så fleksibelt, at man yderligere kan sætte en ekstra-pulje op, så brugeren i en fast tidsperiode (kaldet grace-perioden) godt må "svine" med pladsen bare der ryddes op igen; f.eks. kan man have 10 MB diskplads, men kan få lov til i en periode på to timer ekstra at bruge yderligere 5 MB.
Både den almindelige kvote og den ekstra diskkvote virker ved at man pludselig ikke kan gemme filer, når man er oppe på maksimum. Brugeren må derefter selv slette filer.
Derfor er det vigtigt at systemadministratoren forklarer brugeren hvilke grænser, der er sat og hvad man gør for at følge eget forbrug - og endelig hvordan man rydder op.
Installation: Der skal være quota-understøttelse i Linux-kernen. Normalt vil en Linux-distribution have quota understøttet, ellers må du oversætte kernen på ny og da svare ja til "Quota Support" under "Filesystems" (CONFIG_quota=y).
I quota-tools pakken findes de værktøjer der skal være installeret for at du kan benytte diskkvoterne. Enten kan du benytte hvad der hører til din distribution, (fx. quota-3.01pre9-3.i386.rpm hos Red Hat 7.2) eller også hente og installere pakken http://prdownloads.sourceforge.net/linuxquota/quota-3.03.tar.gz
Quota sættes på de enkelte partitioner, dvs. /etc/fstab skal redigeres, så man i options-feltet tilføjer usrquota til hver partition man ønsker at køre quota på.
F.eks. ændres linjen i /etc/fstab fra
/dev/hda2 /home ext2 defaults 1 1
til
/dev/hda2 /home ext2 defaults,usrquota 1 1
Til at starte quota skal der nu indekseres og quota-programmet skal startes. Kør følgende som root
[root@linus /root]# /bin/mount -v -o remount /home <-- for at gen-montere den ændrede partition [root@linus /root]# /sbin/quotacheck -a -m <--- for at lave et index over brugernes forbrug [root@linus /root]# /sbin/quotaon -uv /home <--- start quota
I den sidste kommando kan /home skiftes ud med -a, i så fald gælder kommandoen alle filsystemer.
mount køres kun en gang for alle, for at få systemet til at genindlæse /etc/fstab.
quotacheck køres for at danne et indeks over brugernes diskforbrug. Indekset gemmes på ældre systemer i /home/quota.user og i /home/aquota.user på nyere. quotacheck skal køres igen hvis man har rettet fejl i filsystemet med fsck - typisk under opstart efter strømudfald. Det klares da ofte automatisk af ens initscripts ellers kan følgende indsættes, inden quotaon kaldes, i rc.sysinit:
if [ -x /sbin/quotacheck ]; then echo "Undersøger kvoter på lokale filsystemer" /sbin/quotacheck -v -a fi
quotaon skal køres hver gang maskinen startes op, og kan automatiseres i med et par linjer i rc.sysinit eller rc.local (SuSE /etc/rc.d/boot.local):
if [ -x /sbin/quotaon ]; then echo "Starter kvotestyring for lokale filsystemer" /sbin/quotaon -a fi
Nu kan man redigere grænsen for en bruger - hvis man har mange brugere, så opret en test-bruger "quotauser" og lave følgende som skabelon og sidenhen kan man kopiere test-brugerens quota-opsætning til alle andre brugere.
Grænser redigeres ved at køre edquota for brugeren. Grænser for diskforbrug anføres i kbytes, dvs. 10000 betyder 10MB. Hvis quota ikke sættes op er standard-indstillingen at der ingen grænse er (dette anføres som et nul i opsætningsfilen).
[root@linus /root]# /usr/sbin/edquota -u quotauser Disk quotas for user tyge (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda2 695879 0 0 6741 0 0
Vi ser at brugeren tyge med uid 500 på filsystemet /dev/hda2, (hvor /home mountes ifølge /etc/fstab), i øjeblikket benytter 695879 filblokke (679MB) og 6741 filer, samt at der ikke er sat grænser for hvor meget brugeren må benytte.
Ret nu tallene til det brugeren må. Det er vi-editoren som kommer frem, hvis du ikke har sat EDITOR variablen.
"soft" betyder grænse, som brugeren normalt forventes at holde sig under. Systemet tillader dog at denne grænse overstiges i kortere tid ("grace"-perioden).
"hard" betyder grænse, som brugeren aldrig kan overstige.
Til højre for de første soft/hard står der inodes og igen soft/hard - dette er antal filer man kan lave. Dette bruges kun sjældent. Hvis man ønsker at brugeren fast kan bruge 10 MB og 5 MB ekstra i grace-perioden, samt et ubegrænset antal filer, skrives
Disk quotas for user tyge (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda2 695879 10000 15000 6741 0 0
Afslut med at skrive :wq!
Hvis man derefter vil sætte "grace"-perioden hvor ekstra diskforbrug tolereres, så kan dette indstilles ved at skrive
[root@linus /root]# /usr/sbin/edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda2 7 days 7days
For illustrations skyld kan vi sætte en grace-periode helt ned til to timer ved at rette teksten til
Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda2 2hours 2hours
Afslut med at skrive :wq!
Tanken med at tildele en test-bruger "quotauser" er at man relativt nemt kan tildele samme quota til alle almindelige brugere ved at køre
[root@linus /root]# edquota -p quotauser `awk -F: '$3 > 499 {print $1} /etc/passwd`
Tricket er her at man finder alle almindelige brugere ved bruger-nummer på 500 eller større.
Andre interessante kommandoer:
repquota -a <-- viser status på diskforbrug
warnquota <-- bruges til at alarmere brugere som er over kvote
Til warnquota, der sender mail til brugere over kvota, hører opsætningsfilerne /etc/quotatab og /etc/warnquota.conf. Disse benyttes især til at gøre meddelelserne til brugerne mere læse venlige. quota-tools understøtter i øvrigt også GNU gettekst, så der er mulighed for at oversætte værktøjerne til brugernes eget sprog (make pot && kbabel pot.po).
I /proc/sys/fs systemet findes dquot-nr og dquot-max, som viser antallet af cachede kvota forekomster, antallet af frie disk kvota forekomster samt øvre grænse for antallet af disk kvota forekomster.
Med quota er det altså muligt at begrænse antallet af filer og deres samlede størrelse pr. bruger. Systemet kan desuden konfigureres til at begrænse antallet af filer og deres samlede størrelse pr. gruppe.
Med quotastats kan man få lidt information om hvorledes selve kvota systemet har det.
[tyge@hven ~]$ /usr/sbin/quotastats Number of dquot lookups: 101289 Number of dquot drops: 101271 Number of still active inodes with quota : 18 Number of dquot reads: 93 Number of dquot writes: 2077 Number of quotafile syncs: 134518740 Number of dquot cache hits: 7391 Number of allocated dquots: 90 Number of free dquots: 2036 Number of in use dquot entries (user/group): -1946
Flere informationer om quota kan findes på
Den medfølgende dokumentation er lidt spredt, men kan samles til HTML og PostScript med følgende liner:
for f in $(file *|grep troff|cut -d: -f-1) do man2html $f >doc/$f.html done cd doc sgml2html quotadoc.sgml groff -Thtml -ms quotas.ms >quotas.html ln -s quotas-1.eps quotas-1.ps