LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Provozujeme linuxový server (6) - rozdělení disku, kvóty

Rozdělení disku na víc oddílů je na serveru téměř nezbytné – například usnadňuje práci a zlepšuje spolehlivost běžících služeb. Na závěr dnešního článku se podíváme také na praktické nastavení kvót.

17.5.2005 06:00 | Ondřej Čečák | Články autora | přečteno 25843×

You can tune a filesystem, but you can't tune a fish.
  -- man tunefs(8), sekce BUGS

Úvodem – vhodné rozdělení disku může být velmi prospěšné, ale přesto existují situace, kdy je skoro zbytečné. U jednoduchých embedded zařízení, routeru nebo firewallu to může být spíše komplikující.

Proč a jak dělit

Způsobů, jak rozdělit disk, je mnoho. Jako nejrelevantnější způsob dělení se zdá rozdělit diskový prostor na

  • (read-only) systémové složky (vlastní programy a jejich konfigurační soubory, které může měnit pouze správce při (de)instalaci nebo změnách v konfiguraci)
  • uživatelská data (/home, /srv – sdílená data, data pro webserver, ftp server a podobně)
  • prostor, kam zapisují nejrůznější démoni svá runtime data (typicky adresář /var – logy, tisková a emailová fronta, zámky a různé cache, ...)

Toto rozdělení se vyplatí z mnoha důvodů. Jedním z nich je snadná administrace – například můžete jednoduše přeinstalovat systém, aniž byste se nějak dotkli uživatelských dat v /home. Dále si můžete zjednodušit proces zálohování – oddělené svazky pak lze snadno zálohovat různými způsoby. V neposlední řadě tak také zvýšíte bezpečnost a stabilitu; na zápis do oddílu / (root) nebude mít nikdo kromě superuživatele právo a současně to bude jediný svazek, který bude namountovaný bez voleb nosuid a nodev. Stabilitě systému pomůže vhodné oddělení lepší kontrolou a jistou ochranou před zaplněním svazku (uživatelé tak nebudou moci omylem způsobit pád mnoha démonů, kteří potřebují určitý volný prostor pro zápis runtime dat). Rozdělení prostoru je také vhodnější pro vytváření kvót.

V čem může být problém

Problém může nastat v případě, kdy špatně odhadnete velikost; pak bude někde volné místo chybět a jinde přebývat. I tato situace se dá řešit – předejít tomu můžete např. umístěním svazků na LVM. Pro začátek nastavíte oddílům malou velikost (a necháte si tak dostatečnou část disku nevyužitou) a pak postupně zvětšujete prostor dle potřeby. Tento postup je lepší než zmenšování; i když ho filesystém podporuje, tak je přece jenom více riskantní. Mimochodem, např. XFS a EXT3 mohou být zvětšovány přímo za chodu.

Jak tedy konkrétně dělit

Začněme od rootu (/). Na něm by nemělo být nic, co se za normálního chodu mění, uživatelé by tam neměli mít možnost zápisu. Všechny svazky kromě / by se měly mountovat s volbami nosuid (znefunkční spouštění programů pod jiným uživatelem nebo skupinou než je uživatel, který program spouští) a nodev (na filesystému nebudou interpretována bloková nebo znaková zařízení). Pokud si nebudete jistí, jestli nejsou suid programy na jiných svazcích než na /, můžete použít příkaz find /home -type f -perm -4000, který prohledá adresář /home a vypíše všechny programy s příznakem SUID.

Určité místo by mělo být vyhrazeno pro swap. Ten se dá v Linuxu snadno přidávat a ubírat za chodu a může být případně pouze v souboru na nějakém existujícím filesystému. Swap může být umístěn na LVM; umisťovat byste ho ale neměli na softwarový RAID (kvůli možnosti deadlocku, který může nastat v případě, kdy bude systému docházet volná paměť).

Svazek /tmp by měl být už z principu oddělen, právo k zápisu do tohoto adresáře má obvykle každý a přesto je poměrně důležitý (pro běh různých služeb apod.) – je rozumné, aby na něm byly nastaveny kvóty nebo alespoň rezervované místo pro roota.

Adresáře s daty (/home, /srv) a podobně je vhodné umístit na jeden oddíl. Pro vlastní realizaci adresářů můžete použít symlinků a nebo mount s parametrem --bind, který dokáže určitý adresář připojit na jiném místě. Jak už bylo zmíněno výše, tento postup se vyplatí kvůli snadnějšímu zálohování nebo zásahům do systému.

Zvláštní oddíl by měl mít také adresář /var, který je trochu problémový – je životně důležitý pro mnoho démonů a uchovávají se v něm systémové logy. Ve /var je několik adresářů, kam má právo zápisu kdokoli (např. /var/lock) a proto by zde měli mít ti, kteří ve /var nemají moc co dělat, nastavenou nějakou kvótu. Přes všechna opatření ale musíte počítat s tím, že pokud bude uživatel chtít, může tento svazek snadno zaplnil (např. hromadou nedoručitelných emailů, které se budou hromadit ve frontě MTA nebo přinucením logování nějakého démona).

Pro lokální zálohování je dobré vytvořit oddíl /backup (ať už dostupný uživatelům pouze pro čtení, nebo neveřejný). Jeho oddělení má smysl už proto, že jeho obsah nebudete zálohovat. V případě, že se rozhodnete zálohy zveřejnit, pořádně si tento krok promyslete, aby jste předešli situaci, kdy se mohou nepovolaní snadno dostat k cizím datům (proto je lepší archivy se zazálohovanými daty raději schovat, popř. ještě zašifrovat).

Užitečné bývá také vytvoření adresáře, který je dostatečně velký a dostupný všem (podobně jako /tmp), ovšem bez rizik plynoucích z jeho možného přeplnění.

Diskové kvóty

Úvodem – v Linuxu (a ostatně ve všech běžných unix-like systémech) je možné definovat kvóty dvěma způsoby a to sice per user/group a nebo per filesystem. V prvním případě můžete nastavovat pravidla pro uživatele nebo skupiny v rámci systému, v druhém pro celé souborové systémy.

Uživatelé můžou omylem a nebo svým nevhodných chováním snadno zaplnit přidělený prostor, což může komplikovat práci dalším uživatelům a tak dále. Pomocí kvót můžete definovat uživateli nebo skupině maximální možný limit diskového prostoru, který svými daty může zabrat. Pro možnost práce s kvótami potřebujete podporu filesystému a userspace nástroje (typicky balíček quota).

Nastavení kvót (ext2, ext3, ReiserFS)

Před vlastním zavedením kvót bude ještě potřeba udělat pár úprav. Tou první je dopsání volby usrquota do /etc/fstab. Část fstabu by pak mohla vypadat například takto:


    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>  <type>  <options>             <dump>  <pass>

    # static
    /dev/hda2       /               ext3    defaults    	 0       0
    /dev/hda3       none            swap    sw			 0       0
    /dev/hda4       /home           ext3    defaults,usrquota    0       0
  

Poznámka: pokud chcete používat kvóty per group, doplňte či nahraďte usrquota o grpquota.

Pokud na to nemáte distribuční skripty, bude nutné uvést kvótování do provozu ručně pomocí příkazu quotacheck -avug; nejspíš budete upozorněni, že žádný svazek není namountován s volbou usrquota. Pokud jste do /etc/fstab tuto volbu připsali, nezbývá než s touto volbou filesystém připojit, v našem příkladu pomocí příkazu mount /home -o remount. Výše uvedený příkaz můžete zkusit znovu, odpoví vám, že filesystém není připojen pouze pro čtení – buďto ho přemountujte a nebo použijte parametr -m (během testování by se na testovaný svazek nemělo zapisovat). Po dokončení můžete kvótování aktivovat příkazem quotaon -avug.

Tak, nyní zbývá už jenom omezení nastavit. S tím souvisí několik pojmů:

Hard limit je maximální možné obsazení diskového prostoru; nad tuto hranici si uživatel už nic neuloží. Soft limit je hranice nižší než u hard limitu, lze ji překročit, nicméně uživatel bude varován a poběží mu grace period, časový limit, po kterém už nebude moci ukládat přes soft limit. Kvótu lze nastavit na počet bloků (block) nebo inodů (inodes).

Známe-li už potřebné pojmy, můžeme se pustit do vlastní konfigurace:

linuxovy_server# edquota -F vfsv0 -f /home -t

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/hda4                                             7days	                7days

linuxovy_server# edquota -F vfsv0 -f /home -u uzivatel
      
Disk quotas for user uzivatel (uid 501):
   Filesystem                            blocks   soft    hard     inodes   soft     hard
   /dev/hda4                             251664      0	     0      11308      0        0

Pojďme si to postupně vysvětlit (modře obarvený text označuje zadané příkazy). Nejprve jsme pomocí programu edquota spustili editor nastavení, kterým díky parametru -t na konci nastavíme grace period. Důležité je, že tento "časový limit" je možné nastavit pouze pro určitý oddíl a ne pro jednotlivé uživatele/skupiny. Po zadání příkazu se standardně spustí program vi, v případě, že byste chtěli použít něco jiného, nastavte proměnnou EDITOR (v BASHi např. export EDITOR=pico). V textovém editoru pak pouze nastavte místo nul soft/hard limit pro bloky nebo inody (aktuální zabraný počet už máte pro představu vyplněný).

Druhý zadaný příkaz už nastavuje kvótu uživateli uzivatel. Ještě dodám, že parametr -F slouží pro určení verze kvóty 2 (s jiným typem formátu by to nefungovalo), -f určuje svazek.

Pokud budete chtít nastavit stejné limity i dalším uživatelům, můžete snadno použít parametr -p, který nastavení zkopíruje, např.: edquota -p uzivatel uzivatel2 uzivatel3 uzivatel4 uzivatel5.

Po našem úspěšném nastavení kvót se uživatel může podívat, jak na tom s místem na disku je:

uzivatel@linuxovy_server:~$ quota -v

Disk quotas for user uzivatel (uid 501):
  Filesystem                  blocks   quota   limit   grace   files   quota   limit    
  /dev/hda4                   251664* 250000  500000   7days   11308       0       0

Jak je asi zřejmé, uživatel uzivatel překročil soft limit v blocích a má 7 dní na to, aby to napravil.

Nastavení kvót v XFS

XFS má oproti představeným souborovým systémům výhodu – při jeho návrhu se s kvótami už počítalo, takže jsou informace o nich přímou součástí metadat a nejsou potřeba speciální soubory (a)quota.user a případně (a)qouta.group jako v předchozím případě. Také je pěkné, že obslužné programy jako například xfsdump a xfsrestore kvóty dokáží také zálohovat.

Před tím, než si začnete s kvótami na XFS hrát, musíte zapnout jejich podporu. O to by se měly starat skripty při spouštění systému, spustit by měly příkaz quotaon -a.

Stejně jako v předchozím případě je nutné do /etc/fstab připsat k volbám mountovaného souborového systému usrquota popřípadě grpquota.

Pomocí příkazu edquota opět můžete snadno definovat omezení:

linuxovy_server# edquota -f /srv -u uzivatel

Disk quotas for user uzivatel (uid 501):
  Filesystem                               blocks   soft     hard    inodes  soft    hard
  /dev/scsi/host0/bus0/target1/lun0/part1       0  70000    80000         0  1500    2000

Stav kvót můžete otestovat jako superuživatel nebo i jako uživatel:

linuxovy_server# repquota /srv

*** Report for user quotas on device /dev/scsi/host0/bus0/target1/lun0/part1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used	soft  hard  grace
----------------------------------------------------------------------
root      --   25492       0       0              4	0     0
uzivatel  --   24000   60000   80000              1	1500  2000	

Poznámka: v případě, že chcete nastavit kvóty na kořenovém svazku, musíte postupovat trošku odlišně – nejprve je nutné zapnout kvótování pomocí quotaon a vlastní nastavení budete moci provést až po rebootu.

Mimochodem, vyplatí se spouštět periodicky nějaký skript, který otestuje stav kvót a v případě překročení pošle administrátorovi třeba email. Použít k tomu můžete třeba program warnquota.

Závěr

Vhodné rozdělení svazku a případně nastavené kvóty jsou rozhodně přínosem, a to jak pro vás, tak i pro uživatele.

Používáte také dělení disků na svých serverech? Dělíte je trochu jinak, máte na dělení jiný názor? Podělte se o své zkušenosti v diskuzi pod článkem.

Verze pro tisk

pridej.cz

 

DISKUZE

Quoty na korenovem svazku - nesouhlas 17.5.2005 09:26 o.k.
L Re: Quoty na korenovem svazku - nesouhlas 17.5.2005 09:30 o.k.
  L Re: Quoty na korenovem svazku - nesouhlas 18.5.2005 00:05 Jan Houštěk
generovani souboru s qoutou 18.5.2005 08:20 Zdenek Stepanek
  L Re: generovani souboru s qoutou 18.5.2005 09:15 Ondřej Čečák




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

1.8.2017 7:32 / Cassidy
structural consultants

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

26.7.2017 21:12 / Jaromir Obr
Podminka

15.6.2017 9:34 / Ondřej Havlas
php,

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze