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 30299×
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
fstab u 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
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|