<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>administration &amp;mdash; arek o sofcie</title>
    <link>https://baal.ar76.eu/arek/tag:administration</link>
    <description>Różności na temat tworzenia oprogramowania</description>
    <pubDate>Mon, 04 May 2026 18:05:29 +0200</pubDate>
    <item>
      <title>Linux disk quota</title>
      <link>https://baal.ar76.eu/arek/linux-disk-quota</link>
      <description>&lt;![CDATA[Z jakiś powodów zapragnąłem ustawić w Linuksie limity na użycie dysku. Pominę opis poszukiwania informacji w Internecie, ale w skrócie - z nieznanych mi powodów w zdecydowanej przewadze opisywane są jakieś starocie. W artykule pokrótce jak to wygląda w aktualnych wersjach jądra. !--more--&#xA;&#xA;Kiedyś&#xA;&#xA;Kiedyś było tak: poza filesystemem XFS, informacje o użyciu dysku i inodach był zapisywany w aplikach quota.user i quota.group. Potem coś poprawiono i nowe pliki nazywają się aquota.user i aquota.group.&#xA;&#xA;Żeby limitowanie działało, dysk należy zamontować z opcjami usrquota i grpquota. Kolejna nowość wprowadziła usprawnienie dotyczące sposobu rejestrowania aktualnego użycia dysku dla użytkownika. Opcje montowania zmieniły się na usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1 i dzięki temu pliki ze zużyciem dysku aktualizowane razem ze zmianami w plikach i przechodzą przez journal.&#xA;&#xA;Potem trzeba uruchomić&#xA;sudo quotacheck -cugv /mnt/   &#xA;i po&#xA;sudo quotaon -ug /mnt&#xA;możliwość limitowania dysku jest włączona.&#xA;&#xA;Ale quotacheck wypisało mi komunikat:&#xA;quotacheck: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.&#xA;I tak dowiedziałem się, że ext4 wspiera pliki limitów jako ukryte inody, tylko trzeba tę opcję włączyć.&#xA;&#xA;A tak to wygląda teraz&#xA;&#xA;Zatem, jak to wygląda w na nowym jądrze. &#xA;&#xA;Założenia: mam dysk... np. /dev/loop30, montuję go na /mnt.&#xA;&#xA;Kernel został zbudowany z opcjami&#xA;CONFIGQUOTA=y&#xA;CONFIGQUOTATREE=m&#xA;&#xA;Mamy narzędzia do obsługi limitów (np. apt install quota na Ubuntu)&#xA;&#xA;Mamy niezbędne moduły kernela (sudo modprobe quotav2 działa).&#xA;&#xA;Procedura jest następująca:&#xA;&#xA;Tworzę filesystem (ext4):&#xA;sudo mkfs.ext4 /dev/loop30&#xA;Włączam wewnętrzną obsługę limitów (to jest ta najnowsza nowość)&#xA;&#xA;sudo tune2fs -O quota /dev/loop30&#xA;Feature quota oznacza: &#34;Enable internal file system quota inodes&#34;&#xA;&#xA;A teraz jeszcze jedno: można mieć nie tylko limity per user i per grupa ale również limit per projekt. Nie mam pojęcia jak działa to ostatnie, ale można je wszystkie niezależnie włączać i wyłączać (patrz man tune2fs):&#xA;sudo tune2fs -Q usrquota,grpquota,prjquota /dev/loop30&#xA;Można sprawdzić, że limity zostały włączone wywołując:&#xA;sudo tune2fs -l /dev/loop30 | grep &#34;Filesystem features&#34;&#xA;&#xA;Filesystem features:      hasjournal extattr resizeinode dirindex filetype extent 64bit flexbg sparsesuper largefile hugefile dirnlink extraisize quota metadatacsum project&#xA;Obecność słowa &#34;quota&#34; oznacza, że feature jest włączony.&#xA;&#xA;Kolejny krok: montowanie filesystemu:&#xA;sudo mount -o usrquota,grpquota,prjquota /dev/loop30 /mnt&#xA;Pewnie dobrze jest sobie ten mountpoint wpisać do /etc/fstab, ale chodzi po prostu o to, żeby włączyć dla tego dysku odpowiednie zliczanie limitów.&#xA;&#xA;Żadnych plików limitów w /mnt nie widać, ale możemy uruchomić&#xA;sudo repquota /mnt&#xA;I zobaczymy zużycie  tego dysku przez użytkownika root (bo tylko jego obiekty są na razie w tym katalogu).&#xA;Przy okazji, repquota z parametrem -g pokaże limity dla grup, a -P limity dla projektów (jak ustalę jak zrobić taki projekt, to na pewno to opiszę).&#xA;&#xA;Limity można ustawić poleceniami setquota i edquota (ale to już standard - każdy manual opisuje jak to zrobić).&#xA;&#xA;Wygląda na to, że jeśli użyliśmy podczas montowania opcji usrquota, grpquta etc, to limity są od razu egzekwowane (bez konieczności włączania ich za pomocą quotaon), co można sprawdzić używając opcji -p:&#xA;sudo quotaon -p /mnt&#xA;Limity grupy na /mnt (/dev/loop30) są włączone&#xA;Limity użytkownika na /mnt (/dev/loop30) są włączone&#xA;Limity project na /mnt (/dev/loop30) są włączone&#xA;I działa.&#xA;&#xA;Linki:&#xA;&#xA;(trochę stare już) https://wiki.archlinux.org/title/diskquota&#xA;(trochę nowsze) https://www.digitalocean.com/community/tutorials/how-to-set-filesystem-quotas-on-ubuntu-20-04&#xA;(magiczny feature, o którym tak niewiele) https://ext4.wiki.kernel.org/index.php/Quota&#xA;&#xA;#linux #quota #administration&#xA;&#xA;@arkr]]&gt;</description>
      <content:encoded><![CDATA[<p>Z jakiś powodów zapragnąłem ustawić w Linuksie limity na użycie dysku. Pominę opis poszukiwania informacji w Internecie, ale w skrócie – z nieznanych mi powodów w zdecydowanej przewadze opisywane są jakieś starocie. W artykule pokrótce jak to wygląda w aktualnych wersjach jądra. </p>

<h2 id="kiedyś">Kiedyś</h2>

<p>Kiedyś było tak: poza filesystemem XFS, informacje o użyciu dysku i inodach był zapisywany w aplikach <code>quota.user</code> i <code>quota.group</code>. Potem coś poprawiono i nowe pliki nazywają się <code>aquota.user</code> i <code>aquota.group</code>.</p>

<p>Żeby limitowanie działało, dysk należy zamontować z opcjami <code>usrquota</code> i <code>grpquota</code>. Kolejna nowość wprowadziła usprawnienie dotyczące sposobu rejestrowania aktualnego użycia dysku dla użytkownika. Opcje montowania zmieniły się na <code>usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1</code> i dzięki temu pliki ze zużyciem dysku aktualizowane razem ze zmianami w plikach i przechodzą przez journal.</p>

<p>Potem trzeba uruchomić</p>

<pre><code class="language-bash">sudo quotacheck -cugv /mnt/   
</code></pre>

<p>i po</p>

<pre><code class="language-bash">sudo quotaon -ug /mnt
</code></pre>

<p>możliwość limitowania dysku jest włączona.</p>

<p>Ale <code>quotacheck</code> wypisało mi komunikat:</p>

<pre><code>quotacheck: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.
</code></pre>

<p>I tak dowiedziałem się, że ext4 wspiera pliki limitów jako ukryte inody, tylko trzeba tę opcję włączyć.</p>

<h2 id="a-tak-to-wygląda-teraz">A tak to wygląda teraz</h2>

<p>Zatem, jak to wygląda w na nowym jądrze.</p>

<p>Założenia: mam dysk... np. <code>/dev/loop30</code>, montuję go na <code>/mnt</code>.</p>

<p>Kernel został zbudowany z opcjami
* CONFIG<em>QUOTA=y
* CONFIG</em>QUOTA_TREE=m</p>

<p>Mamy narzędzia do obsługi limitów (np. <code>apt install quota</code> na Ubuntu)</p>

<p>Mamy niezbędne moduły kernela (<code>sudo modprobe quota_v2</code> działa).</p>

<p>Procedura jest następująca:</p>

<p>Tworzę filesystem (ext4):</p>

<pre><code class="language-bash">sudo mkfs.ext4 /dev/loop30
</code></pre>

<p>Włączam wewnętrzną obsługę limitów (to jest ta najnowsza nowość)</p>

<pre><code class="language-bash">sudo tune2fs -O quota /dev/loop30
</code></pre>

<p>Feature <code>quota</code> oznacza: “Enable internal file system quota inodes”</p>

<p>A teraz jeszcze jedno: można mieć nie tylko limity <em>per user</em> i <em>per grupa</em> ale również limit <em>per projekt</em>. Nie mam pojęcia jak działa to ostatnie, ale można je wszystkie niezależnie włączać i wyłączać (patrz <code>man tune2fs</code>):</p>

<pre><code class="language-bash">sudo tune2fs -Q usrquota,grpquota,prjquota /dev/loop30
</code></pre>

<p>Można sprawdzić, że limity zostały włączone wywołując:</p>

<pre><code class="language-bash">sudo tune2fs -l /dev/loop30 | grep &#34;Filesystem features&#34;

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize quota metadata_csum project
</code></pre>

<p>Obecność słowa “quota” oznacza, że feature jest włączony.</p>

<p>Kolejny krok: montowanie filesystemu:</p>

<pre><code class="language-bash">sudo mount -o usrquota,grpquota,prjquota /dev/loop30 /mnt
</code></pre>

<p>Pewnie dobrze jest sobie ten mountpoint wpisać do /etc/fstab, ale chodzi po prostu o to, żeby włączyć dla tego dysku odpowiednie zliczanie limitów.</p>

<p>Żadnych plików limitów w /mnt nie widać, ale możemy uruchomić</p>

<pre><code class="language-bash">sudo repquota /mnt
</code></pre>

<p>I zobaczymy zużycie  tego dysku przez użytkownika root (bo tylko jego obiekty są na razie w tym katalogu).
Przy okazji, <code>repquota</code> z parametrem <code>-g</code> pokaże limity dla grup, a <code>-P</code> limity dla projektów (jak ustalę jak zrobić taki projekt, to na pewno to opiszę).</p>

<p>Limity można ustawić poleceniami <code>setquota</code> i <code>edquota</code> (ale to już standard – każdy manual opisuje jak to zrobić).</p>

<p>Wygląda na to, że jeśli użyliśmy podczas montowania opcji usrquota, grpquta etc, to limity są od razu egzekwowane (bez konieczności włączania ich za pomocą <code>quotaon</code>), co można sprawdzić używając opcji <code>-p</code>:</p>

<pre><code class="language-bash">sudo quotaon -p /mnt
Limity grupy na /mnt (/dev/loop30) są włączone
Limity użytkownika na /mnt (/dev/loop30) są włączone
Limity project na /mnt (/dev/loop30) są włączone
</code></pre>

<p>I działa.</p>

<p>Linki:</p>
<ul><li>(trochę stare już) <a href="https://wiki.archlinux.org/title/disk_quota" rel="nofollow">https://wiki.archlinux.org/title/disk_quota</a></li>
<li>(trochę nowsze) <a href="https://www.digitalocean.com/community/tutorials/how-to-set-filesystem-quotas-on-ubuntu-20-04" rel="nofollow">https://www.digitalocean.com/community/tutorials/how-to-set-filesystem-quotas-on-ubuntu-20-04</a></li>
<li>(magiczny feature, o którym tak niewiele) <a href="https://ext4.wiki.kernel.org/index.php/Quota" rel="nofollow">https://ext4.wiki.kernel.org/index.php/Quota</a></li></ul>

<p><a href="/arek/tag:linux" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">linux</span></a> <a href="/arek/tag:quota" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">quota</span></a> <a href="/arek/tag:administration" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">administration</span></a></p>

<p><a href="https://mastodon.social/@ark_r" rel="nofollow">@ark_r</a></p>
]]></content:encoded>
      <guid>https://baal.ar76.eu/arek/linux-disk-quota</guid>
      <pubDate>Thu, 01 Dec 2022 19:37:22 +0000</pubDate>
    </item>
  </channel>
</rss>