Настройка и оптимизация Microsoft Windows
Главная -> Windows 8.1 -> Система

Как уменьшить размер папки WinSxS в Windows 8.1

Напечатать страницу

 

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

Почему папка WinSxS такая большая

На самом деле, она занимает значительно меньше места, чем кажется. Множество файлов из папки Windows проецируется в нее с помощью жестких ссылок именно из папки WinSxS. Да, файловые менеджеры могут показывать размер папки WinSxS в 10GB и более, но лишь потому, что они принимают за чистую монету объем жестких ссылок. В Windows 8.1 этому есть очень наглядное подтверждение.

Почему папка WinSxS постоянно растет

Каждый раз, когда вы устанавливаете обновления, системные файлы заменяются новыми. Их старые версии сохраняются в папке WinSxS, чтобы обеспечить возможность отката в случае проблем с новыми версиями, т.е. устойчивое обслуживание системы. Это приводит к увеличению объема папки WinSxS, хотя на практике ее максимальный размер редко превышает 15GB. Кстати, именно этого аспекта коснулось одно изменение в Windows 8.1, как вы увидите ниже.

Новые возможности системы обслуживания

Вездесущая утилита DISM обзавелась в 8.1 новыми параметрами командной строки, которые я разберу в этой статье. Но сначала – несколько примечаний:

  1. В моем распоряжении находится английская Windows 8.1 Preview, в которой результаты команд DISM не локализованы, несмотря на русский языковой пакет. Фанатичным приверженцам локализованных ОС придется потерпеть :)
  2. Поскольку Windows 8.1 Preview установлена недавно, размер папки WinSxS невелик, равно как и выгода от описанных в статье манипуляций. Однако, чем дольше установлена ОС, тем заметнее польза от изменений в системе обслуживания.
  3. Все команды нужно выполнять от имени администратора.

Готовы? Давайте пойдем от простого к сложному!

Как определить реальный размер папки WinSxS в Windows 8.1

С помощью одного из новых параметров DISM вы можете проанализировать хранилище компонентов, т.е. папку WinSxS.

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Результат команды будет примерно таким:

dism.exe командная строка

Здесь по порядку:

  1. Размер хранилища компонентов, каким его видит проводник, т.е. без учета жестких ссылок внутри WinSxS.
  2. Реальный размер хранилища компонентов с учетом жестких ссылок (за исключением ссылок на папку Windows), в том числе:
    • Общие файлы с папкой Windows. Эти файлы необходимы для работы системы и ни в коем случае не являются лишними. В моем примере они составляют 87% от размера хранилища, но чем больше обновлений устанавливается, тем ниже этот процент.
    • Резервные копии и отключенные компоненты. Эти файлы хранятся на случай проблем с обновленными компонентами или для включения ролей или компонентов. Их можно условно считать лишними, поскольку они не критичны для текущей работы системы.
    • Кэш и временные файлы. Эти файлы нужны для быстрой работы системы обслуживания, но не являются абсолютно необходимыми для функционирования Windows.
  3. Дата последней очистки хранилища. Об очистке во всех подробностях ниже.
  4. Число пакетов, замененных более новыми, и рекомендация по очистке. Фактически, это – файлы, которые обновились после работы Windows Update. Их можно удалить очисткой хранилища.

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

Как очистить папку WinSxS в Windows 8 и 8.1

Начиная с Windows 8, в ОС заложено три способа очистки.

Команда DISM (рекомендую)

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

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

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

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

Наберите cleanmgr в командной строке, запущенной от имени администратора. Встроенная в Windows утилита для очистки диска покажет, сколько места вы сэкономите, удалив файлы обновлений Windows.

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

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

Запланированное задание

Windows выполняет очистку папки winsxs по расписанию с помощью задания Microsoft – Windows – Servicing – StartComponentCleanup.

Планировщик Windows

Конкретной команды не видно, поскольку очистка реализована обработчиком COM-объектов. А отсутствие триггеров свидетельствует о том, что задание работает в рамках вездесущего автоматического обслуживания. Запустив задание из планировщика или командной строки, вы достигаете почти того же эффекта, что и командой DISM с ключом /StartComponentCleanup. Различия таковы:

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

Выполнив очистку, в Windows 8.1 вы можете снова проанализировать хранилище и оценить изменения.

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

Как видите, в моем случае очистка 10 пакетов позволила сэкономить 60MB, что не так уж и много в масштабах папки. Однако можно почистить еще :)

Как удалить старые версии компонентов из папки WinSxS в Windows 8.1

Во времена Windows XP был очень популярен вопрос, можно ли удалять папки $NTUninstallKBxxxxxx$ из папки Windows. Помните такое?

Диск C папка Windows

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

Команда для удаления

Начиная с Windows 8.1, у параметра /StartComponentCleanup есть дополнительный ключ /ResetBase, с помощью которого можно удалить все предыдущие версии компонентов. Этот ключ не задействован в запланированном задании.

Внимание! Удаление предыдущих версий компонентов лишает вас возможности удалить установленные обновления и пакеты исправлений (Service Packs), но не блокирует установку будущих обновлений.

Это предупреждение вовсе не дежурное, если вспомнить недавнюю ошибку 0xc0000005 после KB2859537, от которой плакал горючими слезами Рунет. Так или иначе, волшебная команда:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Очевидно, выигрыш дискового пространства зависит как от количества зачищаемых обновлений, так и от объема замененных ими компонентов. В моем примере удалось высвободить еще около 24MB.

WinSxS в Windows 8.1

Что происходит при удалении предыдущих версий компонентов

Как я сказал выше, в папке WinSxS хранятся предыдущие версии компонентов, замененные обновлениями Windows. Например, на момент публикации этой статьи Microsoft выпустила два обновления для встроенного в систему Adobe Flash Player, что видно из журнала установки.

Просмотр журнала обновлений

Второе обновление заменило некоторые компоненты Flash Player, а в папке WinSxS сохранились обе версии:

Adobe Flash

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

И да, для установленных обновлений в списке appwiz.cpl пропадает кнопка «Удалить», потому что откатываться уже некуда

Удаление обновления

Описанные выше нововведения в Windows 8.1 не являются секретом, поскольку задокументированы в библиотеке TechNet (пока только на английском языке). Причем объяснения там выгодно отличаются от типичной сухой документации — чувствувется перо Джозефа Конвея (Joseph Conway), главнoго источника сведений системе обслуживания Windows, который, к сожалению, недавно объявил о прекращении публикаций в своем блоге.

Сжатие компонентов в папке WinSxS (тайное знание)

Однако в официальной документации практически нет информации о том, что с целью экономии дискового пространства для хранилища компонентов в Windows 8 и выше применяется сжатие. Я выделю несколько известных мне моментов:

  1. Сжатие применяется к файлам, которые не использует операционная система. К ним относятся предыдущие версии компонентов и отключенные компоненты. Этим, видимо, и объясняется не столь существенный выигрыш от удаления предыдущих версий с параметром /ResetBase.
  2. Используется сжатие NTFS. По неподтвержденной информации, в Windows 8.1 также используется алгоритм разностного сжатия (delta compression), который превосходит по эффективности сжатие NTFS. Вероятно, этот алгоритм опирается на блоки данных.
  3. Экономия дискового пространства может быть весьма существенной в некоторых сценариях. Так, на установке Windows Server Core 2012 R2 Preview благодаря сжатию высвобождается около 20% места, если исключить из уравнения файлы подкачки и гибернации. Экономия достигается за счет сжатия компонентов отключенных ролей сервера.

Возможно, со временем Microsoft выдаст в документации или блогах команд больше информации о сжатии в Windows 8.1.

Кстати, NTFS-сжатие файлов, не являющихся жесткими ссылками, является единственным способом сокращения объема папки WinSxS, хоть как-то имеющим право на жизнь в предыдущих ОС Windows, хотя даже этот метод не поддерживается>. Читатель блога Александр делился в комментариях ссылкой на свою статью об этом (публикация ссылки не означает, что я рекомендую этот способ или проверял конкретную реализацию).

С чем связаны изменения в системе обслуживания Windows 8 и 8.1

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

Серверные ОС

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

Удаление неиспользуемых ролей сервера в Windows Server 2012 помогает ИТ-специалистам эффективнее распоряжаться дисковым пространством. Тем, кто не знает об этой возможности или не считает целесообразным ее применять, поможет сжатие компонентов неиспользуемых ролей в Windows Server 2012 R2.

Клиентские ОС

К моменту выхода Windows 7 стоимость 1GB на жестких дисках была столь невелика, что папка WinSxS вызывала головную боль только у товарищей с маленьким сами знаете, чем. Однако на сцену уже выходили SSD, и система обслуживания Windows не очень хорошо сочеталась с их скромным объемом.

Казалось бы, к выходу Windows 8 твердотельный накопитель объемом 128GB уже не был чем-то из ряда вон выходящим, но на разработчиков системы обслуживания свалилась новая беда – планшеты, в том числе свой же Surface.

Действительно, все современные планшеты на Clover Trail в лучшем случае комплектуются диском в 64GB. А в более популярных младших моделях после вычета раздела восстановления остается около 25GB, чего недостаточно для более-менее долгосрочной работы Windows.

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

Похожие публикации
Комментарии (0)

Комментариев нет.

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






Консультация специалиста

Консультант по Windows Если у вас есть вопрос по Windows или работе с ПК, вы можете задать его нашему консультанту.

Бесплатно и без регистрации!

Задать вопрос

Работа в нашей коменда
Опрос
Как часто вам нужна помощь при работе с ПК?




Результаты опросов
Разработка
  • Разработка сайта: Роман Чернышов
    • Рейтинг@Mail.ru