Дисковые квоты пользователей через NTFS, за минуту
- Постановка задачи
- Плюсы и минусы использования NTFS квот
- Список плюсов:
- Список минусов:
- Настройка и активация NTFS квот через графический интерфейс
- Системные записи исключения
- Как посмотреть файлы профиля через записи квот
- Особенности поведения настроек у NTFS квот
- Дисковые квоты пользователей на файловой системе NTFS через GPO
- Управление дисковыми квотами 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 квот через графический интерфейс
Предположим у меня есть один терминальный сервер, где пользователи хранят свои профили и работают с удаленными офисными программами, и я хотел бы им ограничить, то дисковое пространство, которое они могут использовать. У меня есть локальный диск объемом 520 ГБ, я щелкаю по нему правым кликом и выбираю свойства, через которые я буду настраивать дисковые квоты Windows.
Переходите на вкладку "Квота", где вам необходимо активировать кнопку "Показать параметры квоты (Show Quota Settings)"
Логично, что квотирование по умолчанию отключено, чтобы активировать возможность настроек, поставьте галку "Включить управление квотами (Enable quota management)".
Теперь давайте я вам опишу каждую из настроек:
- Активация галки "Не выделять место на диске при превышении квоты (Deny disk space to users exceeding quota limit)" включит режим жесткого квотирования, это означает, что пользователь не сможет превышать выделенное ему на диске место, если же данная галка отключена, но пороги выставлены, то превышение и подход к пороговым значениям будет детектироваться в событиях Windows, но место дальше продолжится выделяться и пользователь сможет выходить за рамки настроенных пороговых значений NTFS квот.
- По умолчанию у вас будет стоять тумблер на пункте "Не ограничивать выделение места на диске (Do not limit disk usage)", тут думаю все понятно и без описаний, даже имея активную галку "Не выделять место на диске при превышении квоты" люди будут продолжать писать и лимитов у них не будет, за это как раз отвечает активация пункта три
- "Выделять на диске не более (Limit disk space to)" - тут все просто у вас будет один верхний порог и один нижний порог (Порог выдачи предупреждений (Set warning level to)), по которому уже будут срабатывать оповещения с предупреждениями в системном журнале. Обратите внимание, что тут вы можете задавать цифры и в мегабайтах и в петтабайтах.
- Регистрация превышения квоты пользователя (Log event when a user exceeds their quota limit) - тут все понятно, превысил квоту, то будет записано все журнал
- Регистрация превышения порога предупреждения (Log event when a user exceeds their warning level), превысил порог уведомления, будет сделана запись в просмотре событий
Я в своем примере выставил жесткое квотирование, верхний предел, который нельзя превышать я установил на значении 15 ГБ, лимит предупреждений я выставил на 12 ГБ. По мере очищения пользовательских профилей я со временем уменьшу эти цифры до 5 и 3 соответственно.
Нажав применить у вас появится окно с предупреждением:
После применения я вам советую нажать кнопку "Записи квот (Quota Entries)"
У вас будет открыт журнал дисковых квот нужного вам тома. Система начнет подсчет всех учетных записей (Профилей), которые она смогла обнаружить, если записей много, то на некоторое время вы в место имен можете наблюдать пользовательские SID, они начинаются с S-1-5-21-, о сидах читайте по ссылке слева. Обратите внимание, что если у вас есть пользователи, кто превысил квоту, они будут выделены красным значком со статусом "Превышен предел".
Вам самому под свои обстоятельства нужно будет разобрать данный список, но я вам настоятельно рекомендую системные учетные записи вывести в белый список, чтобы на них не распространялись лимиты.
Системные записи исключения
- NT AUTHORITY\Система
- NT AUTHORITY\LOCAL SERVICE
- NT SERVICE\Trustedinstaller
- NT AUTHORITY\NETWORK SERVICE
- BULTIN\Администраторы
- IIS APPPOOL
Чтобы изменить настройки дисковых квот NTFS для нужной учетной записи, например увеличить ей лимиты или сделать еще более жесткие, вам необходимо щелкнуть по нужному профилю правым кликом и выбрать свойства.
Ставим для системных учетных записей пункт "Не ограничивать выделение места на диске", а то могут быть проблемы в системе с разными компонентами и программами.
В итоге у меня для специальных учетных записей получилось вот так. Те же действия вы можете выполнить и для обычных пользователей, например из руководства, кому либо вообще не нужны лимиты, что не правильно, либо же сделать их слегка побольше.
так же может быть ситуация, что есть пользователь который еще не входил на данный сервер, а значит его еще нет в списке записей в таблице квотирования. Вы хотели бы, чтобы у него были персональные квоты, отличающиеся от стандартных, в таком случае вы можете его добавить в ручную, для этого нажмите в левом углу кнопку "Квота" и выберите пункт "Создать запись квоты"
В окне добавления, отыщите нужную вам учетную запись, после чего назначьте ей персональные дисковые квоты.
Как посмотреть файлы профиля через записи квот
Я в очередной раз удивляюсь тупейшей логике компании Microsoft в плане реализации некоторых моментов. Предположим, что один из пользователей превысил квоту и вы хотели бы посмотреть, что именно у него в профиле. Логично, что вы можете воспользоваться утилитой DirStat и детально посмотреть, но логично, что в самом окне "Записи квот" должна быть такая функция, и вы никогда не догадаетесь, как она называется.
Вы должны выбрать пользователя, кликнуть по нему и выбрать пункт "Удалить", да да вы не ослышались, мать его Microsoft, где логика, а!
У вас откроется маленькое окно, в котором не то, что не особо видно сколько занимает, тот или иной файл, а его даже невозможно расширить. У вас тут будут доступны вот такие функции:
- Вы сможете безвозвратно удалить файлы
- Сможете сменить владельца, если нажмете эту кнопку на нужном файле или папке, то вы станете ее владельцем
- Переместить файлы или папки в нужное расположение
После выхода из этого окна у меня выскакивает подсказка:
И тут до меня доходит, что если вы хотите реально удалить пользователя из таблицы "Записи квот", то у него в папке не должно быть ничего, для этого и получается, что можно либо отнять его файлы став владельцем, или же их удалить. Как понимаю, это сделано для устарелых профилей, логика странная, так как есть более правильные пути удалить пользователя.
Когда вы включили квотирование на томе с NTFS и создали белый лист с исключением, у вас у каждого пользователя появится вместо диска C:\ или того тома который он ранее видел, уже новый локальный диск, но он будет того объема, что вы ему выставили в максимальном пределе. У моего тестового пользователя, отдельная дисковая квота, верхняя планка лимита 400 МБ, а предупредительная 300 МБ, как видите в его отображении диск C:\ имеет размер 400 МБ.
Когда пользователь израсходует доступное ему дисковое пространство и если включены жесткие дисковые квоты на томе, то он получит вот такое предупреждение при попытке записать данные:
Тут у пользователя два выхода, это почистить свой профиль или же умолять системного администратора, чтобы тот увеличил ему лимиты.
Если посмотреть логи системы в просмотре событий, то в журнале система, вы обнаружите событие с кодом ID 36 NTFS
Вы увидите в строке пользователь, его логин в моем примете, это Барбоскин Геннадий Викторович.
И если пользователь у себя увидел предупреждение "Недостаточно места. Для копирования этого объекта нужно место. Удалите или переместите файлы для освобождения места", то в логах Windows вы обнаружите событие ID 37 NTFS:
Особенности поведения настроек у NTFS квот
Теперь хотел бы поделиться некоторыми особенностями, с которыми я столкнулся в момент эксплуатации данного решения. Во первых, предположим, что на начальном этапе вы выставили общие настройки квот 15 предел и 12 предупреждение, через какой-то момент вы решили изменить их и изменили на 10 и 8, на вкладке "Квота", логично что они должны изменить уже существующие, но не тут то было. Когда вы зайдете в "Записи квот", то увидите, что там остались старые значения, это потому, что для Windows, они как бы более приоритетные, нежели общие.
Чтобы установить новые значения вам нужно выделить все записи, кроме системных, щелкнуть правым кликом и задать параметры по новой вручную
Второй момент на который я обратил внимание, это было то, что общее число записей в квотах отличалось от того, сколько было профилей в системе, 4600 против 263.
Если посмотреть файлы дисковых квот, через меню удалить, то можно понять, что за данные остались у такого профиля, вот примеры. Остался лог от SCCM по пути C:\Windows\CCM. Зайдите в папку, отфильтруйте по дате изменения и удалите старые.
Так же хвосты могут оставаться в корзине данного профиля, по пути C:\$RECYCLE, почистить корзину у всех пользователей на терминальной ферме можно скриптом, ссылка на него слева.
После этого у вас будут записи с используемым размером 0 байт и вы их легко удалите, через соответствующую кнопку.
Дисковые квоты пользователей на файловой системе NTFS через GPO
Как я и писал в начале статьи, данные настройки вы легко сможете реализовать через централизованный механизм правления политиками рабочих станций в домене Active Directoty, но с некоторыми ограничениями. Открывает оснастку "Управление групповой политикой" создаем новую политику и переходим к ее редактированию. В новой политике перейдите по пути:
У вас будут вот такие пункты:
- Включить дисковые квоты - активация данного пункта, равно ценна простановки галки "Включить управление квотами". Если параметр включен, то пользователь уже не может его отключить локально из системы, галка не будет активной. Если вы отключаете этот параметр политики, то управление дисковыми квотами отключается, и пользователи не могут его включить. Если выставить "Не задано", то квот не будет и администраторы локально могут их переопределить
- Обеспечить соблюдение квоты - По сути, это активация галки жестких квот. Тут как и в первом случае, включение не позволит менять локально эти настройки, если стоит статус "Отключено", то место будет дальше выделять в мягком режиме. Не забываем, что данный параметр работает в совокупности с указанием порогов в другой настройке.
- Определить квоту и порог предупреждений по умолчанию - В данной опции вы задаете те пороговые значения с которых будет вестись предупреждения и запрет на выделение нового дискового пространства.
- Записать в журнал события при превышении квоты - простановка соответствующей галки на вкладке квот NTFS
- Записать в журнал событие, возникающее при превышении порога предупреждений квоты
- Применить политику к съемным носителям - Этот параметр политики распространяет действие политик дисковых квот, установленных для данной папки, на тома файловой системы NTFS съемных носителей. Если вы отключаете или не настраиваете этот параметр политики, политики дисковых квот, установленные для данной папки, применяются только к томам NTFS на несъемных носителях. Примечание. Если этот параметр политики включен, то дисковые квоты будут применяться и к съемным, и к несъемным носителям.
1.Хочу отметить, что если вы настраиваете дисковые квоты, через групповую политику, то учтите, что они будут применяться ко всем локальным дискам, без исключения
2. Так же обратите внимание, что у вас тут нет возможности настроить исключения для определенных учетных записей, например системных
Далее вы назначаете созданную политику на организационное подразделение, содержащее объекты компьютеров и обновляете политику, после чего у вас появятся новые значения дисковых квот на локальных дисках.
Еще хочу отметить, что есть подобная настройка исключительно для пользователей, по ограничению их профилей, находится эта политика по пути:
Тут есть такой параметр "Ограничить размер профиля". Этот параметр политики устанавливает максимальный размер для каждого профиля пользователя и определяет реакцию системы при достижении профилем пользователя максимального размера. Этот параметр политики относится как к локальным, так и к перемещаемым профилям. Активация политики даст возможность подрезать размер пользовательских профилей до нужного размера, обратите внимание, что оно в килобайтах, не перепутайте. Есть возможность не учитывать файлы реестра, нужно ли уведомлять пользователя, что он превысил свой размер профиля. Что классное, вы можете задать нужный текст в окне уведомления и раздражающую частоту его появления.
Управление дисковыми квотами NTFS через командную строку
Многие вещи вы сможете выполнить и через командную строку, откройте ее от имени администратора и вызовите утилиту Fsutil.
Чтобы включить квоту диска на диске C:\, команда будет выглядеть вот так:
На выходе вы получите активированные две галки "Включить управление квотами" и "Не выделять место на диске при превышении квоты"
Чтобы выключить дисковые NTFS квоты, выполните команду:
Чтобы включить мягкие квоты и просто детектировать события, имеет такая команда:
В итоге у вас активируется "Включать управление квотами", но не активируется "Не выделять место на диске при превышении квоты"
далее вы можете изменить лимитные пороги для нужного пользователя, в моем примере, это Барбоскин Геннадий. Предположим, что я хочу Гене дать порог предупреждения в 3 Гб, а потолок 5 ГБ. Делается это командой:
Обратите внимание, что цифры тут задаются в байтах, поэтому столько нулей.
Чтобы посмотреть текущие квоты, вы можете выполнить команду:
Своего Геннадия я нашел, и видно все пороговые значения. Получить события из журнала событий, о превышении квот вы можете через команду:
Подробнее про 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). Данные значения в секундах, учтите это.
На этом у меня все, остались вопросы, то пишите их в комментариях, а с вами был Иван Семин, автор и создатель портала Pyatilistnik.org.
Весьма удобная функция, но лучше это делать через роль
Не подскажешь как делать квоты через роли но для перенаправленные рабочие столы
Не понял каким образом DirStat может помочь отследить файлы конкретного пользователя на файл-сервере.