Уже 7 лет папка WinSxS является бельмом в глазу у ряда пользователей. Все эти годы Microsoft потихоньку улучшала систему обслуживания Windows, и в прошлом году я рассказывал о тонкостях управления компонентами Windows 8. Выгоду от тех нововведений получили администраторы серверных ОС, а на улицу домашних пользователей настоящий праздник пришел только в Windows 8.1.
Перейти к инструкциям по очистке
Сегодня я расскажу вам о ключевых изменениях в системе обслуживания Windows 8 и 8.1, которые помогут вам эффективнее распорядиться дисковым пространством и наконец-то очистить папку WinSxS, не рискуя при этом нарушить работу системы.
У вас Windows 7? Читайте Как грамотно уменьшить размер папки WinSxS в Windows 7 SP1
[+] Сегодня в программе
- Животрепещущие вопросы
- Новые возможности системы обслуживания
- Как определить реальный размер папки WinSxS в Windows 10, 8.1 и 8
- Как очистить папку WinSxS в Windows 10, 8.1 и 8
- Как удалить все старые версии компонентов из папки WinSxS в Windows 10 и 8.1
- Сжатие компонентов в папке WinSxS (тайное знание)
- С чем связаны изменения в системе обслуживания Windows 8 и 8.1
- Дискуссия и опрос
Животрепещущие вопросы
Сначала я обозначу два вопроса, которые сильнее всего волнуют людей в контексте папки WinSxS.
Почему папка WinSxS такая большая
На самом деле, она занимает значительно меньше места, чем кажется. Множество файлов из папки Windows проецируется в нее с помощью жестких ссылок именно из папки WinSxS. Да, файловые менеджеры могут показывать размер папки WinSxS в 10GB и более, но лишь потому, что они принимают за чистую монету объем жестких ссылок. В Windows этому есть очень наглядное подтверждение.
Почему папка WinSxS постоянно растет
Каждый раз, когда вы устанавливаете обновления, системные файлы заменяются новыми. Их старые версии сохраняются в папке WinSxS, чтобы обеспечить возможность отката в случае проблем с новыми версиями, т.е. устойчивое обслуживание системы. Это приводит к увеличению объема папки WinSxS, хотя на практике ее максимальный размер редко превышает 15GB. Кстати, именно этого аспекта коснулось одно изменение в Windows 8.1, как вы увидите ниже.
Новые возможности системы обслуживания
Вездесущая утилита DISM обзавелась в 8.1 новыми параметрами командной строки, которые я разберу в этой статье. Но сначала – несколько примечаний:
- В моем распоряжении находится английская Windows 8.1 Preview, в которой результаты команд DISM не локализованы, несмотря на русский языковой пакет. Фанатичным приверженцам локализованных ОС придется потерпеть :)
- Поскольку Windows 8.1 Preview установлена недавно, размер папки WinSxS невелик, равно как и выгода от описанных в статье манипуляций. Однако, чем дольше установлена ОС, тем заметнее польза от изменений в системе обслуживания.
- Все команды нужно выполнять от имени администратора, а после очистки — перезагружаться для более аккуратного измерения экономиии дискового пространства.
Готовы? Давайте пойдем от простого к сложному!
Как определить реальный размер папки WinSxS в Windows 10, 8.1 и 8
С помощью одного из новых параметров DISM вы можете проанализировать хранилище компонентов, т.е. папку WinSxS.
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Результат команды будет примерно таким:
Здесь по порядку:
- Размер хранилища компонентов, каким его видит проводник, т.е. без учета жестких ссылок внутри WinSxS.
- Реальный размер хранилища компонентов с учетом жестких ссылок (за исключением ссылок на папку Windows), в том числе:
- Общие файлы с папкой Windows. Эти файлы необходимы для работы системы и ни в коем случае не являются лишними. В моем примере они составляют 87% от размера хранилища, но чем больше обновлений устанавливается, тем ниже этот процент.
- Резервные копии и отключенные компоненты. Эти файлы хранятся на случай проблем с обновленными компонентами или для включения ролей или компонентов. Их можно условно считать лишними, поскольку они не критичны для текущей работы системы.
- Кэш и временные файлы. Эти файлы нужны для быстрой работы системы обслуживания, но не являются абсолютно необходимыми для функционирования Windows.
- Дата последней очистки хранилища. Об очистке во всех подробностях ниже.
- Число пакетов, замененных более новыми, и рекомендация по очистке. Фактически, это – файлы, которые обновились после работы Windows Update. Их можно удалить очисткой хранилища.
Я прямо вижу, как у вас руки чешутся очистить хранилище и высвободить место :)
Как очистить папку WinSxS в Windows 10, 8.1 и 8
Начиная с Windows 8, в ОС заложено три способа очистки.
Команда DISM (рекомендую)
Вы можете очистить хранилище компонентов вручную одной командой.
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
Это самый быстрый путь к выполнению оптимизации (после него двумя следующими способами вы уже ничего не добьетесь).
Утилита «Очистка диска»
Andrey Bayatakov, спасибо за напоминание об этом способе!
Наберите cleanmgr в командной строке, запущенной от имени администратора. Встроенная в Windows утилита для очистки диска покажет, сколько места вы сэкономите, удалив файлы обновлений Windows.
В принципе, утилита делает то же самое, что и ключ /StartComponentCleanup. Однако она весьма фривольна в оценках освобождаемого пространства, и в моих экспериментах ошибка измерялась сотнями мегабайт, причем в обе стороны.
Запланированное задание
Windows выполняет очистку папки winsxs по расписанию с помощью задания Microsoft – Windows – Servicing – StartComponentCleanup.
Конкретной команды не видно, поскольку очистка реализована обработчиком COM-объектов. А отсутствие триггеров свидетельствует о том, что задание работает в рамках вездесущего автоматического обслуживания. Запустив задание из планировщика или командной строки, вы достигаете почти того же эффекта, что и командой DISM с ключом /StartComponentCleanup. Различия таковы:
- Игнорируются обновления, установленные в последние 30 дней.
- Выдерживается часовая пауза, очистки всех файлов может не произойти.
Выполнив очистку, вы можете снова проанализировать хранилище и оценить изменения.
Как видите, в моем случае очистка 10 пакетов позволила сэкономить 60MB, что не так уж и много в масштабах папки. Однако можно почистить еще :)
Как удалить все старые версии компонентов из папки WinSxS в Windows 10 и 8.1
Во времена Windows XP был очень популярен вопрос, можно ли удалять папки $NTUninstallKBxxxxxx$ из папки 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 не являются секретом, поскольку задокументированы в библиотеке TechNet (пока только на английском языке). Причем объяснения там выгодно отличаются от типичной сухой документации — чувствувется перо Джозефа Конвея (Joseph Conway), главнoго источника сведений системе обслуживания Windows, который, к сожалению, недавно объявил о прекращении публикаций в своем блоге.
Сжатие компонентов в папке WinSxS (тайное знание)
Однако в официальной документации практически нет информации о том, что с целью экономии дискового пространства для хранилища компонентов в Windows 8 и выше применяется сжатие. Я выделю несколько известных мне моментов:
- Сжатие применяется к файлам, которые не использует операционная система. К ним относятся предыдущие версии компонентов и отключенные компоненты. Этим, видимо, и объясняется не столь существенный выигрыш от удаления предыдущих версий с параметром /ResetBase.
- Используется разностное сжатие. По
неподтвержденной покауже подтвержденной информации в Windows 8.1 для компрессии замененных компонентов применяется разностное сжатие. - Экономия дискового пространства может быть весьма существенной в некоторых сценариях. Так, на установке Windows Server Core 2012 R2 Preview благодаря сжатию высвобождается около 20% места, если исключить из уравнения файлы подкачки и гибернации. Экономия достигается за счет сжатия компонентов отключенных ролей сервера.
В статье, где собраны все технические тонкости, я описал разные механизмы сжатия Windows 8 и 8.1+.
С чем связаны изменения в системе обслуживания 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 удаление предыдущих версий предоставляет запасной аэродром в самых тяжелых случаях.
Дискуссия и опрос
Эта запись является хорошим поводом для вас высказать все, что наболело по поводу хранилища компонентов Windows :) Опрос призван выявить количественный расклад, а в комментариях напишите, создает ли вам проблемы рост размера папки WinSxS. Если создает, опишите их и предоставьте ссылку на полноэкранный скриншот оснастки diskmgmt.msc.
Эта запись знаменует возобновление публикаций в блоге после летнего перерыва. Надеюсь, вы хорошо отдохнули :) Мой отпуск еще только грядет в сентябре, но вас уже ожидают несколько интересных запланированных записей :)
Результаты голосования утеряны в связи с прекращением работы веб-сервиса опросов.
viktoriay64
Добрый день! Я на фото покажу свою проблему, . Я обычный пользователь и что то не знаю как у вас здесь вставлять картинки, как могла поставила! Вообщем у меня ноутбук-трансформер и очень мало место на диске всего 20 гигов, и 15 из них занимает папка Windows, из них: папка WinSxS занимает 5Гб, папка System32-3Гб, .В ноутбуке изначально установлена windows 8.1 для одного языка с Bing, при покупке размер диска был всего 8 Гб, спустя два месяца на жестком диске у меня осталось менее 1Гб свободного места, хотя ничего лишнего в нем нет, ни картинок, ни фильмов, ни музыки, только немного документов, я постоянно чищу компьютер, с помощью очистки диска, но это уже почти не помогает. Пробовала как описано в этой статье пишет ошибку 6800 . Помогите, не знаю что еще можно сделать!
Vadim Sterkin
См. Куда пропадает место на системном разделе. Если этого недостаточно, создайте тему тут http://forum.oszone.net/forum-116.html
Виктор Ганелес
Вадим, доброго времени суток.
Столкнулся тут с ситуацией, компьютер не находит драйверы для стандартных новых USB-устройств.
мышка или флешка, которая используется уже давно работает нормально.
новые мышки или флешки обнаруживаются как USB Mouse но так и висят в неппознанных устройствах.
В логах винды ошибка обнаружения PNP-драйвера.
Подозреваю, что дело в некорректных попытках подчистить используемое место.
В частности применялся скрипт для чистки WinSXS c хабра
http://geektimes.ru/post/72427/
http://habrahabr.ru/post/196404/
Что посоветуете кроме переустановки поверх? Я её откладываю потому, что географически далеко от компа нахожусь.
Спасибо.
Vadim Sterkin
Виктор, вам сюда http://forum.oszone.net/
Изабелла Терговен
Здравствуйте! Подскажите, пожалуйста, как поступить, если возникла ошибка «Функция попыталась использовать имя, зарезервированное для использования другой транзакцией» при использовании Dism.exe /Online /Cleanup-Image /StartComponentCleanup ?
Стандартная очистка с помощью cleanmgr ничего не дала
Vadim Sterkin
Изабелла, вам сюда http://forum.oszone.net/forum-3.html
Wadim
Вадим,
папка WinSxS очень засорена -14 Gb, но командa DISM на очистку на 20% выдает ошибку 14098 Компонентная память повреждена (может по-русски звучит несколько иначе — перевожу с немецкого).
Что делать?
PS. Диск SSD, Windows 8.1 Pro 64
Vadim Sterkin
Вадим, исправляйте ошибки хранилища компонентов (этапы 1 и 2). С проблемами обращайтесь в форум, плиз.
Юрий И.
после чистки, по 1-му методу через cmd, размер папки WinSxS вырос почти на 2 гб…
Vadim Sterkin
Юрий, чтение статьи должно было навести на мысль о том, как правильно измерять место.
chukcha
Интерес к папке появился только поле того, как заметил, что ping.exe в windows 7 запускается то из папки system32 то из папки winsxs, причину так и не выяснил, но походу такое поведение пришло с недавними обновлениями (так как в необновленной ос такого не наблюдаю),
собственно это же заставило заинтересоваться и жесткими ссылками.
Подскажите причину такого поведения или сторону в которую копать =)
Vadim Sterkin
Это один и тот же файл. В чем проблема-то? Если хочется копить, посадите дерево :)
chukcha
Вопрос в том, почему система попеременно решает, то запускать его из папки system32, то из папки winsxs (такое поведение может, например, вызывать проблемы в работе стороннего фаервола или софта), и если система начинает вести себя подобным образом, то встает вопрос о ее стабильности и пригодности.
Думаю этого достаточно, чтобы заинтересоваться подобным вопросом =)
А по поду «копить»… хорошо, впредь постараюсь не использовать обороты в стиле «в какую сторону копать».
daslas
Здравствуйте, Вадим!
Такая проблема-при анализе папки командой dism.exe было выявлено к очистке 24 пакета, а при попытке очистить
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase появилось сообщение:
«Ошибка 6800.
Функция попыталась использовать имя, зарезервированное для использования другой транзакцией.»
Возможно как-то решить это или что-то я не так сделал?
Ноутбук ASUS N750JK, ОС-Windows 8.1 SL.
Спасибо.
Vadim Sterkin
Начните с полного удаления своего защитного ПО и при необходимости продолжайте в http://www.forum.oszone.net
Соня
Папка абсолютно не беспокоит, периодически проверяю размер и очищаю.
Вадим, спасибо, благодаря вашему блогу станем продвинутые))
Олексій Товпига
Ни один из способов не работает! :( Вообще, ни байта ни удаляется! Папка Windows занимает 27 Гб, а winsxs 13 Гб.
Vadim Sterkin
Пишите в http://www.forum.oszone.net, прикладывайте CBS.log после выполнения 1 и 2
Дмитрий
На ПК после Repair-WindowsImage -Online -RestoreHealth получилось сделать Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
А вот на Буке возникли проблемы «ошибка 14098 хранилище компонентов повреждено» причем восстановление Repair-WindowsImage -Online -RestoreHealth каждый раз выдавало Healthy. Пробовал просто Dism.exe /Online /Cleanup-Image /StartComponentCleanup все «то же ошибка 14098 хранилище компонентов повреждено» опять восстановление команда Dism /Online /Cleanup-Image /CheckHealth отвечает что все ок. И снова 14098
Подождал 12 часов и не выключая антивируса и не делая ни каких чисток (CCleaner) запустил обычный Dism.exe /Online /Cleanup-Image /StartComponentCleanup высвободил 1Гб. Возможно, что на буке с предустановленной виндос как-то блокируется команда Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Дмитрий
В целом не вижу смысла в этой /ResetBase Win сама знает, что для нее лучше, если включено «Автоматическое обслуживание» + регулярно проводится чистка типо CCleaner все и так будет ок => команда /ResetBase высвобождает тот же самый 1Гб что и при команде /StartComponentCleanup, а вот если вызовет ошибку, то получите из-за повреждения баз лишние 2 Гб.
Так что я бы 10 раз подумал прежде чем выполнять Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase — оно вам надо? Лучше включите «Автоматическое обслуживание» и не забивайте себе голову всякой ерундой без надобности…
NightFox
Может кому будет интересно, но есть ещё проблема с \Windows\System32\DriverStore\FileRepository
В ней порой копится куча версий драйверов которые не очищаются ни очисткой диска ни через Dism с ключом /ResetBase.
Так, например, у меня накопилась куча ненужных версий видеодрайверов nvidia общим объёмом более 1,7ГБ!
Чуть не решился руками их удалять как нашёл упоминание pnputil и с помощью неё успешно почистил хранилище от лишних версий.
Пользоваться ей очень просто, пишем в консоли от админа:
Открываем этот файл и ищим там старые ненужные версии драйверов.Записываем их опубликованные имена (oem.inf).
Дальше пишем в консоль:
pnputil -d oem.inf
И всё, ненужный пакет драйвера будет удалён.
Если вы случайно попадёте на работающий драйвер программа вам просто откажет в удалении и ничего страшного не произойдёт (если вы конечно не будете указывать ключ принудительного удаления «-f»).
Думаю про это стоит написать или отдельную статью или добавить в эту.
NightFox
А почему нет возможности редактировать свои комментарии?
Vadim Sterkin
Есть, в течение 5 минут.
NightFox
У меня не работает.
Vadim Sterkin
Значит, вам надо попробовать в Internet Explorer на чистой VM.
NightFox
Сейчас пробую с ноутбука. Если что я входу через учётку MS.
Недоступно и с ноутбука через ИЕ11.
Vadim Sterkin
Еще раз перепроверил на тестовой учетной записи — все работает.
Предлагаю свернуть оффтоп и внимательно вычитывать комментарии перед отправкой. Жили 4 года без правок, и никто не умер.
Vadim Sterkin
В очистке диска есть такая возможность
Трюк с pnputil не нов, но бывает полезен, да.
Напишите в Word со скриншотами в PNG и пришлите мне — опубликую :)
NightFox
Я знаю про этот пункт я же написал про очистку диска, но он не работает — там 0 байт, не смотря на то что у меня висели лишие пакеты драйверов на почти 1,8ГБ.
Что касается статьи какие скриншоты? Консольки? Чтобы нормально сделать мне надо установить другие версии драйвера, а желания на это пока нет.
Vadim Sterkin
Вашу исходную фразу можно толковать и так, что вы об этом пункте не знаете.
Как появится, присылайте.
Monk
Здравствуйте.
А на 8 как то можно сделать /resetbase? Там DISM старее. Я пробовал загрузиться с WinPE от 8.1 с нормальным DISM’ом, но при подключении к офлайн образу он выдал что образ винды 6.2 и не дал выполнить для него эту команду. В общем, подскажите, возможно ли в win 8 поставить DISM от 8.1 и сделать resetbase.
Vadim Sterkin
Обновитесь до 8.1, давно пора
Monk
Здесь речь идёт о Windows Embedded 8 Standard. В моём случае на тонких клиентах. В линейке Embedded следующая за ней ОС это 8.1 Industry, она хорошая, но для моих нужд не подходит т. к. не копмонентная.
Vadim Sterkin
Ответ — поддерживаемого способа нет.
Taras Mikalayenka
Большинство здесь отписавшихся либо переставляют по каким-то причинам систему ежегодно, либо вообще поставили её 3 дня назад и не видят проблем с гиговой папкой. У меня на рабочем компе за 3 года папка винды достигла 55 гигов. Cleanmgr пыхтел полчаса загружая процессор на треть и насилуя диск. Итог -100 мегабайт… dism с ключом /ResetBase уменьшил папку на примерно полтора из 8 гигабайт. Не фонтан, но что-то.
Теперь борюсь с папкой инсталлер, разросшейся до более 30 гигов…
Vadim Sterkin
Поддерживаемого способа нет: Можно ли удалять файлы из папки Windows\Installer