Дисковые квоты пользователей через NTFS, за минуту

Обновлено 03.08.2022

квоты ntfsДоброго времени суток! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В сегодняшней статье я хочу продолжить борьбу за дисковое пространство на RDS фермах, которое используют пользователи. В пошлый раз я вам показал, как можно уменьшить объем папки Windows на RDS сервере, сегодня мы еще подрежем места за счет профилей. В данной инструкции я подробно рассмотрю алгоритм внедрения дисковых квот для пользователей на файловой системе NTFS. Расскажу в каких случаях, это будет быстрее и правильнее, нежели разворачивать роль FSRM.

Постановка задачи

Есть один или два хоста в RDS или терминальной ферме. 20-30 пользователей работают на них. У пользователей профили локальные, хотя и могут быть перемещаемые, либо это могут быть перенаправляемые папки. Размеры профилей разные и могут стремиться к бесконечности, предположим, что у нас есть физические ограничения на дисковое пространство, которое выделено серверам и пользователи начинают активно выедать его. Перед вами встала задача ограничить их, тут есть три варианта решения данной задача:

  • Вы уведомляете пользователей, что нужно привести свои профили в порядок и почистить, а дальше надеяться на их ответственность. Могу со 100% уверенностью сказать, что они просто проигнорируют это письмо.
  • Вы настраиваете простое решение в виде NTFS квот, применимо для плоских сетей или нескольких серверов.
  • Вы устанавливаете роль FSRM (File Server Resource Manager), нужна будет серверная операционная система.

Плюсы и минусы использования NTFS квот

Список плюсов:

  • NTFS квотирование настраивается в любой операционной системе, будь то клиентская WIndows 7 или 10, или же это серверная Windows Server 2016
  • Не требует отдельной лицензии, и является стандартной функцией операционной системы
  • Быстрая настройка, буквально за несколько минут
  • Применима в не доменных системах, где небольшое количество серверов, но так же легко реализуется и в Active Directory
  • Легко настраивается с помощью групповых политик и централизованное управление в будущем

Список минусов:

  • Когда вы включаете NTFS квотирование, то они включается ко всему тому (Разделу), который как вы понимаете должен быть отформатирован в файловую систему NTFS, в новомодной файловой системе ReFS, она работает только начиная с версии 1709.
  • Нельзя применить квоту на группу или отдельную папку, для этих целей у Microsoft есть роль FSRM (File Server Resource Manager)
  • Квоты будут применимы сразу ко всем учетным записям, в том числе и системным, это нужно учитывать, благо есть возможность произвести исключения для нужных людей
  • Пересчет квот и занятого места у каждого пользователя в системе происходит один раз в час
  • Уведомления пользователям, о подходе к порогу заполнения отсутствует, по умолчанию пишется только событие в журнал логов Windows, но при желании можно воспользоваться PowerShell и выводить всплывающие окна.
  • Когда вы активируете сжатие (компрессию) на папке NTFS, то квотирование будет считать только оригинальный размер, в моем примере, это 14,9 мб.

NTFS компрессия

Настройка и активация NTFS квот через графический интерфейс

Предположим у меня есть один терминальный сервер, где пользователи хранят свои профили и работают с удаленными офисными программами, и я хотел бы им ограничить, то дисковое пространство, которое они могут использовать. У меня есть локальный диск объемом 520 ГБ, я щелкаю по нему правым кликом и выбираю свойства, через которые я буду настраивать дисковые квоты Windows.

Свойства локального диска

Переходите на вкладку "Квота", где вам необходимо активировать кнопку "Показать параметры квоты (Show Quota Settings)"

Показать параметры квот

Логично, что квотирование по умолчанию отключено, чтобы активировать возможность настроек, поставьте галку "Включить управление квотами (Enable quota management)".

Перед внедрением NTFS квот, я вам рекомендую заранее предупредить всех пользователей, о будущих мерах, чтобы для них это не было сюрпризом

Включение NTFS квот в Windows-02

Теперь давайте я вам опишу каждую из настроек:

  1. Активация галки "Не выделять место на диске при превышении квоты (Deny disk space to users exceeding quota limit)" включит режим жесткого квотирования, это означает, что пользователь не сможет превышать выделенное ему на диске место, если же данная галка отключена, но пороги выставлены, то превышение и подход к пороговым значениям будет детектироваться в событиях Windows, но место дальше продолжится выделяться и пользователь сможет выходить за рамки настроенных пороговых значений NTFS квот.
  2. По умолчанию у вас будет стоять тумблер на пункте "Не ограничивать выделение места на диске (Do not limit disk usage)", тут думаю все понятно и без описаний, даже имея активную галку "Не выделять место на диске при превышении квоты" люди будут продолжать писать и лимитов у них не будет, за это как раз отвечает активация пункта три
  3. "Выделять на диске не более (Limit disk space to)" - тут все просто у вас будет один верхний порог и один нижний порог (Порог выдачи предупреждений (Set warning level to)), по которому уже будут срабатывать оповещения с предупреждениями в системном журнале. Обратите внимание, что тут вы можете задавать цифры и в мегабайтах и в петтабайтах.
  4. Регистрация превышения квоты пользователя (Log event when a user exceeds their quota limit) - тут все понятно, превысил квоту, то будет записано все журнал
  5. Регистрация превышения порога предупреждения (Log event when a user exceeds their warning level), превысил порог уведомления, будет сделана запись в просмотре событий

настройки ntfs квот

Во время внедрения и перед фильтрацией учетных записей в журнале квот, я вам рекомендую пока включать мягкое квотирование, это подразумевает, что не активна опция "Не выделять место на диске при превышении квоты", что позволит в случае превышения лимита, продолжить пользователям работать.

Я в своем примере выставил жесткое квотирование, верхний предел, который нельзя превышать я установил на значении 15 ГБ, лимит предупреждений я выставил на 12 ГБ. По мере очищения пользовательских профилей я со временем уменьшу эти цифры до 5 и 3 соответственно.

Включение NTFS квот в Windows-04

Нажав применить у вас появится окно с предупреждением:

Включить дисковые квоты следует только в том случае, если вы хотите использовать квоты для этого дискового тома. Когда система квот будет задействована, том будет просмотрен для обновления данных об использовании тома.

Включение NTFS квот в Windows-05

После применения я вам советую нажать кнопку "Записи квот (Quota Entries)"

Включение NTFS квот в Windows-06

У вас будет открыт журнал дисковых квот нужного вам тома. Система начнет подсчет всех учетных записей (Профилей), которые она смогла обнаружить, если записей много, то на некоторое время вы в место имен можете наблюдать пользовательские SID, они начинаются с S-1-5-21-, о сидах читайте по ссылке слева. Обратите внимание, что если у вас есть пользователи, кто превысил квоту, они будут выделены красным значком со статусом "Превышен предел".

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

журнал пользователей дисковых записей

Системные записи исключения

  •  NT AUTHORITY\Система
  • NT AUTHORITY\LOCAL SERVICE
  • NT SERVICE\Trustedinstaller
  • NT AUTHORITY\NETWORK SERVICE
  • BULTIN\Администраторы
  • IIS APPPOOL

Чтобы изменить настройки дисковых квот NTFS для нужной учетной записи, например увеличить ей лимиты или сделать еще более жесткие, вам необходимо щелкнуть по нужному профилю правым кликом и выбрать свойства.

более тонкая настройка дисковых квот

Ставим для системных учетных записей пункт "Не ограничивать выделение места на диске", а то могут быть проблемы в системе с разными компонентами и программами.

исключение системных профилей из ntfs квот

В итоге у меня для специальных учетных записей получилось вот так. Те же действия вы можете выполнить и для обычных пользователей, например из руководства, кому либо вообще не нужны лимиты, что не правильно, либо же сделать их слегка побольше.

отсутствие квот на системные записи

так же может быть ситуация, что есть пользователь который еще не входил на данный сервер, а значит его еще нет в списке записей в таблице квотирования. Вы хотели бы, чтобы у него были персональные квоты, отличающиеся от стандартных, в таком случае вы можете его добавить в ручную, для этого нажмите в левом углу кнопку "Квота" и выберите пункт "Создать запись квоты"

Добавление новой записи квот NTFS-01

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

Добавление новой записи квот NTFS-02

Как посмотреть файлы профиля через записи квот

Я в очередной раз удивляюсь тупейшей логике компании Microsoft в плане реализации некоторых моментов. Предположим, что один из пользователей превысил квоту и вы хотели бы посмотреть, что именно у него в профиле. Логично, что вы можете воспользоваться утилитой DirStat и детально посмотреть, но логично, что в самом окне "Записи квот" должна быть такая функция, и вы никогда не догадаетесь, как она называется.

Вы должны выбрать пользователя, кликнуть по нему и выбрать пункт "Удалить", да да вы не ослышались, мать его Microsoft, где логика, а!

Удалить запись квот

У вас откроется маленькое окно, в котором не то, что не особо видно сколько занимает, тот или иной файл, а его даже невозможно расширить. У вас тут будут доступны вот такие функции:

  • Вы сможете безвозвратно удалить файлы
  • Сможете сменить владельца, если нажмете эту кнопку на нужном файле или папке, то вы станете ее владельцем
  • Переместить файлы или папки  в нужное расположение

Смена владельца на файлы NTFS квот

После выхода из этого окна у меня выскакивает подсказка:

Место на диске распределено для пользователя с выбранной учетной записью. Пользователи, которым распределено место на диске, не могут быть удалены

И тут до меня доходит, что если вы хотите реально удалить пользователя из таблицы "Записи квот", то у него в папке не должно быть ничего, для этого и получается, что можно либо отнять его файлы став владельцем, или же их удалить. Как понимаю, это сделано для устарелых профилей, логика странная, так как есть более правильные пути удалить пользователя.

Настройка дисковых вот NTFS

Когда вы включили квотирование на томе с NTFS и создали белый лист с исключением, у вас у каждого пользователя появится вместо диска C:\ или того тома который он ранее видел, уже новый локальный диск, но он будет того объема, что вы ему выставили в максимальном пределе. У моего тестового пользователя, отдельная дисковая квота, верхняя планка лимита 400 МБ, а предупредительная 300 МБ, как видите в его отображении диск C:\ имеет размер 400 МБ.

Отображение диска при квотах NTFS

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

Недостаточно места. Для копирования этого объекта нужно место. Удалите или переместите файлы для освобождения места.

Тут у пользователя два выхода, это почистить свой профиль или же умолять системного администратора, чтобы тот увеличил ему лимиты.

недостаточно места, отработала NTFS квота

Если посмотреть логи системы в просмотре событий, то в журнале система, вы обнаружите событие с кодом ID 36 NTFS

Пользователь достиг порогового значения квоты на томе C:

Вы увидите в строке пользователь, его логин в моем примете, это Барбоскин Геннадий Викторович.

Событие ID 36 ntfs

И если пользователь у себя увидел предупреждение "Недостаточно места. Для копирования этого объекта нужно место. Удалите или переместите файлы для освобождения места", то в логах Windows вы обнаружите событие ID 37 NTFS:

Пользователь достиг предела квоты на томе C: (A user hit their quota limit on volume C:)

Событие ID 37 ntfs

Особенности поведения настроек у NTFS квот

Теперь хотел бы поделиться некоторыми особенностями, с которыми я столкнулся в момент эксплуатации данного решения. Во первых, предположим, что на начальном этапе вы выставили общие настройки квот 15 предел и 12 предупреждение, через какой-то момент вы решили изменить их и изменили на 10 и 8, на вкладке "Квота", логично что они должны изменить уже существующие, но не тут то было. Когда вы зайдете в "Записи квот", то увидите, что там остались старые значения, это потому, что для Windows, они как бы более приоритетные, нежели общие.

Включение NTFS квот в Windows-13

Чтобы установить новые значения вам нужно выделить все записи, кроме системных, щелкнуть правым кликом и задать параметры по новой вручную

перезапись настроек квот NTFS

Второй момент на который я обратил внимание, это было то, что общее число записей в квотах отличалось от того, сколько было профилей в системе, 4600 против 263.

Включение NTFS квот в Windows-16

Если посмотреть файлы дисковых квот, через меню удалить, то можно понять, что за данные остались у такого профиля, вот примеры. Остался лог от SCCM по пути C:\Windows\CCM. Зайдите в папку, отфильтруйте по дате изменения и удалите старые.

Удаление старых записей ntfs квот-01

Так же хвосты могут оставаться в корзине данного профиля, по пути C:\$RECYCLE, почистить корзину у всех пользователей на терминальной ферме можно скриптом, ссылка на него слева.

Удаление старых записей ntfs квот-02

После этого у вас будут записи с используемым размером 0 байт и вы их легко удалите, через соответствующую кнопку.

Удаление старых записей ntfs квот-03

Дисковые квоты пользователей на файловой системе NTFS через GPO

Как я и писал в начале статьи, данные настройки вы легко сможете реализовать через централизованный механизм правления политиками рабочих станций в домене Active Directoty, но с некоторыми ограничениями. Открывает оснастку "Управление групповой политикой" создаем новую политику и переходим к ее редактированию. В новой политике перейдите по пути:

Конфигурация компьютера\Политики\Административные шаблоны\Система\Дисковые квоты

NTFS квоты GPO

У вас будут вот такие пункты:

  • Включить дисковые квоты - активация данного пункта, равно ценна простановки галки "Включить управление квотами". Если параметр включен, то пользователь уже не может его отключить локально из системы, галка не будет активной. Если вы отключаете этот параметр политики, то управление дисковыми квотами отключается, и пользователи не могут его включить. Если выставить "Не задано", то квот не будет и администраторы локально могут их переопределить

Включение NTFS квот в Windows-15

  • Обеспечить соблюдение квоты - По сути, это активация галки жестких квот. Тут как и в первом случае, включение не позволит менять локально эти настройки, если стоит статус "Отключено", то место будет дальше выделять в мягком режиме. Не забываем, что данный параметр работает в совокупности с указанием порогов в другой настройке.
  • Определить квоту и порог предупреждений по умолчанию - В данной опции вы задаете те пороговые значения с которых будет вестись предупреждения и запрет на выделение нового дискового пространства.

NTFS квоты GPO-02

  • Записать в журнал события при превышении квоты - простановка соответствующей галки на вкладке квот NTFS
  • Записать в журнал событие, возникающее при превышении порога предупреждений квоты
  • Применить политику к съемным носителям - Этот параметр политики распространяет действие политик дисковых квот, установленных для данной папки, на тома файловой системы NTFS съемных носителей. Если вы отключаете или не настраиваете этот параметр политики, политики дисковых квот, установленные для данной папки, применяются только к томам NTFS на несъемных носителях. Примечание. Если этот параметр политики включен, то дисковые квоты будут применяться и к съемным, и к несъемным носителям.


1.Хочу отметить, что если вы настраиваете дисковые квоты, через групповую политику, то учтите, что они будут применяться ко всем локальным дискам, без исключения
2. Так же обратите внимание, что у вас тут нет возможности настроить исключения для определенных учетных записей, например системных

Далее вы назначаете созданную политику на организационное подразделение, содержащее объекты компьютеров и обновляете политику, после чего у вас появятся новые значения дисковых квот на локальных дисках.

Еще хочу отметить, что есть подобная настройка исключительно для пользователей, по ограничению их профилей, находится эта политика по пути:

Конфигурация пользователя\Политики\Административные шаблоны\Система\Профили пользователей

NTFS квоты GPO-03

Тут есть такой параметр "Ограничить размер профиля". Этот параметр политики устанавливает максимальный размер для каждого профиля пользователя и определяет реакцию системы при достижении профилем пользователя максимального размера. Этот параметр политики относится как к локальным, так и к перемещаемым профилям. Активация политики даст возможность подрезать размер пользовательских профилей до нужного размера, обратите внимание, что оно в килобайтах, не перепутайте. Есть возможность не учитывать файлы реестра, нужно ли уведомлять пользователя, что он превысил свой размер профиля. Что классное, вы можете задать нужный текст в окне уведомления и раздражающую частоту его появления.

Управление дисковыми квотами NTFS через командную строку

Многие вещи вы сможете выполнить и через командную строку, откройте ее от имени администратора и вызовите утилиту Fsutil.
Чтобы включить квоту диска на диске C:\, команда будет выглядеть вот так:

fsutil quota enforce C:

На выходе вы получите активированные две галки "Включить управление квотами" и "Не выделять место на диске при превышении квоты"

fsutil включение ntfs квот-01
Чтобы выключить дисковые NTFS квоты, выполните команду:

fsutil quota disable C:

Чтобы включить мягкие квоты и просто детектировать события, имеет такая команда:

fsutil quota track c:

fsutil включение ntfs квот-02

В итоге у вас активируется "Включать управление квотами", но не активируется "Не выделять место на диске при превышении квоты"

далее вы можете изменить лимитные пороги для нужного пользователя, в моем примере, это Барбоскин Геннадий. Предположим, что я хочу Гене дать порог предупреждения в 3 Гб, а потолок 5 ГБ. Делается это командой:

fsutil quota modify c: 3000000000 500000000 домен\barboskin.g (Если пользователь локальный, то пишем без домена)

Обратите внимание, что цифры тут задаются в байтах, поэтому столько нулей.

NTFS квоты GPO-04

Чтобы посмотреть текущие квоты, вы можете выполнить команду:

fsutil quota query C:

NTFS квоты GPO-05

Своего Геннадия я нашел, и видно все пороговые значения. Получить события из журнала событий, о превышении квот вы можете через команду:

fsutil quota violations

Подробнее про fsutil quota читайте по ссылке (https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-quota)

Получить частоту обновления (перерасчета) таблицы квот, по умолчанию это 1 час, число может быть от 0 до 4294967295 (https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-behavior). Данные значения в секундах, учтите это.

fsutil behavior query quotanotify

На этом у меня все, остались вопросы, то пишите их в комментариях, а с вами был Иван Семин, автор и создатель портала Pyatilistnik.org.

Автор - Сёмин Иван

3 Responses to Дисковые квоты пользователей через NTFS, за минуту

  1. Антон:

    Весьма удобная функция, но лучше это делать через роль

  2. Иван:

    Не подскажешь как делать квоты через роли но для перенаправленные рабочие столы

  3. Игорь:

    Не понял каким образом DirStat может помочь отследить файлы конкретного пользователя на файл-сервере.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *