Ограничение потребляемого дискового пространства

Для предотвращения исчерпания свободного места на системах хранения данных используется контроль за потребляемым пользователями дисковым пространством. Это реализуется путем введения ограничений (квот). При превышении ограничения пользователь теряет возможность занимать новое место до тех пор, пока не удалит часть имеющихся файлов и не снизит потребляемое пространство ниже значения квоты.


Как правило используются ограничения двух видов:

  1. Жёсткое ограничение ('hard quota'), которое не может быть превышено - операционная система перестанет выделять ресурсы.
  2. Мягкое ограничение ('soft quota'). Разные системы хранения могут реализовавать мягкие квоты по разному. Некоторые при превышении мягкой квоты запускают отcчёт времени и блокировка происходит только после истечения некоторого заранее определённого периода (например, одной недели), если за это время пользователь не уменьшит занимаемое место ниже значения квоты. Другие системы (в том числе, используемая у нас) используют мягкие квоты только как некий порог, по превышении которого пользователю сообщается, что мягкая квота превышена и что вскоре возможно превышение и жёсткой квоты. Блокировки при этом не происходит.


Ограничения настраиваются индивидуально для каждого пользователя и независимо для каждой файловой системы. В настоящий момент пользователям доступны две файловые системы:

  1. '/mnt/storage' содержит домашние директории пользователей.
  2. '/mnt/scratch' предназначена для временного хранения объемный рабочих файлов. Механизм работы с этой файловой системой описан на данной странице нашего сайта.

Как правило, квоты будут позволять занимать на 'scratch' больший объем, чем на 'storage'.


Занимаемое дисковое пространство, значения мягкой и жёсткой квот, а также факт срабатывания ограничений отображаются в момент авторизации на интерфейсном сервере. Примеры сообщений:

  • При отсутствии превышения ограничений:
      Filesystem      Used   Soft   Hard  State
    /mnt/storage   18.25GB   20GB   25GB  Good, quota is not exceeded
    /mnt/scratch   32.83GB   50GB   60GB  Good, quota is not exceeded
  • При превышении мягкой квоты:
      Filesystem      Used   Soft   Hard  State
    /mnt/storage   18.25GB   20GB   25GB  Good, quota is not exceeded
    /mnt/scratch   54.12GB   50GB   60GB  Soft quota exceeded
  • При блокировке:
      Filesystem      Used   Soft   Hard  State
    /mnt/storage   18.25GB   20GB   25GB  Good, quota is not exceeded
    /mnt/scratch   60.00GB   50GB   60GB  Blocked, hard quota exceeded
  • :!: У используемой системы хранения данных Panasas имеется особенность: после превышения жесткой квоты на дисковое пространство она считается превышенной до тех пор, пока не будет освобождено место, равное 5% от значения квоты. Причём никакие команды для работы с файловой системой факт блокировки не отображают, он проявляется только в невозможности сохранять новые данные (при этом может выводиться, например, сообщение «Disk quota exceeded»). В связи с этим вывод информации о состоянии квот в момент авторизации на интерфейсном сервере нельзя рассматривать как достоверный - отсутствие сообщения о превышении жёсткой квоты не означает, что возможна нормальная работа с файловой системой.


Для просмотра текущего состояния квот используйте на интерфейсном сервере (на других серверах она не работает) следующую команду:

panfs_quota


В случае превышения жёсткой квоты пользователю ежедневно отправляются уведомления электронной почтой.


:!: Важный момент: используемая у нас система хранения при работе квот учитывает не размер файла, а объём дискового пространства, необходимый для его хранения, причём с учётом накладных расходов на обеспечение отказоустойчивости. В качестве примера рассмотрим файл '/opt/shared/bin/ws_find'. Его размер отображается командой 'ls -al':

hpc-suvir2:~ # ls -al /opt/shared/bin/ws_find
-r-xr-xr-x 1 root root 548 Apr 30  2010 /opt/shared/bin/ws_find

Видно, что размер файла - 548 байт. Объём дискового пространства, необходимого для хранения этого файла, отображается командой 'du -h':

hpc-suvir2:~ # du -h /opt/shared/bin/ws_find
48K     /opt/shared/bin/ws_find

Как видно, требуется 48 Кбайт. Те же самые 48 КБ тратятся на хранение файлов и меньшего размера, даже нулевого. Чем больше размер файла, тем меньше относительная разница между его размером и необходимым для хранения местом. Однако, они никогда не совпадут и второе значение всегда будет больше. Например, для хранения файла размером 5,4 ГБ необходимо 6,2 ГБ. Поэтому желательно организовавывать свои данные таким образом, чтобы избегать использования большого количества файлов небольшого размера.