Quota czyli limity dyskowe są narzędziem mającym na celu lepsze i bardziej zorganizowane zarządzanie zasobami dyskowymi w systemach operacyjnych. W środowisku Linux funkcja ta dostępna jest od momentu wprowadzenia jadra w wersji 2.2. Limity dyskowe przydatne stają się w sytuacji gdy z danego systemu korzysta wielu użytkowników, z których każdy posiada swój katalog domowy w jakim może przechowywać swoje pliki lub też jeżeli użytkownicy posiadają na danym systemie miejsce na stronę WWW lub trzymają swoje pliki na kontach FTP itp. Łatwo wtedy może dojść do sytuacji, że z pozoru duży dysk może zostać zapełniony co prowadzić będzie do wielu problemów. Limity nałożone na użytkowników uniemożliwiają przepełnienie systemu przez co zapobiegniemy destabilizacji pracy systemu operacyjnego. Aby jednak limity były również przyjazne dla użytkowników narzędzie "quota" posiada w swojej ofercie możliwość ostrzegania użytkownika o zbliżającym się limitem dostępnego miejsca powiadamiając go odpowiednim komunikatem.
Na początek warto sprawdzić czy narzędzie "quota" istnieje w naszym systemie :
quota-3.17-16.el6.i686
Jeżeli nie należy je doinstalować :
# yum install – y quota
Aby upewnić się, że jądro systemu na jakim pracujemy wspiera działanie narzędzia "quota" wydajemy komendę :
# grep -i config_quota /boot/config-`uname -r` wynikiem działania będzie :
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
Ustawienia limitów - quota
- quoaton - Włączenie limitów narzędzia quota
- quoataoff - Wyłączenie limitowania narzędzia quota
- edquota - Edycja ustawień limitów dla danego użytkownika
- quota - Umożliwia użytkownikom sprawdzenie zużycia własnych zasobów dyskowych
- repquota - Generowanie raportu zużycia zasobów dyskowych
- quotacheck - Uruchomienie bazy limitów
Teraz aby rozpocząć ustawianie limitowania dany system plików musi posiadać ustawienie informujące o możliwości zakładania limitów, co konfigurowane jest w pliku /etc/fstab ( należy pamiętać o utworzeniu kopii zapasowej przed edycją ). Limity mogą dotyczyć użytkowników, grup lub obu naraz.
Sprawdzamy jakie systemy plików są montowane zgodnie z zapisami w pliku /etc/fstab (tworzenie oraz montowanie partycji omówiono we wcześniejszych tematach) :
# cat /etc/fstab
Między innymi znajdzie się tam przykładowo taki wpis :
/dev/sdb1 /opt/data ext3 defaults 0 0
Oznacza on iż do katalogu /opt/data podmontowany jest system plików z partycji /dev/sdb1
W celu umożliwienia korzystania z przydziału limitów na tym systemie plików wpis ten modyfikujemy :
/dev/sdb1 /opt/data ext3 defaults,usrquota,grpquota 1 2
Następnie zapisujemy zmiany.
By wprowadzić dokonane zmiany w życie wykonujemy ponowne zamontowanie systemu plików.
# mount -o remount /opt/data/
Teraz możemy sprawdzić wprowadzone zmiany :
# mount | grep data
/dev/sdb1 on /opt/data type ext3 (rw,usrquota,grpquota)
Po wykonaniu powyższych czynności można przejść do konfigurowania limitów dla użytkowników.
Do dyspozycji mamy dwa pliki, w których konfigurowane są limity dla użytkowników i grup.
- aquota.users - Plik limitów dla użytkowników
- aquota.group - Plik limitów dla grup
Pliki te tworzone są automatycznie w głównym katalogu dla systemu plików dla którego uruchomiono możliwość limitowania przestrzeni dyskowej. W przedstawionym tu przykładzie limity dotyczą systemu plików dla lokalizacji /opt/data na początek warto poznać polecenie quotacheck.
Składnia polecenia quotacheck [opcje] <partycja>
-c - Nie odczytuj istniejących plików limitów
-u - Sprawdzenie limitów użytkowników
-g - Sprawdzenie limitów dla grupy
-m - Nie przemątuje systemów plików o statusie tylko do odczytu
-v - Wyświetl więcej informacji
By pliki limitów zostały utworzone wydajemy polecenie:
# quotacheck -ugm /opt/data/ lub # quotacheck -cug /opt/data/
Może się zdażyć, że utworzenie plików nie będzie możliwe i zablokowane prze SELinux. Możemy wtedy ustawić poprawny kontekst poleceniem :
# restorecon -Rv * lub wyłączyć SELinux poleceniem : # setenforce 0
Jeżeli wszystko wykonane zostanie poprawnie w katalogu /opt/data/ powinny znaleźć się odpowiednie pliki :
ls /opt/data/
aquota.group aquota.user lost+found
Uruchomienie Limitów - Quotas
Normalnie by zastosować limitowanie przestrzeni stosujemy polecenia quotaon oraz quotaoff. Narzędzie quota zostaje również automatycznie uruchomione podczas startu systemu. Możemy również wykonać uruchomienie ręcznie by mieć pewność że limitowanie zostało włączone:
# quotaon -v /opt/data/
/dev/sdb1 [/opt/data]: group quotas turned on
/dev/sdb1 [/opt/data]: user quotas turned on
Istnieją dwa różne limity jakie możemy stosować w narzędziu "quota" : Soft Limit oraz Hard Limit.
Soft Limit (limit miękki) - Można powiedzieć , iż jest to limit czasowy oznacza to, iż użytkownik może przekroczyć ten limit dowolną ilość razy ale musi pamiętać o uporządkowaniu plików do odpowiedniego rozmiaru w ustawionym czasie (grace period). Dzięki temu ustawieniu użytkownik ma możliwość tymczasowego przechowywania większej ilości danych. Jeżeli jednak nie uporządkuje plików w określonym czasie zostaną one obcięte do limitu rozmiaru jaki dany użytkownik posiada.
Hard limit (limit twardy) - Jest to wartość określająca maksymalny rozmiar zasobu dyskowego jaki jest udostępniony dla użytkownika, który nie może być przez niego przekroczony.
Rozumiejąc istnienie i działanie powyższych limitów można przystąpić do konfigurowania limitów dla użytkowników. Do ustawiania limitów stosujemy polecenie edquota. Dla ćwiczenia utwórzmy limit przestrzeni dla wybranego użytkownika ( w moim przypadku będzie to : "max") o rozmiarze 20MB dając jednocześnie możliwość przechowania 5MB więcej w określonym czasie ale nie więcej niż 25 MB.
Składnia polecenia # edquota [ -u | -g ] [nazwa_użytkownika | nazwa_grupy]
Ustawienia quota dla użytkownika "max"
Wydajemy polecenie :
# edquota -u max
i wpisujemy odpowiednie modyfikacje:
Wydajemy polecenie :
# edquota -u max
i wpisujemy odpowiednie modyfikacje:
Disk quotas for user max (uid 505):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 20000 25000 0 0 0
Zapisujemy i zamykamy plik. Od tej chwili użytkownik "max" posiada limity przestrzeni dyskowej na systemie plików /dev/sdb1 który zamontowany jest w lokalizacji /opt/data.
Teraz ustawimy również czas w jakim możliwe jest przekroczenie ograniczenia soft limit. Ustawienia czasowego przekroczenia limitu miękkiego ustawiamy poleceniem :
# edquota -t
Domyślnie limit czasu wynosi 7 dni ale na potrzeby ćwiczeniowe zmienimy okres czasu na 2 dni.
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/sdb1 2days 2days
Teraz ustawimy również czas w jakim możliwe jest przekroczenie ograniczenia soft limit. Ustawienia czasowego przekroczenia limitu miękkiego ustawiamy poleceniem :
# edquota -t
Domyślnie limit czasu wynosi 7 dni ale na potrzeby ćwiczeniowe zmienimy okres czasu na 2 dni.
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/sdb1 2days 2days
Zamykamy plik zapisując zmiany.
Składnia polecenia # repquota [opcje] <partycja>
Opcje :
-a - Raport o wszystkich nie NFS'owych systemach gdzie włączono limity
-u - Raport o limitach użytkowników
-g - Raport o limitach grup
-v - Informacje szczegółowe
Sprawdźmy limity (quoatas) dla /opt/data/ :
# repquota -uv /opt/data/
*** Report for user quotas on device /dev/sdb1
Block grace time: 2days; Inode grace time: 2days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 68708 0 0 4 0 0
max -- 0 20000 25000 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
Możemy zapoznać się z szczegółowymi informacjami gdzie widoczne są limity dla użytkownika "max", okres działania limitu miękkiego (soft limit), oraz maksymalny limit (hard limit).
Jeżeli użytkownik "max" chce sprawdzić swoje limity wykonuje polecenie quota:
$ quota
Disk quotas for user max (uid 505):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 8 20000 25000 1 0 0
Quota - raportowanie
By dowiedzieć się o istniejących ustawieniach limitów w systemie możemy użyć polecenia # repquota.Składnia polecenia # repquota [opcje] <partycja>
Opcje :
-a - Raport o wszystkich nie NFS'owych systemach gdzie włączono limity
-u - Raport o limitach użytkowników
-g - Raport o limitach grup
-v - Informacje szczegółowe
Sprawdźmy limity (quoatas) dla /opt/data/ :
# repquota -uv /opt/data/
*** Report for user quotas on device /dev/sdb1
Block grace time: 2days; Inode grace time: 2days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 68708 0 0 4 0 0
max -- 0 20000 25000 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
Możemy zapoznać się z szczegółowymi informacjami gdzie widoczne są limity dla użytkownika "max", okres działania limitu miękkiego (soft limit), oraz maksymalny limit (hard limit).
Jeżeli użytkownik "max" chce sprawdzić swoje limity wykonuje polecenie quota:
$ quota
Disk quotas for user max (uid 505):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 8 20000 25000 1 0 0
W przypadku gdy przekroczy rozmiar plików dostanie komunikat :
Disk quota exceeded
Dzięki. Przyda się.
OdpowiedzUsuńMuszę coś podobnego zrobić na mojej prywatnej chmurze. Trzymam tam backupy (które Ubuntu robi automatycznie poprzez aplikację Kopia Zapasowa) i muszę mu jakoś ograniczyć miejsce, żeby gdy już mu się to miejsce skończy, usuwał stare pliki ;)
Its really helpful for me, awaiting for more new post. Keep Blogging!Avg antivirus support,Avg antivirus tech support
OdpowiedzUsuńmocno inspirujący wpis!
OdpowiedzUsuńrzetelne treści i fajne wpisy
OdpowiedzUsuń