Manage disk quotas (weight: 1)

Candidates should be able to manage disk quotas for users.
Set up a disk quota for a filesystem.
Edit, check and generate user quota reports.

The following is a partial list of the used files, terms and utilities

quota
edquota
repquota
quotaon

Установка режима квотирования

Существует три версии поддержки квот
vfsold (версия 1),
vfsv0 (версия 2),
xfs (для файловой системы XFS).

Устанавливаем quota в Debian

# apt-get -y install quota
# quota -V
Quota версия 4.00-pre1.
Скомпилировано с использованием:
USE_LDAP_MAIL_LOOKUP EXT2_DIRECT HOSTS_ACCESS ALT_FORMAT RPC RPC_SETQUOTA BSD_BEHAVIOUR

Устанавливаем quota в CentOS

# yum install quota

Установка режима квотирования в /etc/fstab

/dev/sdb1 /home/bezha/disk2 ext4 defaults,usrquota,grpquota 0 2

Внеся изменения в /etc/fstab и добавив квоты, необходимо перемонтировать файловые системы и, для файловых систем, отличных от XFS, создать файлы квот и разрешить проверку квотирования. Команда quotacheck проверяет квотирование на всех файловых системах и создает необходимые файлы aquota.user и aquota.group, если их не существует. Также она может восстановить поврежденные файлы квот.

Опции команды quotacheck

-a для всех файловых систем в /etc/fstab, для которых разрешено автоматическое монтирование
-u для пользовательских квот (установлено по умолчанию)
-g для групповых квот
-v для подробного вывода

Создание файлов квот

# quotacheck -augv
quotacheck: Your kernel probably supports journaled quota but you are not using it.
Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb1 [/home/bezha/disk2] done
quotacheck: Checked 2 directories and 2 files

Предупреждение о том что наше ядро поддерживает журналируемую quota и предупреждает о желательном переключении на нее.
Поправим файл /etc/fstab

/dev/sdb1 /home/bezha/disk2 ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 2

Перемонтируем файловую систему и проверяем

# mount -o remount /home/bezha/disk2
# quotacheck -augv
quotacheck: Scanning /dev/sdb1 [/home/bezha/disk2] done
quotacheck: Checked 2 directories and 2 files

Включение квотирования

# quotaon -ugva
/dev/sdb1 [/home/bezha/disk2]: group quotas turned on
/dev/sdb1 [/home/bezha/disk2]: user quotas turned on

Отключение квотирования

# quotaoff -ugv /dev/sdb1
/dev/sdb1 [/home/bezha/disk2]: group quotas turned off
/dev/sdb1 [/home/bezha/disk2]: user quotas turned off

Проверить включены квоты или нет

# quotaon -p /dev/sdb1
group quota on /home/bezha/disk2 (/dev/sdb1) is off
user quota on /home/bezha/disk2 (/dev/sdb1) is off

Установка пределов квот
Квотирование управляется либо через бинарные файлы в корне файловой системы, либо через метаданные файловой системы. Для установки квоты для отдельного пользователя используется команда edquota. Эта команда извлекает информацию о квотах для данного пользователя из различных файловых систем, для которых включено квотирование, создает временный файл и открывает редактор, позволяющий изменять квоты.

# edquota root
Disk quotas for user root (uid 0):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdb1                        13          0          0          2        0        0

edquota показывает текущее использование блоков 1К и inode для каждой файловой системы, где включено квотирование. Также существуют мягкие и жесткие пределы на использование блоков и inode. В данном примере их значения установлены в 0, что означает, что пределы квот не установлены.

Мягкие пределы – это пределы, при достижении которых пользователь получает предупреждения о превышении квоты.
Жесткие пределы – это границы, которые пользователь не может превысить.
Можно считать, что ограничения на блоки – это ограничения на объем сохраняемой информации, а ограничения на inode – это ограничения количества файлов и каталогов.

Изменение пределов квот
Установим для меня ограничения в файловой системе /dev/sdb: по объему – 10 Мбайт, по количеству – 1000 файлов. Добавляя 10% запаса на жесткие пределы

Disk quotas for user root (uid 0):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                        13      10240      11264          2     1000     1100

Установка квот по прототипу
использовать значения квот пользователя bezha в качестве прототипа для квот других пользователей

# edquota -p bezha bezha1 bezha2 bezha3

Льготный период
Пользователи могут превышать мягкие пределы квот в течение “льготного периода”, который по умолчанию составляет 7 дней. После истечения этого периода мягкие пределы становятся жесткими.
Установим период в 5 минут

# edquota -t
race period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem             Block grace period     Inode grace period
/dev/sdb1              5minutes                 7days

Проверка квот
Команда quota без указания опций выводит квоты для вызвавшего ее пользователя во всех файловых системах, где такие квоты установлены.

# quota
Disk quotas for user root (uid 0): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/sdb1      13   10240   11264               2    1000    1100        

Информация для всех файловых систем, в которых включено квотирование.

# quota -v
Disk quotas for user root (uid 0): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/sdb1      13   10240   11264               2    1000    1100   

Превышение квот

# quota
Disk quotas for user root (uid 0): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/sdb1   12013*  10240   11264   00:05       5    1000    1100        

Рядом с мягким пределом выводится звездочка, показывающая, что пользователь превысил квоту.
В столбце grace period теперь показано, сколько времени есть у пользователя, чтобы исправить положение.

Создание отчета о квотах

# repquota -a
*** Report for user quotas on device /dev/sdb1
Block grace time: 00:05; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      +-   16013   10240   11264  00:02       6  1000  1100  

Плюс означает что пользователь превысил квоту.

Просмотреть квоты для всех пользователей и групп каталога /home/bezha/disk2

# repquota -ug /home/bezha/disk2/
*** Report for user quotas on device /dev/sdb1
Block grace time: 00:05; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      +-   16013   10240   11264  00:01       6  1000  1100       


*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   16013       0       0              6     0     0       

Предупреждение пользователей
Команда warnquota используется для отправки предупреждений по электронной почте пользователям, превысившим квоты. Если квоту превысила группа, сообщения по электронной почте отправляются пользователям, указанным в /etc/quotagrpadmins

Вопросы по LPI (приблизительные)

1) You see the usrquota and grpquota options in the /etc/fstab entry for a filesystem.
What is the consequence of these entries?
A. Quota support will be available if it’s compiled into the kernel; it will be automatically
activated when you mount the filesystem.
B. Quota support will be available if it’s compiled into your kernel, but you must activate
it with the quotaon command.
C. Quota support will be disabled on the filesystem in question unless you activate it with
the quotaon command.
D. Nothing; these options are malformed and so will have no effect.
2) Which of the following commands can be used to summarize the quota information about all
filesystems?
A. repquota
B. repquota -a
C. quotacheck
D. quotacheck -a
3) Which command is used to view quota information for a specific user?
A. edquota
B. quota
C. repquota
D. quotaon
4) File systems utilizing quotas are configured in which file?
A. /etc/services
B. /etc/hosts
C. /etc/fstab
D. /etc/mtab

Ответы

1) The correct answer is B. Using quotas requires kernel support, the usrquota or grpquota 
filesystem mount option, and activation via the quotaon command (which often appears in SysV startup 
scripts). Thus, option B is correct.
Option A suggests that quotaon is not necessary.
Option C suggests that quotaon is sufficient, but neither is true. 
The usrquota and grpquota options are both valid, so option D is incorrect.
2) The correct answer is B. 
The repquota utility is used to summarize the quota information about the filesystem.
When used with the –a option, it shows this information for all filesystems. 
The quotacheck utility checks quota information about a disk and writes corrections.
3) The correct answer is B. Quotas for specific users are viewed with the quota command. 
The repquota command will provide a report of quota usage for all users. 
The edquota command is used to edit quotas, and quotaon is used to enable quotas on the system.
4) The correct answer is C.  File systems utilizing quotas are configured in the /etc/fstab file.

Читать:
Manage disk quotas
Дисковые квоты