11.3 Администрирование дисковых квот (Administering Disk Quotas)¶
Дисковые квоты (disk quotas) — ценный инструмент управления при администрировании системы Linux. Проблема заключается в том, что Linux является многопользовательской системой, поэтому один или два пользователя могут полностью монополизировать всё дисковое пространство, доступное в файловой системе. Это особенно актуально в современном сетевом мире, где пользователи загружают из Интернета большие музыкальные файлы и ещё более объёмные видеофайлы. Как не дать таким пользователям потреблять больше дискового пространства, чем им положено? С помощью дисковых квот.
Говоря простыми словами, дисковые квоты устанавливают ограничения на использование дискового пространства для пользователей системы. Можно указать, что каждому пользователю разрешено использовать лишь определённый объём дискового пространства или определённое количество индексных дескрипторов (квота). Превышать эту квоту не разрешается.
Чтобы реализовать квоты в файловой системе Linux, сначала необходимо установить пакет quota в системе. Некоторые дистрибутивы, особенно серверные, устанавливают этот пакет в рамках базовой установки. Однако большинство дистрибутивов потребуют установить его отдельно после настройки системы. Чтобы проверить, установлен ли пакет quota в вашей системе, введите rpm -qi quota в командной строке. Если он не установлен, используйте rpm или другую подходящую утилиту управления пакетами для его установки.
После установки пакета выполните следующие действия для настройки квот.
1. Откройте сеанс терминала и переключитесь в учётную запись суперпользователя root с помощью команды su.
2. Настройте смонтированные файловые системы для использования квот следующим образом.
a. Откройте файл /etc/fstab в текстовом редакторе.
b. Добавьте параметры usrquota и grpquota в параметры монтирования для файловой системы, на которой требуется установить квоты. В следующем примере квоты установлены для файловой системы /:
/dev/sda2 swap swap defaults 0 0
/dev/sda3 / ext4 acl,user_xattr,usrquota,grpquota 1 1
/dev/sda1 /boot ext4 acl,user_xattr 1 2
/dev/sda4 /var ext4 acl,user_xattr 1 2
c. Сохраните изменения в файле и выйдите из редактора.
d. Перезагрузите систему, чтобы изменения вступили в силу.
3. После перезагрузки системы создайте файлы квот следующим образом.
a. Откройте сеанс терминала и переключитесь в учётную запись суперпользователя root с помощью команды su.
b. В командной строке введите quotacheck -amvug.
Утилита quotacheck предназначена для сканирования файловой системы с целью анализа использования дискового пространства и создания файлов квот. Параметры, используемые с quotacheck, имеют следующее значение:
-a— проверяет все смонтированные файловые системы-m— принудительно выполняет проверку смонтированных файловых систем-u— проверяет пользователей-g— проверяет группы-v— работает в режиме подробного вывода
После завершения работы quotacheck в точке монтирования смонтированной файловой системы должны быть созданы два файла — aquota.user и aquota.group, как показано ниже:
openSUSE:/ # ls
RandD bin etc lib64 mnt root srv usr
aquota.group boot home lost+found opt sbin sys var
aquota.user dev lib media proc selinux tmp
4. Включите квоты в файловой системе, введя quotaon -av в командной строке.
5. Просмотрите текущий объём дискового пространства, занятого пользователями, введя repquota -av в командной строке. На экране будет отображён отчёт, показывающий, сколько пространства потребляет каждый пользователь:
openSUSE:/ # repquota -av
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
games -- 416 0 0 3 0 0
gdm -- 12 0 0 32 0 0
lp -- 12 0 0 3 0 0
man -- 208 0 0 2 0 0
news -- 4 0 0 1 0 0
polkituser -- 24 0 0 1 0 0
root -- 4236032 0 0 154678 0 0
uucp -- 4 0 0 1 0 0
ksanders -- 6680 0 0 505 0 0
tux -- 108844 0 0 742 0 0
jsanders -- 52 0 0 14 0 0
rtracy -- 52 0 0 14 0 0
#10000 -- 2688 0 0 211 0 0
Statistics:
Total blocks: 8
Data blocks: 1
Entries: 13
Used average: 13.000000
Обратите внимание, что в этом отчёте для ни одного пользователя не настроено никаких ограничений.
6. Создайте дисковые квоты для пользователей следующим образом.
a. В командной строке введите edquota -u имя_пользователя. Для пользователя rtracy отобразится примерно следующий экран:
Disk quotas for user rtracy (uid 1004):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 52 0 0 14 0 0
В этом примере устанавливаются квоты для пользователя rtracy. Обратите внимание, что файл квот открыт в редакторе vi. Кроме того, можно задать жёсткие и мягкие квоты как для блоков, так и для индексных дескрипторов. Мягкие квоты (soft quotas) — те, которые могут быть временно превышены. Жёсткие квоты (hard quotas) не могут быть превышены. Квоты на блоки определяют, сколько блоков на диске может занять пользователь. Квоты на индексные дескрипторы определяют, сколько файлов может принадлежать пользователю.
b. С помощью редактора vi задайте мягкие и жёсткие квоты на блоки и/или индексные дескрипторы.
c. Сохраните изменения и выйдите из редактора.
d. Повторите этот процесс для каждого из пользователей.
Совет
Чтобы скопировать квоты от одного пользователя к другому, введите edquota -p исходный_пользователь целевой_пользователь.
7. Создайте дисковые квоты для групп следующим образом.
a. В командной строке введите edquota -g имя_группы.
b. С помощью редактора vi задайте мягкие и жёсткие квоты на блоки и/или индексные дескрипторы.
c. Сохраните изменения и выйдите из редактора.
8. На предыдущих шагах вы создали мягкие квоты для блоков и/или индексных дескрипторов. По умолчанию пользователям разрешается превышать мягкие квоты не более семи дней. Это льготный период (grace period). Изменить его можно следующим образом.
a. В командной строке введите edquota -t. Будет отображено следующее:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda3 7days 7days
b. Измените параметры льготного периода.
c. Сохраните изменения и выйдите из vi.
9. Проверьте новые квоты, введя repquota -av в командной строке. Теперь должны быть видны квоты, установленные для пользователей. В следующем примере квоты установлены для пользователя rtracy:
openSUSE:/ # repquota -av
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
games -- 416 0 0 3 0 0
gdm -- 12 0 0 32 0 0
lp -- 12 0 0 3 0 0
man -- 208 0 0 2 0 0
news -- 4 0 0 1 0 0
polkituser -- 24 0 0 1 0 0
root -- 4236028 0 0 154678 0 0
uucp -- 4 0 0 1 0 0
ksanders -- 6680 0 0 505 0 0
tux -- 108856 0 0 745 0 0
jsanders -- 52 0 0 14 0 0
rtracy -- 52 10000 15000 14 800 1000
#10000 -- 2688 0 0 211 0 0
Statistics:
Total blocks: 8
Data blocks: 1
Entries: 13
Used average: 13.000000
Ваша система теперь защищена от пользователей, поглощающих дисковое пространство! Давайте потренируемся в настройке дисковых квот в следующем упражнении.
Упражнение 11-4. Настройка дисковых квот
В этом упражнении вы будете тренироваться во внедрении дисковых квот в вашей системе Linux. Упражнение можно выполнять на виртуальной машине, прилагаемой к этой книге. Запустите снимок 11-4 для получения правильно настроенной среды.
Совет
Посмотрите видео упражнения 11-4 для демонстрации выполнения этой задачи.
Выполните следующие действия.
1. Убедитесь, что вы вошли в систему.
2. При необходимости переключитесь в учётную запись суперпользователя root с помощью команды su - и пароля student.
3. Настройте смонтированные файловые системы для использования квот следующим образом.
a. Откройте файл /etc/fstab в текстовом редакторе.
b. Добавьте параметры usrquota и grpquota в параметры монтирования для файловой системы /.
c. Сохраните изменения в файле и выйдите из редактора.
d. Перезагрузите систему, чтобы изменения вступили в силу.
4. После перезагрузки системы создайте файлы квот следующим образом.
a. Откройте сеанс терминала и переключитесь в учётную запись суперпользователя root с помощью команды su -.
b. В командной строке введите quotacheck -amvug.
5. После завершения работы quotacheck в каталоге / должны быть созданы два файла — aquota.user и aquota.groups.
6. Включите квоты в файловой системе, введя quotaon -av в командной строке.
7. Просмотрите текущий объём дискового пространства, занятого пользователями, введя repquota -av в командной строке. На экране отобразится отчёт, показывающий, сколько пространства потребляет каждый пользователь. Обратите внимание, что для ни одного пользователя не настроено никаких ограничений.
8. Создайте дисковые квоты для пользователей следующим образом.
a. В командной строке введите edquota -u student.
b. С помощью редактора vi задайте следующие значения:
- Жёсткая квота на блоки: 15000
- Мягкая квота на блоки: 10000
- Жёсткая квота на индексные дескрипторы: 1000
- Мягкая квота на индексные дескрипторы: 800
c. Сохраните изменения и выйдите из редактора.
d. Повторите этот процесс для остальных пользователей.
9. Проверьте новые квоты, введя repquota -av в командной строке. Теперь должны быть видны квоты, установленные для пользователей.
10. Введите exit для выхода из учётной записи суперпользователя root.
11. Убедитесь, что вы вошли в систему под учётной записью пользователя, для которой установлены квоты.
12. Создайте большой файл, введя time dd if=/dev/zero of=bigfile.bin bs=1024 count=10000 в командной строке. Вы должны увидеть сообщение об ошибке, указывающее на превышение квоты.
Теперь вы опытный специалист в работе с пользователями, группами и правами доступа Linux!