null

You shall not shrink!

Понадобилось мне однажды на компьютере с установленной Windows 7 освободить ровно 256ГБ на диске. Но не просто освободить, а сделать это пространство неразмеченным для дальнейшей установки рядом другой ОС без потери данных. И сделать это нужно было аж на 28 машинах.

Проблема заключается в том, что перед сжатием NTFS встроенная система проверяет фрагментацию данных и заключает какое количество пространства можно отдать, а какое нельзя. И последнее зачастую сильно огорчает, когда тебе нужно получить больше, чем предлагает система. Мной случайно было обнаружено очень простое, но очень долгое решение: сделать полную резервную копию системы на внешний носитель и восстановиться с него.
От фрагментации не остаётся и следа, но в данном случае это был не лучшый путь(вспоминаем про 28 машин).

Изначально в голову приходит простое и очевидное решение - дефрагментация. Помогает ли она? Да, но только если данные фрагментированы. Зачастую получается так, что фрагментация составляет 0%(по мнению системы дефрагментации), а сжать на количество всего свободного пространства всё равно нельзя.

Если немного погуглить(или читать что пишет Windows, но ведь это никто не делает) становится понятно, что сжатие неозможно из-за файлов, которые нельзя перемещать. Умельцы в интернете предлагают отключить Pagefile(swap в Windows), систему восстановления и режим гибернации.

Делается всё это в Windows 7 следующим образом:

 Pagefile:
 

Компьютер->Свойства->Дополнительные параметры системы->
Параметры(в секции Быстродействие)->вкладка Дополнительно->Изменить
Тут убираем галку с автоматического выбора объёма файла подкачки, 
переключаем радио кнопку в состояние "Без файла подкачки", 
жмём Задать(!) и  нажимаем ОК во всех открывшихся окнах настройки.

 Система восстановления:
 

Компьютер->Свойства->Защита системы->Настроить->Отключить защиту системы->ОК

Гибернация отключается командой в cmd(от администратора, конечно же)
 

powercfg /h off

Изначально система давала мне ужать раздел на 206464 MB. Помогли ли вышеописанные действия,
найденные в интернете?

Не сильно.

Как я уже описывал выше, система управления дисками перед сжатием раздела запускает анализ фрагментации, который, после выполнения, записывает в журнал событий(Windows Event Log) имя файла, недоступного для перемещения.
Данные эти находятся под событием с именем Defrag и кодом 259.

В данном случае мы видим, что нам мешает какой-то файл в директориях SystemIndex\Indexer
При помощи головы или гугла узнаём, что там хранятся данные службы Windows Search, которую мы сейчас отключим:
 

В cmd с правами администратора

net stop WSearch

Помогло.

Аналогичным способом лично у меня также были найдены следующие виновники:
Система событий COM+, Служба кэша шрифтов и Центр обновления Windows, которые и были в дальнейшем отключены.
Выполнять поиск и отключение блокирующих файлы служб следует до тех пор, пока выведенное значение доступного для сжатия пространства после нажатия кнопки "Сжать том" вас не удволиторит.
 

net stop FontCache
net stop EventSystem
net stop wuauserv




Победа. Теперь сжимаем том.

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