Quota dyskowa dla użytkowników

Wpis zamieszczony o 12:39:53, 08 marca 2007 Trackback


Zabrałem się w końcu za swój własny serwer. Jedną z pierwszych rzeczy, o które musiałem się zatroszczyć były quoty dyskowe. Jak powszechnie wiadomo użytkownicy mają w zwyczaju wykorzystywać wszystkie dane im możliwości, w moim przypadku zapełnienie 1/3 dysku serwera niezbyt mi sie uśmiecha :). Stworzyłem więc limity danych, które każdy z użytkowników może trzymać w swoim katalogu domowym.
W czasie przeszukiwania internetu natknąłem się na kilkanaście HowTO dotyczących tego zagadnienia. Niestety, jak to zwykle w świeci Linuksowym bywa, większość z nich została napisana kilka dobrych lat temu i porady tam zawarte nijak się mają do obecnych standardów. Dlatego też pojawił się ten artykuł. Do dzieła!

Instalacja i konfiguracja quoty dyskowej w Ubuntu

Zaczynamy od instalacji samej quoty:
# apt-get install quota
Następnie musimy się zastanowić, dla jakiej partycji zaczniemy stosować quotę. W moim przypadku są to dwie partycje stworzone specjalnie dla użytkowników serwera - partycja /dev/hda5 i /dev/hda6. Jak tylko zdecydujemy się na którąś z naszych partycji wyedytujmy plik /etc/fstab:
# nano -w /etc/fstab
I do wybranej przez nas partycji dopiszmy w opcjach montowania usrquota:

UUI(..)17 /home/serwer/konta ext3 defaults,usrquota 0 0
UUI(..)97 /home/serwer/konta2 ext3 defaults,usrquota 0 0

Istnieje pojęcie grpquota, czyli limity dla grup, jednak nie będę zajmował się tym zagadnieniem, nie interesują mnie limity grupowe.
Po dopisaniu odpowiednich wpisów do fstab musimy przemontować partycje na których dokonaliśmy zmian (lub zrestartować komputer).
Otrzymaliśmy zatem wybraną przez nas partycję zamontowaną w trybie quoty. Skonfigurujmy ją zatem!
# quotaon -avug
Polecenie powyższe włączy tryb quoty użytkownika na wybranej przez nas partycji.
Pozostało nam stworzenie dodatkowego pliku startowego do włączania quoty dyskowej:
nano -w /etc/init.d/quota_check_on

if [ -x /usr/sbin/quotacheck ]
then
echo "Sprawdzam quote..."
/usr/sbin/quotacheck -avug
echo " OK "
fi

if [ -x /usr/sbin/quotaon ]
then
echo "Wlaczam quote..."
/usr/sbin/quotaon -avug
fi

# chmod +x /etc/init.d/quota_check_on
# update-rc.d quota_check_on defaults 99
Voila! Nasza quota już działa! Sprawdźmy ją zatem.
Stwórzmy użytkownika, którego katalog domowy będzie zawierał się na stworzonej przez nas partycji z quotą. W moim przypadku ścieżka dostępu dla użytkownika testowy wygląda tak:

testowy@orion:/home/serwer/konta/testowy$  

Gdy stworzymy użytkownika musimy ustawić mu rozmiar quoty dyskowej. Należy zwrócić uwagę, że w tej chwili każdy z naszych użytkowników dysponuje własną, indywidualnie przydzielaną przez nas quotą dyskową. Quotę dla użytkownika ustalamy poprzez:
# edquota [user]
więc w moim przypadku:
# edquota testowy
Pojawia nam się nasz ulubiony edytor :-) z konfiguracją quoty. Krótki opis:

Limity dyskowe user testowy (uid 1003):
  System plików                bloki        miękki     twardy   i-węzły    miękki   twardy
  /dev/hda6                         0          0          0          0        0        0
  /dev/hda5                     10124         70      10125          6        0        0
  • bloki - obecna przestrzeń dyskowa użyta przez usera
  • miękki - "miękki" limit zajętych bloków z wyłączeniem tzw. grace time, czyli czasu pobłażliwości (patrz niżej)
  • twardy - ostateczny limit zajętości bloków, grace time nie liczy się.

Takie same reguły dla i-węzłów.
grace time ustalamy za pomocą komendy:
# edquota -t
Jest to czas, w którym użytkownik może przekraczać miękki limit.
Aktywujmy zatem dla naszego użytkownika testowego niską wartość quoty (zgodnie z blokami naszego dysku twardego), przelogujmy się na niego i spróbujmy przekroczyć ustalony limit quoty. Niespodzianka!

$ while [ 1 == 1 ]; do echo $RANDOM >> plik; done
bash: echo: bład zapisu: Disk quota exceeded
bash: echo: bład zapisu: Disk quota exceeded
bash: echo: bład zapisu: Disk quota exceeded

Biedny userek :-)

Mam nadzieję, że w dość jasny sposób opisałem tworzenie quot dyskowych. Sposób użycia pozostawiam Wam. Nieznośny brat zapełniający dysk obrazami gier? Konta dla innych użytkowników? Serwer shellowy.
Ponownie ogranicza tylko wyobraźnia...

Art ten jest pierwszym z cyklu krótkich "HowTo" dotyczących stawiania swojego małego serwera shell//mail//jabber i innych usług. Na początku skupiać się będę na stworzeniu struktury usług, w dalszej części się na bezpieczeństwie serwera, limitach użytkowników itp.
Enjoy!

Komentarze do “Quota dyskowa dla użytkowników”


  1. Jeżeli chcesz, aby wpis z kategorii Techblog pojawił się dodatkowo na techblog.pl to musisz go umieścić na poziomie 0.


  2. Chyba skorzystam ;-) Byłem przeciwny wstawianiu swoich wpisów na poziom 0 w jogger.pl, jednak.. techblog jest OK. ;-)
    Po zastanowieniu - wpis na poziom 0 mode : on.


  3. zamiast:
    while [ 1 == 1 ]; do echo $RANDOM >> plik; done
    można dać:
    cat /dev/urandom >> plik
    będzie szybciej :)


  4. I to wszystko w rytm muzyki...
    cat /dev/urandom >/dev/dsp # ;-)


  5. Tak będzie jeszcze szybciej:
    cat /dev/zero >> plik

Dodaj komentarz

Textile jest włączony. Zobacz składnię (wiki.jogger.pl)

code