Заметки о Windows и других программных продуктах Microsoft...

Уменьшение папки WinSxS в Windows 8 и 8.1

Уменьшение папки WinSxS в Windows 8 и 8.1

Папка WinSxS не дает покоя пользователям  со времен Windows Vista. И действительно, если вы зайдете в директорию Windows на системном диске и посмотрите размер папки WinSxS, то можете сильно удивиться. Что же находится в этой папке, почему она такая большая и можно ли уменьшить ее размер? Попробуем это выяснить.

Для начала напомню, что из себя представляет папка WinSxS.

Все более-менее современные операционные системы Microsoft (начиная с Windows Vista) состоят из компонентов. Компонент в Windows представляет из себя один или несколько бинарных файлов, файл-каталог и XML-файл с описанием настроек (ключи реестра, настройки безопасности и т.п.). Компоненты группируются в логические блоки, из которых собираются различные редакции Windows.

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

По сути, в папке WinSxS содержится практически вся операционная система, включая и неустановленные компоненты. Кстати, именно поэтому при установке дополнительных компонентов система не запрашивает установочный диск.

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

Папка WinSxS изнутри

 

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

Размер папки WinSxS

 

Именно из за наличия жестких ссылок файловые менеджеры могут показывать несколько преувеличенный размер папки WinSxS. Более точные данные о размере папки в Windows 8 можно узнать с помощью утилиты Disk Usage от Sysinternals. Достаточно просто распаковать утилиту и выполнить команду:

du C:\Windows\WinSxS

Как видите, утилита показывает немного меньший размер папки, чем Проводник.

Размер папки WinSxS с помощью утилиты du

 

Если у вас на системном диске не хватает места, то размер хранилища можно уменьшить, удалив неиспользуемые компоненты. Сразу предупрежу, что лишние файлы нельзя просто взять и удалить, это может привести к частичной или даже полной неработоспособности системы. В Windows 8 есть три безопасных способа очистить папку WinSxS.

Утилита «Очистка диска»

Для очистки хранилища можно воспользоваться графической утилитой «Очистка диска», запущенной с правами администратора. Для этого надо зайти в папку C:\Windows\System32, найти файл cleanmgr.exe и выбрать запуск от имени администратора.

запуск очистки диска с правами администратора

 

Для уменьшения размера папки WinSxS надо отметить пункт «Очистка обновлений Windows» и нажать ОК. Кстати, утилита не совсем точно определяет объем высвобождаемого пространства, реально он может отличаться на пару сотен мегабайт в меньшую сторону.

окно Очистка диска

 

Утилита DISM

С помощью консольной утилиты DISM также можно очистить хранилище компонентов. Для этого в командной строке, запущенной с правами администратора, надо выполнить команду:

Dism /Online /Cleanup-Image /StartComponentCleanup

очистка папки WinSxS с помощью DISM

 

Также с помощью DISM можно очистить хранилище после установки сервис-пака (SP):

Dism /Online /Cleanup-Image /SPSuperseded /HideSP

Ключ /SPSuperseded удаляет архивные файлы, созданные при установке SP, а /HideSP убирает его из списка установленных обновлений. Но поскольку вместо сервис-пака для восьмерки вышла Windows 8.1, то использовать эти ключи не получится, по крайней мере пока. Впрочем, этот способ можно использовать и в Windows 7 с установленным SP1.

Планировщик заданий

В библиотеке планировщика заданий, в разделе Microsoft\Windows\Servicing есть задание StartComponentCleanup. Это задание запускается системой автоматически, в рамках автоматического обслуживания системы, но при желании можно запустить его вручную. Эффект от запуска этого задания практически такой же, как и при использовании предыдущих способов, за исключением того, что игнорируются обновления, установленные за последние 30 дней.

запуск очистки из Планировщика заданий

Новое в Windows 8.1

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

Dism /Online /Cleanup-Image /AnalyzeComponentStore

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

Dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Ключ /ResetBase не используется при плановой очистке и очистке из графической оснастки. Его использование поможет высвободить еще некоторое количество дискового пространства, но будьте осторожны. Удаление предыдущих версий лишает вас возможности удалить установленные обновления и делает невозможным откат изменений в случае каких либо проблем.

изменения в Windows 8.1

 

Вот так просто, одной командой или несколькими кликами мышкой можно освободить несколько дополнительных гигабайт на диске. Впрочем, на сегодняшний день объемы жестких дисков позволяет не задумываться о недостатке места, да и SSD объемом 128-256 Гб вполне доступны по цене. Поэтому, на мой взгляд, проблема с большим размером папки WinSxS актуальна в основном для владельцев планшетов с Windows 8.

 
 
Комментарии

Очень полезная и познавательная статья, а главное, что написана доступно для понимания. Кстати она применима и для Windows 7 Максимальной. Недавно в корне папки WinSXS у меня появился файл pogexec.log, Вы не знаете что он может означать?

Poqexec.log — это журнал выполнения очереди незавершенных операций. Насколько я помню, он используется для диагностики неисправностей после установки дополнительных компонентов Windows.

Вы правы скорее всего это так. Дело в том, что в неделю один раз у меня выполняется архивация, архиватор WinRar. И каждую неделю одна и та же ошибка: «Архивация завершена, однако при этом некоторые файлы были пропущены. Посмотреть пропущенные файлы.» Смотрю:
Обнаружена ошибка при создании архива файла «C:\Users\User\Saved Games». Ошибка: (Не удается найти указанный файл. (0x80070002))
Обнаружена ошибка при создании архива файла «C:\Users\UpdatusUser\Music». Ошибка: (Не удается найти указанный файл. (0x80070002))
Обнаружена ошибка при создании архива файла «C:\Users\UpdatusUser\Pictures». Ошибка: (Не удается найти указанный файл. (0x80070002))
Обнаружена ошибка при создании архива файла «C:\Users\UpdatusUser\Videos». Ошибка: (Не удается найти указанный файл. (0x80070002))
Обнаружена ошибка при создании архива файла «C:\Users\UpdatusUser\Desktop». Ошибка: (Не удается найти указанный файл. (0x80070002))
Обнаружена ошибка при создании архива файла «C:\Users\UpdatusUser\Downloads». Ошибка: (Не удается найти указанный файл. (0x80070002))
Видимо по ошибке я их удалил. Скажите пожалуйста, исправимо ли это или надо менять ОС?

Навряд ли стоит менять ОС ради архиватора, лучше уж наоборот 🙂
А еще проще изменить настройки, исключив из архивации отсутствующие файлы.

Kirill, а путь можете подсказать изменения настроек по исключению отсутствующих файлов? А то WinRar я уже переустанавливал не помогло.

Для начала стоит уточнить, с какой целью производится архивация.

Цели никакой нет, архивация запланирована в ОС Windows 7 Максимальная и проводится в неделю 1 раз. После архивации на диске «D» создаётся резервная копия «COMP», папка WindowsImageBaskup и файл MediaID.bin. Я их раньше удалял потом перестал.

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

Спасибо большое Kirill, так и сделал. Изменил настройки архивации: 1.вместо «Предоставить выбор Windows (рекомендуется)», выбрал «Предоставить мне выбор» 2.Убрал все галки с объектов архивации 3.Расписание назначил по требованию.

а если нету пункта Очистка обновлений Windows в cleanmgr.exe win 8.1, иди он только в win 7?

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

вин7 — нет раздела servicing в планировщике и нет команды startcomponentcleanup в dism /online /cleanup-image