Przejdź do głównej zawartości

QUOTA - Zarządzanie systemem plików i limitami przestrzeni dyskowej w Linux

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 : 

# rpm -qa | grep quota
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: 


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

Zamykamy plik zapisując zmiany.

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

Komentarze

  1. Dzięki. Przyda się.
    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 ;)

    OdpowiedzUsuń
  2. Its really helpful for me, awaiting for more new post. Keep Blogging!Avg antivirus support,Avg antivirus tech support

    OdpowiedzUsuń

Prześlij komentarz

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości