На одном из серверов (под управлением Windows Server 2016) столкнулся с исчерпанием места на системном диске C:\. После очистки основных мест, в которых обычно скапливается разный мусор (WinSxS, каталог TEMP, профили неактивных пользователей и устаревшие обновления и пр.), но заметного эффекта это не дало. Места на диске все также не хватало. В результате нашел, что большую часть системного диска занимала папка System Volume Information. В этой статье я попробую рассказать, зачем нужен каталог System Volume Information в Windows, что в нем хранится, и как его корректно очистить.
Просмотр содержимого каталога System Volume Information
Каталог System Volume Information автоматически создается в корне каждого диска (будь то локальный HDD, SSD диск, съемный USB накопитель, SD карта). В нем хранятся системные данные, относящиеся к службе восстановления системы, индексирования, истории файлов и т.д.
По умолчанию папка System Volume Information скрыта и доступ к ней есть только у системы (учетная запись
NT AUTHORITY\SYSTEM
).
Чтобы показать этот каталог, нужно отключить скрытие защищенных системных файлов в File Explorer (Hide protected operating system files) или выполнить PowerShell скрипт:
$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
Set-ItemProperty $key Hidden 1
Set-ItemProperty $key HideFileExt 0
Set-ItemProperty $key ShowSuperHidden 1
Stop-Process -processname explorer
Даже администратор не может открыть его и просмотреть содержимое папки. Если попробовать открыть папку System Volume Information в проводнике, под любым пользователем (даже под встроенным администратором), появится ошибка доступа:
Расположение недоступно Нет доступа к C:\System Volume Information Отказано в доступе
Чтобы просмотреть содержимое каталога, придется сначала назначить себя владельцем каталога и предоставить своей учетной записи права доступа на него на уровне файловой системы NTFS (это можно сделать через в свойствах папки на вкладке Безопасность). Но гораздо быстрее назначить себя владельцем и предоставить доступ к каталогу из комнадной строки:
takeown /f "C:\System Volume information"
icacls "C:\System Volume Information" /grant Corp\kbuldogov:F
Проверьте в свойствах папки на вкладке Безопасность, что у вашей учетки появились полные права доступа к папке.
PsExec.exe -i -s powershell.exe
Чтобы вывести содержимое каталога, выполните команду:
Get-ChildItem 'C:\System Volume Information\'
Размер каталога можно узнать такой командой PowerShell:
(Get-ChildItem 'C:\System Volume Information\' | measure Length -s).sum / 1Gb
Чтобы восстановить исходные права доступа на каталоге System Volume Information, выполните:
icacls "C:\System Volume Information" /setowner "NT Authority\System"
icacls "C:\System Volume Information" /remove corp\kbuldogov
Что хранится в каталоге System Volume Information?
Что же хранится в каталоге System Volume Information? Мне удалось найти информацию о следующих службах, хранящих свои файлы в этой папке (список не является исчерпывающим):
- WindowsImageBackup — данные точек восстановления системы на клиентских системах или резервные копии System State, сделанные через Windows Server Backup (wbadmin), на серверных ОС;
- Содержимое базы службы индексирования (Indexing Service), используемого для быстрого поиска файлов (в том числе для поиска в Outlook);
- База данных службы Distributed Link Tracking Service;
- Данные снапшотов дисков (теневых копий), создаваемых службой Volume Shadow Copy , которые можно использовать для восстановления старых версий файлов. Для каждого снапшота создается отдельный файл без расширения с длинным ID;
- Настройки дисковых квот NTFS;
- База и чанки службы дедупликации файлов;
- База репликации DFSR (dfsr.db);
- Файл WPSettings.dat — создается службой хранилища (StorSvc);
- На USB накопителях будет хранится также файл IndexerVolumeGuid, в котором хранится уникальная метка диска, используемая службой поиска Windows;
- AppxProgramDataStaging, AppxStaging – резервные копии UWP приложений Windows (можно использовать для восстановления после удаления).
Если вы используете на своем компьютере или сервере теневые копий для возможности отката к старым версиям файлов/состояниям системы, имейте в виду: каждый новый VSS снапшот (снимок) сохраняет данные в каталог System Volume Information, увеличивая его размер. Чем чаще создаются теневые копии и чем чаще изменяются файлы на диске, тем быстрее растет размер этого каталога.
На скриншоте ниже видно, что в папке System Volume Information есть системный файл размером больше 120 Гб.
Как очистить системные файлы в каталоге System Volume Information?
Радикально очистить каталог System Volume Information можно, отключив ведение точек восстановления системы и истории файлов. Но это не всегда допустимо.
Посмотрим для начала, чем же занят каталог. Выведем статистику использования теневых копий:
vssadmin list shadowstorage
vssadmin 1.1 - Программа командной строки для администрирования службы теневого копирования томов (C) Корпорация Майкрософт (Microsoft Corportion), 2001-2013. Сопоставление хранилища теневой копии Для тома: (C:)\\?\Volume{9a9e5a02-db8e-447d-9fef-6029dc4f7f10}\ Том хранилища теневой копии: (C:)\\?\Volume{9a9e5a02-db8e-447d-9fef-6029dc4f7f10}\ Использованный объем хранилища теневой копии: 4,69 ГБ (2%) Выделенный объем хранилища теневой копии: 5,17 ГБ (2%) Максимальный объем хранилища теневой копии: 23,3 ГБ (10%)
Как мы видим, для данных теневых снаншотов на диске C:\ выделено 10% места на диске, из которых занято 2%. Если Максимальный объем хранилища теневой копии (Maximum Shadow Copy Storage space) равен UNBOUNDED, это означает, что лимит для теневых копий не задан и они потенциально могут занять все доступное свободное место на диске. Windows по умолчанию отводит под хранение данных теневых снимков 10 % от общего размера диска.
Уменьшите лимит использования дискового пространства службой VSS до 2 гб с помощью команды vssadmin. Команда имеет следующий синтаксис:
vssadmin resize shadowstorage /on=[drive letter]: /For=[drive letter]: /MaxSize=[maximum size]
В нашем примере она будет выглядеть так:
vssadmin resize shadowstorage /on=c: /for=c: /maxsize=2GB
vssadmin 1.1 - Программа командной строки для администрирования службы теневого копирования томов (C) Корпорация Майкрософт (Microsoft Corportion), 2001-2013. Успешно изменен размер для соответствия хранилища теневой копии
Если вы создаете резервные копии состояния системы с помощью Windows Server Backup (WSB), в Windows Server можно удалить старые версии копий system state с помощью команды:
wbadmin delete systemstatebackup -keepversions:0
Для быстрой очистки старых версий резервных копий состояния системы (system state) и снапшотов в Windows Server используйте утилиты diskshadow:
DiskShadow
Delete shadows OLDEST c:\
При каждом запуске команды удаляется самая старая теневая копия (снапшот) диска.
При запуске команды
wbadmin delete systemstatebackup
в Windows 10 появляется ошибка – «
Команда DELETE SYSTEMSTATEBACKUP не поддерживается в этой версии ОС Windows
«. Дело в том, что в клиентских системах (Windows 10 / 8.1 /7) управление точками восстановления и лимитами возможно только из графического интерфейса. В свойствах системы (System) перейдите на вкладку System Protection (Защита системы).
Выберите системный диск и нажмите на кнопку Configure (Настроить). Откроется диалоговое окно настройки квот для хранения точек восстановления системы. Вы можете уменьшить размер диска под хранение теневых копий. Здесь же можно удалить все имеющие точки восстановления (кнопка Удалить), либо совсем отключить создание точек восстановления, выбрав Отключить защиту системы.
Также для уменьшения размера каталога System Volume Information вы можете:
- Перенести данные VSS на другой NTFS диск (
vssadmin add shadowstorage /for=c: /on=d: /maxsize=30%
); - Отключить/перенастроить функцию История файлов Windows;
- Выполнить очистку системных файлов на диске с помощью встроенной утилиты cleanmgr.exe (свойства диска -> Очистка диска).
Очистка System Volume Information после удаления файлов на томе с дедупликацией
При анализе содержимого каталога System Volume Information в Windows Server вы можете заметить, что много места занимает каталог Dedup\ChunkStore. Это означает, что на диске включена дедупликация файлов.
Служба дедупликации при нахождении одинаковых чанков в файлах заменяет их на ссылку на уникальный чанк, который сохраняется в каталог System Volume Information. Если вы переместили или удалили оптимизированные файлы с дедуплицированного тома, старые чанки не удаляются немедленно. Эти блоки удаляются специальным заданием сбора мусора (GarbageCollection), которое запускается раз в неделю. Именно поэтому, место на томе с включенной дедупликацией не освобождается немедленно.
Чтобы немедленно запустить процедуру удаления неиспользуемые чанки, выполните команду PowerShell:
start-dedupjob -Volume C:-Type GarbageCollection
Следующее задание проверит целостность оставшихся чанков:
start-dedupjob -Volume C: -Type DataScrubbing
Для мониторинга этих задач используйте командлет:
Get-DedupJob
После окончания задач неиспользуемые чанки в каталоге System Volume Information будут удалены, а свободное место на диске увеличится.
Start-DedupJob -Volume D: -Type Unoptimization
. Данная команда удалит все чанки в каталоге System Volume Information. Но при этом на диске де-оптимизированные файлы вернутся в исходное состояние и будут занимать на диске полное место. Поэтому перед отключением оптимизации проверьте, что на диске достаточно свободного места.
Одного не понял — как Вы на 2012 R2 чистили устаревшие обновления? Ведь мастера очистки (cleanmgr.exe) в этой ОС нет.
Утилита Disk Cleanup вроде должна устанавливаться вместе с фичей Desktop Experience. Разве нет?
Честно сказать не в курсе.
Посмотрел сейчас: есть у меня один сервер с установленным Desktop Experience (правда 2008 R2), действительно там эта утилита есть. На другом 2008 R2 без установленного Desktop Experience — нет.
Видимо правда ставится вместе с DE. Вот только сам DE имеет смысл ставить только на сервак с ролью RDS.Ради одной этой утилиты ставить как-то не хочется. Обидно 🙁
А если Desktop Experience ставить не хочется — поиском по ключу cleanmgr в каталоге %systemroot%\winsxs\ найдите два файла cleanmgr.exe и cleanmgr.exe.mui и скопируйте их соответсвенно в папки %systemroot%\system32 и %systemroot%\system32\en-US (ru-Ru для русской системы)
Вот полная инструкция по запуску cleanmgr.exe без Desktop Experience в Windows Server 2008/2012 : https://winitpro.ru/index.php/2016/11/25/zapusk-cleanmgr-bez-desktop-experience/
Это конечно напрашивается само собой. Стараюсь просто избегать подобных решений (мало ли еще что-то есть кроме этих файлов…). Но на крайний случай пойдет. Спасибо!
Самое интересное почему-то пропустили. Как очистить от дедупликации? 🙂
Ага, опишешь тут, как же. Ведь потом плакаться начнут: как мне данные восстановить 🙂
Данные модуля дедупликации отлично очищаются путем отключения дудуп. для папки / тома стандартными средствами винды: https://winitpro.ru/index.php/2012/10/10/deduplikaciya-dannyx-v-windows-server-2012/
Статью я ту уже читал и даже технет почитал 🙂
Я бы не задавал этот вопрос, если бы это было действительно так.
Вот немного конкретики.
Дедупликация выключена.
>Get-DedupVolume K: | fl *
Enabled : False
Даже прогнал — Start-DedupJob -Volume D: -Type Unoptimization
И выводит статус все нормально:
>Get-DedupStatus K: | fl *
SavedSpace : 0
SavingsRate : 0
UnoptimizedSize : 1274355970048
UsedSpace : 1274355970048
А вся загвоздка вот в чем:
> Get-DedupMetadata -Volume K:
TotalChunkStoreSize : 319.76 GB
ChunkStore почему-то не собирается очищаться 🙂
В команде Start-DedupJob -Volume D: -Type Unoptimization вы указали другой диск, нужно ведь K:?
При отключении дедепликации, данные остаются в дедуплицированном состоянии. Команада с параметром -Type Unoptimization как раз запускает обратный процесс. Текущий статус процесса деоптимизации проверяется командой get-dedupjob.
Если проблема не в этом, может быть нужно выполнить очистку мусора. Попробуйте еще раз включить дедупликацию для тома (исключив все папки), и запустить процесс сбора мусора:
start-dedupjob -Volume K: -Type GarbageCollection
Смотрите за размером папки Dedup в System Volume Information, ее размер должен понемногоу уменьшаться. После окончания процесса, отключите дедупликацию
Все верно диск K: просто скопипастил не оттуда.
Бесполезны оба метода:
1) cleanmgr
2) Start-DedupJob -Volume K: -Type GarbageCollection -full
В принципе логично Garbage чистит мусор, а так как файлы реально существую, то он их не очищает (ну я так предполагаю). На всякий случай выставил кол-во дней в 999999999, но и это не помогло (до этого стояло 0 дней).
Есть еще идеи?
Может просто удалить нафиг из System Volume Information папку Dedup?
Отключил еще раз дедупликаию и еще раз прогнал команду:
Start-DedupJob -Volume K: -Type Unoptimization
И после этого папка System Volume Information\Dedup вообще пропала. 🙂 Алилуя …
Гуд, чего-то подобного я и ожидал.
Как я понимаю, нужно сначала выполнить сборку мусора, и только потом отключать дедупликацию и выполнить разоптимизацию данных.
Не совсем, никакую очистку мусора я не делал, да и смысл, если команда разоптимизации очищает все целиком. Получилось, что просто нужно было включить дедупликаию по новой (я отключил на всякий случай фоноую задачу, которая по умолчанию включается в дополнительных настройках), посмотрел еще раз на всякий случай, что бы не было запущено никаких работ (get-dedupjob). Выключил дедупликацию и потом запустил Start-DedupJob -Volume K: -Type Unoptimization.
Скажите, я создал вручную одну точку восстановления, смотрю: Защита системы — использование дискового пространства — 2.02 МБ, через час — 100 МБ, через 2 часа — 225 МБ, — это нормально? Так и должно быть, постоянно увеличивающийся размер?
Конечно, нормально. Система начала накапливать и сохранять список изменений в блоках файлов, которые произошли после создания снапшота
Шикарно описано. Освободил 300 Гб непонятно чего. Спасибо!
Здравствуйте, вопрос не по теме, но попробую… Нашла на рабочем столе в папке с фотографиями папку System Volume Information. Понимаю, что она нужная, но здесь — то ей явно не место. Это на что — то влияет? Куда ее переместить?
(Если что, я очень далека от компьютерных знаний, не смейтесь)
Может, кто — то может мне помочь решить проблему. Не работает микрофон во всем, во что захожу с Google ( в Google Meet, например ), все допуски на местах, все сто раз проверено. В вайбере и диктофоне — работает, включаю гарнитуру — работает, а там — нет. Настраивала и в ноутбуке, и на сайте, в аккаунте. Звук — на максимум включен. Help!!!
Спасибо, почти 15 гигов освободилось. Всё гадал куда место пропадает… Буду знать теперь.
Спасибо за статью,
лишние4 гига освободил =)