Перейти к содержанию

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!