Диск квот

Тема дорожной карты · Linux & Unix Fundamentals

Дисковые квоты представляют собой важный инструмент управления ресурсами в операционных системах Linux и Unix. Они ограничивают объем блоков и количество файлов (inode), которые пользователь или группа могут использовать в определенной файловой системе. Это позволяет предотвратить случайное или намеренное исчерпание дискового пространства и обеспечивает более равномерное распределение ресурсов между пользователями.

Дисковые квоты активируются путем добавления опций usrquota и grpquota в файл /etc/fstab для пользовательских и групповых квот соответственно. Для файловой системы XFS используется опция prjquota. После этого необходимо перезапустить монтирование с помощью команд mount -o remount, quotacheck -cugm и quotaon -v. Управление квотами осуществляется с помощью команд edquota и setquota, а просмотр квот выполняется с помощью команд quota -u <user> и repquota -a.

Каждая квота имеет три основных параметра: soft, hard и grace period. Soft лимит представляет собой максимально допустимое количество блоков или inode для пользователя или группы. Hard лимит определяет жесткое ограничение, которое не может быть превышено. Grace period представляет собой временной интервал, в течение которого пользователь или группа могут превышать soft лимит, прежде чем будет применено жесткое ограничение.

Дисковые квоты привязаны к конкретной файловой системе и не переходят через bind-mount'ы. Это означает, что если файловая система монтируется несколько раз, квоты будут действовать только для исходной точки монтирования.

Как это работает

Дисковые квоты имеют несколько уровней: физические диски, разделы (с использованием команд fdisk, parted, gdisk), опционально LVM (Physical Volume, Volume Group, Logical Volume) или RAID (с использованием команд mdadm), файловые системы (с использованием команд mkfs.ext4, mkfs.xfs) и монтирование (с использованием файла /etc/fstab для постоянного монтирования). Команда df -h позволяет определить свободное место на диске, в то время как команда du -sh * помогает определить, какие файлы или директории занимают наибольшее количество места. Команды lsblk и blkid позволяют просмотреть дерево блочных устройств и UUID соответственно.

SSD-диски выигрывают от использования опции discard или еженедельного выполнения команды fstrim, что позволяет оптимизировать производительность и срок службы диска. Команды iostat и iotop помогают определить боттлнеки ввода-вывода.

Когда применять

LVM (Logical Volume Manager) обычно используется на серверах, где может потребоваться увеличение объема хранилища или создание снапшотов. Однако, его использование на ноутбуках или single-purpose виртуальных машинах может быть излишним. RAID используется для обеспечения избыточности на физическом оборудовании, однако в облачных средах блок-стор сам справляется с этой задачей (например, gp3 на AWS или network-ssd на Yandex Cloud).

Всегда используйте UUID вместо имен устройств в файле /etc/fstab, так как имена устройств могут меняться после перезагрузки в некоторых конфигурациях. Важно настроить уведомления на диск-фулл, чтобы предотвратить потерю данных.

Типичные ошибки

Типичные ошибки при работе с диск квотами включают опечатку при использовании команды dd if=/dev/zero of=/dev/sda, что приводит к мгновенной потере данных. Также ошибкой является попытка изменить размер смонтированной файловой системы в неверном порядке (например, сначала изменение раздела, а затем файловой системы). Игнорирование исчерпания inode до ENOSPC, несмотря на наличие свободных гигабайт в df, также является распространенной ошибкой. Наконец, непонимание того, что удаление файла, открытого процессом, не освобождает место, может привести к проблемам с использованием дискового пространства.

Связанные понятия

Полезные ресурсы