wtorek, 13 lipca 2010

QUOTA linux

Quota - Limit dyskowy.



Administrator udostępniający konta: ftp/www/shell w pewnym momencie musi zmierzyć się z nadprodukcyjnymi użytkownikami, których celem jest wykorzystanie przestrzeni dyskowej serwera do ostaniego bajta.

Aby nie sparaliżować pracy serwera, należy ograniczyć zapędy user-ów do chomikowania danych w ilościach.... absurdalnych!

Lekiem na taką sytuację jest QUOTA.

Prawie każda dystrybucja Linux-a zawiera quotę. Może nie być instalowana domyślnie, ale na pewno znajdziesz pakiet quoty na jednej z płyt instalacyjnych twojej dystrybucji.

Jeśli nie jesteś pewny czy masz już zainstalowaną quotę w systemie, zawsze możesz to sprawdzić przy pomocy menagera pakietów jaki znajduje się w twojej dystrybucji.

Gdy wiemy, że mamy zainstalowaną quotę, przychodzi czas na konfigurację. Pierwsze co musimy zrobić to włączyć quotę, musi to być wykonane po zamontowaniu wszystkich systemów plików z /etc/fstab. Zaleca się włączanie quoty zaraz po fragmencie zgodnie z wpisami w /etc/rc.d, kiedy wszystkie systemy plików są zamontowane. Gdy jesteś początkującym adminem, najbezpieczniej będzie jeśli uruchomisz quotę na samym końcu inicjalizacji systemu, czyli dodając wpis w /etc/rc.d/rc.local.

Wpis inicjujący wygląda następująco:

        # Sprawdź quotę i włącz ją

if [ -x /usr/sbin/quotacheck ]

then
echo "Sprawdzam quote. Czekaj..."

/usr/sbin/quotacheck -avug

echo " Koniec sprawdzania."

fi


if [ -x /usr/sbin/quotaon ]

then

echo "Wlaczam quote."

/usr/sbin/quotaon -avug

fi

Polecenie quotacheck powino być wykonywane przy każdorazowym starcie systemu, lub po jakimś czasie użytkowania, np. po jednym dniu.
W tym celu ustaw w crontab:
0 1 * * * root /usr/sbin/quotacheck -avug


Kolejnym etapem poskramiania użytkowników jest modyfikacja /etc/fstab. Standardowy wpis bez włączonej quoty wygląda mniej więcej tak:
/dev/hda1 / ext3 defaults 1 1
/dev/hda3 /usr ext3 defaults 1 1
/dev/hdb1 /home ext3 defaults 1 1

Aby dodać quotę do systemu plików, dodaj usrquota do czwartego pola zawierającego default:
/dev/hdb1 /home ext3 defaults,usrquota 1 1

Jeśli potrzebujesz ograniczenia dla grup zamień usrquota na grpquota:
/dev/hdb1 /home ext3 defaults,grpquota 1 1

A jeśli potrzebujesz odgraniczeń dla użytkowników i grup:
/dev/hdb1 /home ext3 defaults,usrquota,grpquota 1 1

Teraz musimy stworzyć plik w katalogu głównym ograniczanej partycji - quota.user lub/i quota.group. Plik(i) zawiera(ją) wszystkie dane o quocie.

Co możemy zrobić tak:
# cd /home   // przechodzimy do katalogu głównego ograniczanej partycji
# touch quota.user // tworzymy plik
# touch quota.group
# chmod 600 quota.user // zmieniamy prawa dostępu ( tylko dla root-a!!!)
# chmod 600 quota.group

Teraz należy zresetować system, by móc ustawić limity.

Do ustawiania limitów służy polecenie edquota. Przykładowo: Chcemy nałożyć quote na użytkownika którego login to jacek.

Polecenie:

# edquota -u jacek

uruchomi edytor podany w zmiennej $EDITOR, standardowo jest to vi, za pomocą którego edytujemy quotę dla danego użytkownika:

przykładowo ustawiamy(edytujemy) tak:
Quotas for user jacek:
/dev/hdb1: blocks in use: 12033, limits (soft = 15000, hard = 20000)
inodes in use: 163, limits (soft = 4500, hard = 5000)

blocks in use - to całkowita ilość bloków (w kilobajtach) jaką zużył dany użytkownik.
inodes in use - to całkowita liczba plików jaką użytkownik ma na dysku.

Uwaga: Powyższy wpis jest już obięty limitem. Aby wyłączyć limit wystarczy w polach soft i hard wstawić 0.

Przypisanie limitów dla grupy wykonujemy poleceniem:

# edquota -g grupa1

dalej postępujemy identycznie jak przy ograniczaniu limitu dla użytkownika, do edquota user.
Są jeszcze trzy terminy, które powinieneś znać: Soft Limit, Hard Limit i Grace Period.

Soft Limit - określa maksymalną objętość dysku, jaką użytkownik ma przyznaną. Ale jeśli połączymy to z grace period, to soft limit określa nam granicę, po przekroczeniu której użytkownik zostaje ostrzeżony.

Hard Limit - działa to jedynie przy ustawieniu grace period. Określa to absolutny limit na dysku, którego dany użytkownik nie może przekroczyć.

Grace Period - jest to okres czasu (łaski), po jakim zacznie działać opcja soft link. Wartości tej opcji podaje się poleceniem edquota -t. Jednostkami czasu mogą być: sekundy, minuty, godziny, dni, tygodnie lub miesiące.
Oto co zobaczysz po wydaniu polecenia edquota -t:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hdb1: block grace period: 1 days, file grace period: 2 days

Zgodnie z powyższymi wskazówkami ustawiliśmy quotę dla użytkownika: jacek
Jeśli musimy teraz ustawić quotę dla kolejnych użytkowników, możemy sobie ułatwić życie używając polecenia:

# edquota -p jacek adam

Mamy ustawiony identyczny limit dla użytkownika: jacek i adam.

Poleceniem które się jeszcze nam przyda jest: repquota
Repquota generuje sumaryczny raport używania limitów w systemie.

Opcje repquoty:

-a raport wszystkich systemów plików.
-v raport z wszystkich limitów, łącznie z tymi nieużywanymi.
-g raport z limitów grup.
-a raport z limitów użytkowników.

Powyższe polecenia i opcje są dostępne jedynie dla root-a lub specjalnie do tego przypisanego użytkownika.

Opcją dostępną dla każdego użytkownika systemu jest quota
Polecenie quota pozwala użytkownikowi na sprawdzenie jakie limity posiada jego konto. Opcje quoty:

-g wypisuje limity grup do jakich należy użytkownik.
-u wypisuje linit określonego użytkownika.
-v wypisuje limity wszystkich systemów plików, obsługujących limity przy należne użytkownikowi.
-q pokazuje użytkownikowi czy posiada jakieś ograniczenia .



-----------------------------------------------------------------------------------------------

Organizacja ograniczeń dyskowych użytkowników w Linuksie
4 marca 2011, m1s13k

Ceny sprzętu komputerowego osiągnęły taki poziom, że zaopatrzenie się w dodatkowe nośniki danych (lub pojedyncze, bardzo pojemne dyski) nie jest już problemem dla zwykłych użytkowników. Ale kiedy z jednej maszyny korzysta kilku użytkowników, konieczne staje się zadbanie o jej właściwe działanie. Ostatnią rzeczą, którą chcemy doświadczyć to zapełniona partycja. Jednym ze sposobów obronienia się przed taką możliwością jest włączenie ograniczeń dyskowych.

Co jest złego w zapełnionym dysku? Może to zatrzymać zapisywanie danych przez system na danej partycji oraz może powodować poważny spadek wydajności.

Jak tego uniknąć? Istnieje kilka sposobów. Jednym z nich jest oddzielenie partycji home użytkowników czyli zlokalizowanie katalogów domowych wszystkich użytkowników na osobnym dysku. Ale to opłaci się na systemie z większą ilością użytkowników. Rozsądniejszym sposobem rozwiązania tego problemu jest użycie ograniczeń dyskowych. Ograniczenia dyskowe pozwalają określać jak dużo miejsca przydzielić danemu użytkownikowi. To bardziej efektywne rozwiązanie i dodatkowo zapobiega przed zaśmiecaniem dysku przez użytkowników niepotrzebnymi im plikami.

Niestety Linux nie posiada poręcznego, graficznego narzędzia do tego zadania. Istnieje szereg kroków, które należy podjąć oraz trzeba będzie też edytować kilka dość istotnych plików (jak /etc/fstab). Więc przed kontynuowaniem, obiecaj, że weźmiesz się za to zachowując ostrożność. Zadbaj o kopie zapasowe plików, które będziesz edytować (na wszelki wypadek) i modyfikuj rozważnie. Nie chcemy zastać nieuruchamialnego systemu.

Do celów tego artykułu użyjemy CentOS 5. Nie powinno być większych różnic w innych dystrybucjach.
Instalacja

Pierwszą rzeczą, którą musimy zrobić to zainstalowanie narzędzia obsługującego ograniczenia. Tym narzędziem jest – quota. Całkiem szybko i łatwo możemy zainstalować wykonując następujące kroki:

1. Otwieramy terminal.
2. Wpisujemy su by uzyskać uprawnienia administratora.
3. Wykonujemy polecenie yum install quota.
4. Akceptujemy konieczne zależności.
5. Zezwalamy na instalację.

Jesteśmy już gotowi do zabrania się za proces konfiguracji. Poniższe komendy wymagają uprawnień administratora.
Konfiguracja ograniczeń dyskowych

Na początek edytujemy plik /etc/fstab żeby nasz system wiedział, że chcemy stosować ograniczenia. Zakładamy że cała partycja /home znajduje się na osobnej partycji. Przed edycją, linia w fstab dla tego urządzenia wygląda tak:

/dev/VolGroup00/LogVol02 /home ext3 defaults 1 2

Ponieważ mamy zamiar ustalać ograniczenia tylko dla indywidualnych użytkowników, dodajemy opcję usrquota. Zaktualizowana linia prezentuje się tak:

/dev/VolGroup00/LogVol02 /home ext3 defaults,usrquota 1 2

Po zapisaniu /etc/fstab by zmiany przyniosły efekt musimy ponownie zamontować partycję. Przed tą czynnością musimy się upewnić, że nikt nie używa tego systemu plików. Dlatego przed wykonaniem polecenia wylogowujemy wszystkich użytkowników. By ponownie zamontować /home wykonujemy:

mount -o remount /home

Tworzenie bazy danych plików

Choć system wie już, że ograniczenia są włączone, nie ma koncepcji jak użyć tej funkcji. Przed rzeczywistym korzystaniem z limitów, musimy za pomocą narzędzia quotacheck wygenerować tablicę obecnego wykorzystywania dysku. By utworzyć tablice wykonujemy polecenie quotacheck z opcją -c i opcją, która poinstruuje quotacheck czy chcemy włączyć ograniczenia dla grup, użytkowników czy ich obu. Więc, dla włączenia ograniczeń tylko dla użytkowników, nasza komenda będzie wyglądać tak:

quotacheck -cu /home

Teraz możemy ją wykonać ponownie, zastępując opcję -c przez -av:

-a — Sprawdzi wszystkie lokalnie zamontowane, z włączonymi ograniczeniami partycje.
-v — Włączy szczegółowe wyjście.

Nowa komenda prezentuje się tak:

quotacheck -avu

Baza danych posiada już konieczne dane do używania ograniczeń. Ale to jeszcze nie koniec. Nadal musimy skonfigurować limity dla użytkowników.
Ograniczenia użytkowników

Zgodnie z oczekiwaniami, jest możliwe skonfigurowanie różnych limitów dla różnych użytkowników. Staje się to przydatne kiedy mamy część użytkowników, którzy mają zadania wymagające większej przestrzeni (Na przykład, grafik, który pracuje na dużych plikach). Podstawowym narzędziem do zmieniania limitów jest edquota. Jego obsługa jest całkiem prosta. Powiedzmy, że chcemy zmienić limity dyskowe użytkowniczki stephanie. Komenda przyjmie postać:

edquota stephanie

W trakcie wykonywania polecenia, na ekranie pojawi się coś w stylu:

Disk quotas for user stephanie (uid 507):
Filesystem blocks soft hard inodes soft hard
/dev/VolGroup00/LogVol02 440436 0 0 41 0 0

Odpalając edquota znajdziemy się w domyślnym edytorze. To co musimy zrobić to edycja lekkich (soft) i twardych (hard) limitów dla użytkownika. Ale co to są lekkie i twarde limity?

Twarde limity (ang. hard limits) to bezwzględny limit. Kiedy ustawiamy ten limit, użytkownik bezwarunkowo nie może go przekroczyć. Z drugiej strony, lekkie limity (ang. soft limits), pozwalają użytkownikom w szczególnych przypadkach przekroczyć ustalony limit.

Dajmy stephanie 5GB twardego limitu. Zastępujemy 0 pod hard liczbą 10485760 (GB przekonwerowane na liczbę bloków) i zapisujemy plik. Teraz wykonujemy:

quota stephanie

by zweryfikować czy quota działa.

Jeśli chcielibyśmy ustawić lekki limit poprzedzający twardy limit powinniśmy ustawić ten limit mniejszy od twardego. Dajmy stephanie 4GB lekkiego, przedłużonego do 5GB twardego, limitu. Zastępujemy 0 związane z soft limit przez 8388608. Następnie, musimy ustawić okres pobłażliwości dla lekkiego limitu. Wykonujemy:

edquota -t

Uruchamiajac tę komendę, ujrzymy coś podobnego do:

Filesystem Block grace period Inode grace period
/dev/VolGroup00/LogVol02 7days 7days

Zmieniamy liczbę dni pod Block i Inode dostosowując do naszych potrzeb. Należy zwrócić uwagę, że format jest dokładnie taki jak w przykładzie (bez spacji w7days). Zwróć uwagę, że można ustawić okres pobłażliwości dla dni, godzin, minut lub sekund.
Raporty ograniczeń dyskowych

Od czasu do czasu będziemy potrzebowali zaglądnąć do raportów używania ograniczeń. Do tego celu istnieje proste polecenie:

repquota -a

Komenda pokaże nam wszystkie informacje, które będziemy potrzebować o każdym użytkowniku jeśli chodzi o ich limity.
Na koniec

Ograniczenia dyskowe to proste środki do kontrolowania w jaki sposób użytkownicy używają przydzieloną im przestrzeń. Przez kontrolowanietego możesz być pewny, że nikt nie zużyje tak dużo miejsca by zagrozić wydajności systemu.

Brak komentarzy:

Prześlij komentarz