Управление файловыми системами и квотами в Linux
1. Структура файловых систем и мониторинг дискового пространства
Определение использования диска (df
и du
)
# Показать использование всех смонтированных ФС (в человекочитаемом формате) df -h # Показать использование диска для текущей директории и поддиректорий du -sh * # Детальный анализ использования (например, /var) du -h --max-depth=1 /var | sort -h
2. Настройка дисковых квот
Типы квот:
-
user quotas – ограничения для пользователей
-
group quotas – ограничения для групп
-
project quotas (XFS) – для проектов/директорий
Активация квот (ext4/XFS)
Для ext4:
-
Добавить
usrquota,grpquota
в/etc/fstab
:/dev/mapper/vg_data-lv_data /data ext4 defaults,usrquota,grpquota 0 2
-
Перемонтировать и инициализировать:
mount -o remount /data quotacheck -cug /data quotaon /data
Для XFS (поддержка квот включена по умолчанию):
# /etc/fstab /dev/mapper/vg_www-lv_www /var/www xfs defaults,prjquota 0 0
3. Установка квот на запись и чтение
Для пользователей (edquota
)
# Установить квоту для пользователя webadmin edquota -u webadmin
Пример вывода (лимиты в килобайтах):
Disk quotas for user webadmin (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 8000 10000 15000 50 60 80
-
blocks – текущее использование диска.
-
soft/hard (blocks) – мягкий/жесткий лимит на объем (1 GB soft / 1.5 GB hard).
-
inodes – текущее число файлов.
-
soft/hard (inodes) – лимиты на количество файлов.
Для групп (setquota
)
# Установить квоту для группы developers setquota -g developers 500M 1G 0 0 /data
-
500M
– soft limit. -
1G
– hard limit.
4. Мониторинг квот
# Проверить квоты пользователя quota -u webadmin # Проверить квоты группы quota -g developers # Просмотр всех квот (требует root) repquota /data
Пример вывода repquota
:
User used soft hard grace used soft hard grace webadmin 8000 10000 15000 6days 50 60 80
5. XFS Project Quotas (квоты на директории)
Идеально для ограничения /var/www
или /home/projects
.
Настройка:
-
Добавить
prjquota
в/etc/fstab
:/dev/mapper/vg_www-lv_www /var/www xfs defaults,prjquota 0 0
-
Создать проект:
echo "1001:/var/www/project1" >> /etc/projects echo "webproject:1001" >> /etc/projid
-
Назначить квоту:
xfs_quota -x -c 'project -s webproject' /var/www xfs_quota -x -c 'limit -p bsoft=500M bhard=1G webproject' /var/www
Проверка:
xfs_quota -x -c 'report -h' /var/www
6. Практические примеры
Запрет записи при превышении квоты
Если пользователь превысит hard limit
, получит ошибку:
dd: ошибка записи: На устройстве не осталось свободного места
Автоматическое уведомление
Добавить в cron
для мониторинга:
#!/bin/bash repquota /data | mail -s "Disk Quota Report" admin@example.com
7. Управление SWAP
# Создание SWAP-файла (4GB) dd if=/dev/zero of=/swapfile bs=1M count=4096 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # Добавить в /etc/fstab echo "/swapfile none swap sw 0 0" >> /etc/fstab
Итог
-
ext4:
usrquota,grpquota
+edquota/setquota
. -
XFS: Встроенная поддержка
prjquota
для гибкого управления. -
Мониторинг:
quota
,repquota
,xfs_quota
. -
Квоты на запись/чтение контролируются через
blocks
(объем) иinodes
(число файлов).
Примеры выше покрывают все сценарии — от настройки до отладки.