dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_21_PSS_411
Název tématické oblasti (sady) Operační systémy
Název materiálu Diskové kvóty
Anotace Text popisuje princip diskových kvót dvojího typu: blokových a souborových kvót. Seznamuje s principem užití a následně prakticky demonstruje instalaci a aktivaci kvót na konkrétním diskové oblasti.
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup Aktivuje diskové kvóty na zvolené diskové oblasti. Nastaví kvóty uživateli/skupině. Simuluje dosažení/překročení kvóty.
Klíčová slova kvóty, fstab, volby připojení, kvótové limity
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 3.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 4.3.2014 Celková velikost

pdf icon
Diskové kvóty

Obsah

Stále více obsahu digitálního obsahu je častěji ukládáno skrze služby běžících na serverech někde v síti. Místo k ukládání dat však není neomezené a vzhledem k tomu, že služby využívá současně více uživatelů, je mnohdy žádoucí zaručit, aby se dostalo na každého. Navíc lze koncept kvót velice jednoduše zpoplatnit - připlaťte a dostanete více místa.

Pro tento tutoriál budeme potřebovat nový disk (zde /dev/sdb). Na disku vytvoříme jednu oblast se souborovým systémem ext4. Zatím oblast nebudeme mountovat..

root@wheezy:~# cfdisk /dev/sdb
root@wheezy:~# mkfs.ext4 /dev/sdb1

Podpora diskových kvót

Podpůrný balíček

Podpora diskových kvót není k dispozici v základní instalaci. Stačí však doinstalovat balíček quota.

root@wheezy:~# apt-get install quota

Volby připojení

Nyní můžeme připojit disk příkazem mount, ale navíc přidáme volby usrquota,grpquota přepínačem -o. V podstatě tím oznámíme, že chceme sledovat uživatelské a skupinové kvóty.

Princip je ten, že systém pak sleduje a eviduje zabrané místo uživatelů nebo skupin v reálném čase. Udržuje si doslova databázi těchto údajů, protože výpočet zabraného místa na vyžádání je operace trvající dlouho. Stejně tak, když dojde k porušení konzistence této databáze a bude třeba ji znova vygenerovat.

root@wheezy:~# mount -t ext4 -o usrquota,grpquota /dev/sdb1 /srv/

Pozor, toto připojení není trvalé, po restartu se zařízení znovu automaticky nepřipojí. Zde je vhodnější použít /etc/fstab.

Kvótové soubory

Následuje vytvoření kvótových souborů, kde jsou uloženy informace o tom, kolik který uživatel/skupina má obsazeno místa/souborů. V našem případě to bude rychlý proces, protože právě připojený disk je prázdný.

root@wheezy:~# quotacheck -c -u -g /srv/
root@wheezy:~# ls /srv/
aquota.group  aquota.user  lost+found

Přepínač -c zajistí nové vytvoření souborů aquota.group a aquota.user. Přepínače -u a -g se používají pro uživatelské kvóty, resp. skupinové.

Aktivace kvót

Poslední akcí je aktivace kvót příkazem quotaon.

root@wheezy:~# quotaon /srv/

Přidělení kvót

Kvóty se přidělují příkazem edquota. Přepínačem -u, resp. -g se upřesňuje nastavení pro uživatele nebo skupinu. Po spuštění příkazu se otevře editor (nano), ve kterém lze přidělovat kvóty.

root@wheezy:~# edquota -u tux
Disk quotas for user tux (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0          0          0          0        0        0

Kdybychom měli více disků připojených s podporou kvót, byly by zde uvedeny všechny.

V tabulce jsou sloupce pro nastavení limitů pro tzv. blokovou a souborovou kvótu. Ve sloupcích blocks a inodes jsou aktuální hodnoty. Tato čísla se needitují.

Do sloupce soft a hard se již vkládá požadovaná hodnota. Existuje možnost nastavení tzv. soft limitu, který je dovolen uživateli překročit. Hodnotu ve sloupci hard už překročit nelze. Pokud bude uživatel s takovou kvótou zrovna v polovině nějaké souborové operace (např. kopírování), pak tato operace jednoduše selže z důvodu nedostatku místa.

Bloková a souborová kvóta

Uživatelům lze přidělovat blokové kvóty, což je vlastně místo, které mohou uživatelé obsadit. (Vzpomínáte na blokové zařízení - pevný disk?) Hodnota je v KB. Tzn., že pro limit 10MB je třeba zadat 10240.

Druhým typem kvóty je kvóta souborová. Ta se vztahuje na počet souborů/adresářů, který může uživatel vytvořit. Možná vám připadá zbytečné tento limit nastavovat. Nicméně u souborového systému ext4 je omezen počet souborů, který lze vytvořit. A pokud by nějaký splašený uživatel začal vytvářet prázdné soubory, mohl by tak zabrat všechny i-nody, aniž by zabral jakékoli místo. Jenomže bez volných i-nodů nelze vytvářet soubory - pro nikoho.

Dosažení kvóty

Přidělme uživateli tux následující limity na počet souborů:

Disk quotas for user tux (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0          0          0          0        3        5

Vytvořme adresář /srv/test a nastavme mu nějaká právě, aby do něj mohl tux zapisovat.

root@wheezy:~# mkdir /srv/test
root@wheezy:~# chmod 777 /srv/test/

Nyní, jakou uživatel tux vytvořme několik prázdných souborů příkazem touch.

root@wheezy:~# su tux
tux@wheezy:/root$ cd /srv/test/
tux@wheezy:/srv/test$ touch pokus1
tux@wheezy:/srv/test$ touch pokus2
tux@wheezy:/srv/test$ touch pokus3
tux@wheezy:/srv/test$ touch pokus4
sdb1: warning, user file quota exceeded.
tux@wheezy:/srv/test$ touch pokus5
tux@wheezy:/srv/test$ touch pokus6
sdb1: write failed, user file limit reached.
touch: nelze se dotknout (provést příkaz „touch“) „pokus6“: Překročena disková kvóta

Přehled kvót

Příkazem repquota lze monitorovat stavy kvót u uživatelů nebo skupin.

root@wheezy:~# repquota -u /srv/
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      24       0       0              3     0     0
tux       -+       0       0       0              5     3     5  6days