Quota
Quota ( ang. przydział ) umożliwi nam kontrolowanie
maksymalnej ilośći danych przechowywanych na dysku przez użytkowników lub grupy.
Dzięki niej będziesz mógł ustawićjak dużo miejsca na pliki będzie posiadał poszczególny
użytkownik ftp. Konfiguracja przydziałów jest dość prosta i nie wymaga wiele wysiłku.
Jedyne co trzeba zrobić to stworzyć parę plików i skonfigurować wartościdla poszczególnych
użytkowników lub grup.
| Tip: |
| Uwaga! Ze standardowym jądrem
2.4.26 oraz systemem plików reiserfs quota nie działa.
Aby mimo to zainstalować quota zobacz na koniec tego
rozdzału: Quota, jądro 2.4.26 i reiserfs. |
Wskazówkę jak skonfigurować quota znajdziemy wpliku
konfiguracyjnym systemu /etc/rc.d/rc.M.
Postępując zgodnie zopisem w tym pliku oraz czytając manualemożna
skonfigurować przydziały w czterech krokach.
Krok 1.
Dodajemy w pliku /etc/fstab
wyrazy usrquota, grpquota
do wierszy zawierającychpartycje na których chcemy uruchomić quota. Znaczenie
i opis wszystkich pul w pliku/etc/fstab
przedstawiłem w artykule Dodawanie kolejnego
dysku HDD.
/dev/hdd1 /home ext2 default,usrquota,grpquota 0 0
Jeśli zamierzasz ograniczać zasoby w oparciu o
użytkowników, a nie grupy, to dodaj tylko usrquota.
Krok 2.
Tworzymy pliki aquota.user
oraz aquota.group w katalogu w którym
podmontowana jest partycja. Jeśli jest to partycja /
umieszczamy pliki w katalogu root /. Jeśli partycje
podmontowano tak jak w przykładzie powyżej w katalogu /home,
to tworzymy pliki w katalogu /home. Po ich stworzeniu
zmieniamy prawa dostępu do plików na 600 ( prawo odczytu i zapisu tylko dla użytkownika root ).
# touch /aquota.user /aquota.group
# chmod 600 /aquota.user /aquota.group
Podobnie jak w kroku 1, jeśli będziesz używał
ograniczenia zasobów tylko w oparciu o użytkowników to tworzysz
tylko jeden plik - aquota.user.
Krok 3.
Wydajemy polecenie uaktywniające quota:
# mount -o remount /
#
quotacheck -avugm
pierwsze polecenie spowoduje ponowne podmontowanie
partycji / z uwzględnieniem
zmian w pliku /etc/fstab.
drugie polecenie quotacheck
sprawdza wykorzystanie miejsca na dysku, tworzy, naprawia
pliki związane z przydziałami. Przełączniki podane jako
argumenty oznaczają:
-a
sprawdź wszystkie zamontowane partycje, prócz NFS
-v
wyświetlaj na bieżąco informacje o przebiegu wykonywania
-u
sprawdź ustawienia przydziałówtylko dla
partycji wymienionych w pliku /etc/mtab
-g
to samo co wyżej tylko dla grup
-m
domyślnie quotacheck
zanim przystąpi dosprawdzania jak wykorzystane jest miejsce na
partycji montuje ją jako tylko-do-odczytu ( ang. read-only )
w celu uzyskania najdokładniejszych wyników. Następnie po podliczeniu
wykorzystywanego miejsca ponownie montuje partycje jako czytaj-pisz
( ang. read-write ). Ten parametr powoduje ze
partycje nie są montowane jako read-only.
Zaleca się by po ustawieniu przydziałów zrestartować
system by zapobiec uszkodzeniu systemu plików lub utracie danych.
Krok 4.
Konfigurujemy quota dla poszczególnych użytkowników
i grup. Służy do tego polecenie edquota.
Konfiguracja quota dla użytkownika:
# edquota -u login_uzytkownika
Po wydaniu tego polecenia na ekranie powinieneś zobaczyć mniej więcej coś takiego:
Disk quotas for user login_uzytkownika (uid 1004):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 2000 0 0 15 0 0
Zostały nam wyświetlone informacje na temat quota dla
podanego użytkownika. Kolejne kolumny mają następujące znaczenie:
Filesystem
nazwa partycji.
blocks
ilość zajmowanego na partycji miejsca
przez pliki użytkownika w kilobajtach. Wartość 2000 w
przykładzie powyżej znaczy że pliki użytkownika na
/dev/hda3 zajmująobecnie 2MB.
soft
określa maksymalną quote dla użytkownika
na danej partycji w kilobajtach. Jeśli skonfigurowano
okres łaski ( ang. grace period )
użytkownik może przekroczyć skonfigurowany limit. Jeśli w
kolumnie tej jest wartość 0 znaczy to że przydziały są wyłączone.
hard
limit miejsca którego nie można przekroczyć
pod żadnym pozorem ( w kilobajtach).Jeśli w kolumnie tej
jest wartość 0 znaczy to że przydziały są wyłączone.
inode
inode to struktura danych zawierająca
informacje na temat pliku ( kto jest właścicielem,
jakie są prawa dostępu do pliku... itd. ). Każdy plik
posiada inode identyfikowaną
przez inode number ( i-number ).
Ustawiając wartości soft i
hard dla inode ustawiamy ile
plików może posiadać użytkownik. Wartość 15 w przykładzie
powyżej znaczy że użytkownik posiada obecnie 15 plików na
/dev/hda3.
Aby zmienić wartości dla podanego użytkownika najpierw
używamy strzałek by przemieścić kursor do pożądanego
miejsca, wciskamy "x" tyle razy by skasować
zmienianą wartość, wciskamy "i" i wpisujemy
wartość w kilobajtach, następnie wciskamy escape.
Powtarzamy proces by zmienić kolejną wartość.
Gdy skończymy wciskamy ponownie escape a
następnie ":wq" [enter].
Jeśli chcemy zmienić ustawienia quota dla większej ilości
użytkowników najpierw konfigurujemy quota dla użytkownika,
który będzie brany jako wzór. Powiedzmy że ustawiliśmy
przydziały dla użytkownika login_uzytkownika z poprzedniego
przykładu i teraz chcemy by inni użytkownicy mieli takie
same ustawienia. Wydajemy komendę:
# edquota -p login_uzytkownika user1 user2 user3 user4
lub bardziej skomplikowaną:
# edquota -p login_uzytkownika `awk -F: '$3 > 1000 {print $1}' /etc/passwd`
Dzięki powyższej komendzie ustawimy quota dla wszystkich
użytkowników w pliku /etc/passwd
o ID większym niż 1000.
Wspomniany wcześniej okres łaski
(ang. grace period )
ustawiamy przy pomocy tej samej komendy plus
odpowiedni przełącznik. Wydajemy polecenie: 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/hda3 7days 7days
Plik edytujemy w ten sam sposób jak plik z ustawieniami
quata. W przykładzie powyżej okres łaski wynosi 7 dni.
Znaczy to że użytkownik może przekroczyć soft quota tylko
na siedem dni. Zaglądając do manuala dowiemy się że mamy
do wyboru również inne jednostki czasu:'seconds','minutes','hours', 'days',
'weeks' oraz 'months'.
W celu zmieniany przydziałów dla grupy wydajemy
komendę: edquota -g nazwa_grupy
To tyle. Teraz pozostaje poświęcenie trochę czasu na zastanowienie
się ile miejsca powinniśmy przyznać konkretnym użytkownikom lub grupom.
Aby przejrzeć ustawienia przydziałów dla użytkowników i grup
korzystamy z polecenia: repquota -a
# repquota -a
*** Report for user quotas on device /dev/hda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 537408 0 0 49092 0 0
daemon -- 8 0 0 3 0 0
ftp -- 24 0 0 6 0 0
test1 -- 1024 0 0 8 0 0
test2 +- 1056 1000 0 6days 6 0 0
test12 -- 596 1000 0 5 0 0
test22 -- 536 1000 0 5 0 0
testq +- 2000 1000 0 6days 15 0 0
Widzimy tu wszystkie dane dotyczące wykorzystanego miejsca
na dysku, soft quota, hard quota, okres łaski i inne.
Mimo że ustawienia przydziałów powinny być na bieżąco
śledzone powinno się uruchamiać quotacheck -avug
przynajmniej raz w tygodniu. Najlepszym rozwiązaniem jest dodanie jej do crontab.
# echo "# Uruchomienie quotacheck" >> /var/spool/cron/crontabs/root
# echo "0 3 * * 0 /sbin/quotacheck -avug" >> /var/spool/cron/crontabs/root
To by było na tyle jeśli chodzi o uruchamianie i konfigurowanie przydziałów.
Jeśli z jakiegoś powodu potrzebujesz wyłączyć quota a później
włączyć to użyj poleceń: quotaoff
i quotaon.
Quota, jądro 2.4.26 i reiserfs
Najprostszym sposobem by uruchomić przydziały gdy mamy jądro
2.4.26 i wybraliśmy system plików reiserfs jest zainstalowanie
jądra 2.6.7 z katalogu testing
( ftp://ftp.slackware.com/pub/slackware/slackware-10.0/testing/packages/linux-2.6.7/ ).
Dzięki temu nie będziemy musieli przeprowadzać kompilacji jądra. Z katalogu
testing będziemy potrzebowali następujące pliki:
kernel-generic-2.6.7-i486-1.tgz
kernel-modules-2.6.7-i486-2.tgz
po ściągnięciu instalujemy:
# installpkg kernel-generic-2.6.7-i486-1.tgz
# installpkg kernel-modules-2.6.7-i486-2.tgz
Ponieważ obsługa reiserfs w powyższym jądrzeskompilowana
jest jako moduł to musimy go dodać w trakcie uruchamiania
jądra - zanim podmontujemy partycje root. Możemy to zrobić
instalując initrd czyli ram-dysk ( ang. ramdrive ).
Wkładamy wiec CD z Slackware do napędu i instalujemy pakiet
mkinitrd-1.0.1-i486-2.tgz.
# mount /dev/cdrom
# installpkg /mnt/cdrom/slackware/a/mkinitrd-1.0.1-i486-2.tgz
# cd /boot
# mkinitrd -c -k 2.6.7 -m reiserfs
Powyższe komendy zainstalują i skonfigurują nasz ramdysk.
Na koniec musimy dokonać jedną zmianę w pliku
/etc/lilo.conf. W części
odpowiadającej za konfiguracje Linuksa dopisujemy wiersz
initrd = /boot/initrd.gz.
# Linux bootable partition config begins
image = /boot/vmlinuz
initrd = /boot/initrd.gz
root = /dev/hda3
label = Linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends
Dodana przez nas linia musi znajdować się zaraz pod
image = /boot/vmlinuz.
Teraz wystarczy ponownie uruchomić lilo komendą:
# lilo
Added Linux *
#
Jeśli nie będzie żadnych błędów to restartujemy
komputer i konfigurujemy quota zgodnie z opisem na tej stronie.