Diskové kvóty s XFS HOWTO

Z Gentoo Linux Wiki

Přejít na: navigace, hledání


Obsah

[editovat] Úvod

Diskové kvóty jsou šikovný mechanismus, který brání nenasytným uživatelům, aby vám sežrali úplně celý disk. V Linuxu je pro ně podpora v jádře už od verze 2.2 a souborový systém XFS je umí ukládat přímo v metadatech.

[editovat] Konfigurace jádra

Podporu pro diskové kvóty je potřeba povolit v jádře. Verze 1 je pro kernel 2.2, verze 2 pro kernely 2.4 a 2.6:

File systems  --->
  [*] Quota support
     [*]   Quota format v2 support

Stejně tak musí kvóty podporovat souborvý systém. Pro XFS vyberte:

File systems  --->
   [*] XFS filesystem support
      [*]   XFS Quota support

Velká poznámka: Kvóty na XFS fungují jinak než na ext2/3 nebo reiserfs. Více informací například na LinuxSoftu a ještě lépe v manuálové stránce xfs_quota.

[editovat] Další programy

Ještě budeme potřebovat odpovídající utilitky. Všechno je v Portage:

# emerge -av quotatool

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N    ] sys-fs/quota-3.12  USE="tcpd -nls" 0 kB
[ebuild  N    ] sys-fs/quotatool-1.4.6  0 kB

Total size of downloads: 0 kB

Would you like to merge these packages? [Yes/No] y

Také bychom se bez nich obešli - xfs_quota, dokáže zařídit vše potřebné. První pokus jsem ale dělal podle dvou HowTo, kde se o rozdílech s XFS vůbec nezmiňují. Do budoucna zkusím přidat i verzi pouze pro xfs_quota.

[editovat] Připojování souborového systému

neboli soubor /etc/fstab. Ukážu příklad na /home, takže doplníme usrquota do options pro /home

/dev/md6                /home           xfs             noatime,noexec,nosuid,usrquota          0 0

Partition je na RAIDu, proto to /dev/md6.
V tuto chvíli u mě musel tak jako tak následovat reboot kvůli rekompilaci jádra, takže jsem nemusel řešit znovupřipojení disků. Aby se kvóty projevily bez rebootu, tak spusťe:

# mount -o remount  /home

[editovat] Použití kvót

[editovat] Nastavení

Nastavení kvót se podobá editaci crontabu - soubor se otevře ve vašem oblíbeném editoru a po skončení editace se převede do potřebného formátu. Takže po spuštění:

# edquota user

uvidíme něco jako

Disk quotas for user user (uid 1000):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/md/6                        16          0          0          5        0        0

Trochu vysvětlivek

  • blocks je počet použitých bloků v mém případě 1 blok = 1 kB
  • soft je limit, při který je možné překročit, ale očekává se to a uživatel na to bude upozorněn
  • hard je limit, který překročit nelze (možná nějakou extrémně silnou modlitbou k Velkému Penguinovi, ale spíš ani to ne)

a inodes je to samé, s tím, že jednotkou jsou inody. Takže nastavte třeba 10 a 12MB (soft a hard), uložte a můžeme vyzkoušet

[editovat] Testování

# su user
$ cd ~
$ dd if=/dev/zero of=./testfile bs=1000 count=9500
9500+0 records in
9500+0 records out
9500000 bytes (9.5 MB) copied, 0.032188 seconds, 295 MB/s

Všechno proběhlo v pořádku, nedostali jsme se ještě ani na soft limit. Takže zkusíme dál:

$ dd if=/dev/zero of=./testfile bs=1000 count=11000
11000+0 records in
11000+0 records out
11000000 bytes (11 MB) copied, 0.036485 seconds, 301 MB/s

Opět všechno v pořádku a opět bez varování. Takže je tu někde chybka, kterou budu muset opravit. Ale soft limit je pořád překročitelný, takže je vlastně všechno v pořádku, chybějící varování se dá přežít.
Jelikož jsem prozatím neinstaloval žádný server, kam by měli uživatelé přístup přes shell, tak stejně není kde varování zobrazovat. Důležitý je poslední pokus:

$ dd if=/dev/zero of=./testfile bs=1000 count=13000
dd: writing `./testfile': Disk quota exceeded
12256+0 records in
12255+0 records out
12255232 bytes (12 MB) copied, 0.040606 seconds, 302 MB/s

Všechno je správně, dd neproběhlo a výsledný soubor má velikost zhruba 12MB. Ještě se na to podíváme příkazem **quota -v**:

$ quota -v
Disk quotas for user user (uid 1000):
    Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
    /dev/md/6   11988*  10000   12000   6days       7       0       0

[editovat] Kvóta démon

Kvóta démon aktualizuje informace o využitých kvótach. Na XFS je opět hezké, že fungují i bez něho, ani není potřeba žádný quotacheck (který má v manuálové stránce napsány děsivé věci, jak je nebezpečné ho spouštět na "živých" souborových sytémech atd.). Takže ho můžeme s klidem ignorovat.

[editovat] Závěr

Kvóty na XFS fungují skvěle. Je možné, že na ostatních souborových systémech taky, ale to jsem nezkoušel a zatím to vypadá, že k tomu nebudu mít ani důvod (možná až dorazí Reiser4, což asi jen tak nebude). Další unikátní funkcí XFS jsou tree quotas - kvóty pro adresářový strom, založené na tom, jestli se soubor nachází v určitém umístění na disku. Jsou výborné, pokud například nahráváte soubory přes PHP a vlastníkem je potom apache - tyto soubory se potom nezapočtou do normální uživatelské kvóty. Jejich popis zkusím někdy doplnit.

[editovat] Odkazy