Quota innerhalb von OpenVZ - Debian Squeeze (second-level quota)

Es kann durchaus sein, dass dem ein oder anderen eine Quota für das virtuelle System nicht ausreicht, sondern dass innerhalb dieses Systems nochmals eine Begrenzung für die einzelnen Benutzer vorhanden sein soll.

Für alle, die noch nicht wissen, was eine "Quota" ist: Disk Quota – Wikipedia

Seit Version 4.00-pre1 des Paketes quota liest dieses die Daten zur Quota-Verwaltung nicht mehr aus der Datei /etc/mtab aus, sondern direkt aus der vom Kernel generierten /proc/mounts. Leider unterstützt OpenVZ das bei einem Debian Squeeze noch nicht, zumindest sind Quota-Informationen hier nicht zu finden. Dieser Fehler ist auch schon seit 15. Dezember 2010 gemeldet und damit bekannt:
Bug 1721 – vzquota doesnt work wih quota-tools 4.00-pre1 inside ct
Leider hat sich bis heute nichts getan, so dass man hier selbst Hand anlegen und quota selbst neu kompilieren muss. Hierbei kann man dann den Pfad zu /etc/mtab bei der Konfiguration des Paketes angeben.

Das geht folgendermaßen:
  1. Zuerst einmal wird das Paket quota benötigt, welches hier zu finden ist:
    Linux DiskQuota | Free software downloads at SourceForge.net
    (ich selbst nutzte v4.01)
  2. Die *.tar.gz dann entpacken:

    Quellcode

    1. tar xf quota-4.01.tar.gz
    In das entpackte Verzeichnis wechseln:

    Quellcode

    1. cd quota-tools/
  3. Die Konfiguration starten. Hierbei ist nun der Parameter --enable-proc-mounts=/etc/mtab sehr wichtig, damit das Programm die Daten aus dieser Datei ausliest und nicht mehr aus /proc/mounts:

    Quellcode

    1. ./configure --enable-proc-mounts=/etc/mtab
    Die Ausgabe sollte etwa folgendermaßen aussehen: [quote]checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for ANSI C header files... yes
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether compiler supports PIE... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking ext2fs/ext2fs.h usability... no
    checking ext2fs/ext2fs.h presence... no
    checking for ext2fs/ext2fs.h... no
    checking for com_err in -lcom_err... no
    checking for ext2fs_initialize in -lext2fs... no
    configure: WARNING: Ext2 direct support won't be compiled. Libraries not found.
    checking for library containing gethostbyname... none required
    checking for host_access in -lwrap... no
    checking for an ANSI C-conforming const... yes
    checking for inline... inline
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating config.h[/quote]Dann geht es ans Erstellen des Paketes:

    Quellcode

    1. make
    Hier erscheint nun eine Zeichenkette, die einem normalen Benutzer nicht viel verrät. Sofern dort aber kein Fehler zu finden ist (anhand des Wortes "error"), sollte alles in Ordnung sein.
  4. Nun muss das Paket nur noch installiert werden:

    Quellcode

    1. make install
    Die Ausgabe sollte etwa folgendermaßen aussehen:[quote]for n in po/cs.po po/de.po po/fr.po po/pl.po; do \
    msgfmt -o po/`basename $n .po`.mo $n; \
    done
    mkdir -p /usr/local/share/locale
    for n in po/cs.mo po/de.mo po/fr.mo po/pl.mo; do \
    l=`basename $n .mo`; \
    /usr/bin/install -c -m 755 -d /usr/local/share/locale/$l; \
    /usr/bin/install -c -m 755 -d /usr/local/share/locale/$l/LC_MESSAGES; \
    /usr/bin/install -c -m 644 $n /usr/local/share/locale/$l/LC_MESSAGES/quota.mo; \
    done
    mkdir -p /usr/local/sbin
    mkdir -p /usr/local/bin
    mkdir -p /usr/local/sbin
    /usr/bin/install -c -s -m 555 \
    quotacheck quotaon /usr/local/sbin
    ln -sf quotaon /usr/local/sbin/quotaoff
    /usr/bin/install -c -s -m 555 \
    edquota repquota warnquota quotastats setquota quot xqmstats \
    convertquota /usr/local/sbin
    mkdir -p /usr/local/etc
    /usr/bin/install -c -m 644 warnquota.conf /usr/local/etc
    /usr/bin/install -c -m 644 quotatab /usr/local/etc
    /usr/bin/install -c -m 644 quotagrpadmins /usr/local/etc
    mkdir -p /usr/local/share/man/man1
    mkdir -p /usr/local/share/man/man2
    mkdir -p /usr/local/share/man/man3
    mkdir -p /usr/local/share/man/man8
    /usr/bin/install -c -m 755 -d /usr/local/include/rpcsvc
    /usr/bin/install -c -m 644 rquota.h rquota.x /usr/local/include/rpcsvc
    /usr/bin/install -c -s -m 555 quota quotasync /usr/local/bin
    /usr/bin/install -c -s -m 555 rpc.rquotad /usr/local/sbin
    /usr/bin/install -c -m 444 *.1 /usr/local/share/man/man1
    /usr/bin/install -c -m 444 *.2 /usr/local/share/man/man2
    /usr/bin/install: cannot stat `*.2': No such file or directory
    make: [install] Error 1 (ignored)
    /usr/bin/install -c -m 444 *.3 /usr/local/share/man/man3
    /usr/bin/install -c -m 444 *.8 /usr/local/share/man/man8[/quote]Den Fehler kann man getrost ignorieren. ;)
  5. Nun sollte quota fehlerfrei installiert worden sein. Mit folgendem Befehl lässt sich das testen:

    Quellcode

    1. repquota -avugs
    Die Ausgabe sollte etwa folgendermaßen aussehen:

    Brainfuck-Quellcode

    1. *** Report for user quotas on device /dev/simfs
    2. Block grace time: 00:00; Inode grace time: 00:00
    3. Space limits File limits
    4. User used soft hard grace used soft hard grace
    5. ----------------------------------------------------------------------
    6. root -- 1144M 0K 0K 36859 0 0
    7. man -- 1328K 0K 0K 109 0 0
    8. www-data -- 2248K 0K 0K 215 0 0
    9. list -- 168K 0K 0K 44 0 0
    10. libuuid -- 4K 0K 0K 1 0 0
    11. ntp -- 8K 0K 0K 2 0 0
    12. mysql -- 409M 0K 0K 721 0 0
    13. postfix -- 80K 0K 0K 50 0 0
    14. clamav -- 78736K 0K 0K 19 0 0
    15. amavis -- 1016K 0K 0K 22 0 0
    16. bind -- 12K 0K 0K 3 0 0
    17. vmail -- 188K 0K 0K 46 0 0
    18. getmail -- 12K 0K 0K 3 0 0
    19. ispapps -- 4K 0K 0K 2 0 0
    20. ispconfig -- 30112K 0K 0K 6563 0 0
    21. Matze -- 1872K 0K 0K 111 0 0
    22. web1 -- 20424K 0K 0K 2597 0 0
    23. #501 -- 22412K 0K 0K 2883 0 0
    24. Statistics:
    25. Total blocks: 131596
    26. Data blocks: 6
    27. Entries: 18
    28. Used average: 3.000000
    29. *** Report for group quotas on device /dev/simfs
    30. Block grace time: 00:00; Inode grace time: 00:00
    31. Space limits File limits
    32. Group used soft hard grace used soft hard grace
    33. ----------------------------------------------------------------------
    34. root -- 1098M 0K 0K 34619 0 0
    35. adm -- 14212K 0K 0K 138 0 0
    36. tty -- 24K 0K 0K 6 0 0
    37. disk -- 0K 0K 0K 25 0 0
    38. mail -- 88K 0K 0K 5 0 0
    39. kmem -- 0K 0K 0K 3 0 0
    40. www-data -- 672K 0K 0K 170 0 0
    41. list -- 34816K 0K 0K 2174 0 0
    42. shadow -- 124K 0K 0K 7 0 0
    43. utmp -- 68K 0K 0K 6 0 0
    44. staff -- 1380K 0K 0K 81 0 0
    45. users -- 1812K 0K 0K 104 0 0
    46. libuuid -- 4K 0K 0K 1 0 0
    47. crontab -- 48K 0K 0K 4 0 0
    48. ssh -- 108K 0K 0K 1 0 0
    49. ntp -- 8K 0K 0K 2 0 0
    50. mysql -- 409M 0K 0K 701 0 0
    51. dovecot -- 12K 0K 0K 4 0 0
    52. ssl-cert -- 8K 0K 0K 2 0 0
    53. postfix -- 68K 0K 0K 42 0 0
    54. postdrop -- 44K 0K 0K 9 0 0
    55. clamav -- 78340K 0K 0K 9 0 0
    56. amavis -- 1016K 0K 0K 22 0 0
    57. bind -- 48K 0K 0K 12 0 0
    58. vmail -- 188K 0K 0K 45 0 0
    59. ispapps -- 4K 0K 0K 2 0 0
    60. ispconfig -- 30132K 0K 0K 6568 0 0
    61. Matze -- 60K 0K 0K 7 0 0
    62. client1 -- 20472K 0K 0K 2598 0 0
    63. #80 -- 22412K 0K 0K 2883 0 0
    64. Statistics:
    65. Total blocks: 131594
    66. Data blocks: 8
    67. Entries: 30
    68. Used average: 3.750000
    Alles anzeigen
    Natürlich müssen nicht alle Benutzer hier übereinstimmen. ;)
Sollte es noch Probleme bei dem Kompilieren der Dateien oder allgemein zu diesem Thema geben, helfe ich über die Kommentare oder über das Forum sehr gerne weiter.
Über den Autor
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

558 mal gelesen

Kommentare 0

Es wurden keine Einträge gefunden.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen