Как уменьшить размер папки windows 10


Уменьшаем размер папки Windows

woodhummer     21.05.2015 - 21:56 Практикум 

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

Компания Microsoft категорически не рекомендует производить манипуляции с папкой «C:\Windows» и всем ее содержимым. Рассмотрим основные способы очистки папки «Installer» от лишних файлов.

С помощью программы msizap.exe

Для Windows XP разработчиками была выпущена специальная утилита: Windows Installer Clean Up, позволяющая «подчистить следы», оставленные Installer’ом. К сожалению, эта утилита сейчас уже недоступна на сайте Microsoft, однако при желании ее можно найти в Сети. Из набора утилит нам нужна программа msizap.exe.

Запускаем ее в командной строке с такими параметрами: msizap.exe g!

параметр «g» позволяет удалять файлы, не относящиеся к установленным обновлениям, «!» — принудительный ответ «да» на вопрос об удалении.

Для современных ОС

Для Windows 8.1 эта утилита работать не будет, зато можно воспользоваться системной программой. Открываем «Панель управления», кликаем «Администрирование».

Выбираем «очистку диска».

Ждем, пока программа проверит объем освобождаемого пространства.

Далее просто ставим галочку на удаляемых объектах и нажимаем «Очистить системные файлы» и «ОК». На этом чистка окончена.

P.S.

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

обновлено: 21.05.2015

оставить комментарий

wd-x.ru

Что такое папка WinSxS? Как уменьшить размер папки WinSxS? - ТВОЙ КОМПЬЮТЕР

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

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

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

Реальный размер папки WinSxS

Если вы используете одну из новых версий системы Windows (8 или выше), вы можете воспользоваться новым инструментом системы, называемый DISM. Для его использования вам следует открыть командную строку:

1. Нажмите Win + R и в строке «Выполнить» введите cmd;

2. В открывшемся окне введите команду – exe /Online /Cleanup-Image /AnalyzeComponentStore;

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

Стоит отметить, если вы видите размер до 7gb, то по большому счету, это является нормальным явлением, ведь файлы расположенные там являются крайне необходимыми для работы системы.

Причины увеличения размера папки

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

  Что такое майнинг и как заработать на видеокарте?Как и в других папках, здесь присутствуют временные файлы и кэш системы. Он нужен для увеличения быстродействия системы, но эти элементы не являются обязательными.

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

Когда вы отключаете определённые компоненты системы, они не удаляются безвозвратно, то есть они хранятся на компьютере, и в любой момент вы можете их снова активировать.

Таким местом и является папка WinSxS, эти элементы также важны для системы и не требуют удаления.

Чем чаще вы устанавливаете обновления и дольше используете Windows, тем вероятность испытывать затруднение с ограниченным объёмом памяти на диске, хотя с увеличением размеров жестких дисков это уже не настолько насущная проблема.

Очистка папки WinSxS c помощью утилиты cleanmgr

Существует 2 способа воспользоваться этой функцией:

  1. Откройте командную строку и наберите cleanmgr;
  2. Проследуйте по пути:
    • Перейдите в «Мой компьютер»;
    • Выберите виртуальный диск, на котором у вас установлена система, нажмите правой кнопкой мыши и нажмите на опцию «Свойства»;
    • В открывшемся окне нажмите на кнопку «Очистка диска».

Перед вами откроется окно, в котором вам следует выбрать «Очистка обновлений Windows», можете также выбрать «Файлы дампа память для системы», таким опций может не быть, если программа не нашла у вас устаревших обновлений. Инструмент всё выполнит сам, вмешательства от вас не требует, разве что после очистки рекомендуется перезагрузить компьютер, что бы изменения вступили в силу и тогда уже сравнить освобожденное место.

Встроенный инструмент DISM для Windows 8 и 10

Его использование невероятно легкое и простое, всё что нужно – это всего лишь ввести в командную строку, которую вам следует открыть от имени Администратора:

  Увеличиваем производительность ноутбука

Dism.exe /Online /CleanupImage  /StartComponentCleanup

На этом ваша работа и заканчивается, но такой инструмент в Windows 7 и более ранних версиях ещё не был разработан. Если ваша система подходит под требования, тогда это преимущественный способ, как самый простой.

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

Не следует сильно злоупотреблять этими возможностями, пользователи с Windows 10, которые использовали такую возможность на практически чистую папку,  были неприятно удивлены увеличением её размеров после очистки. Лучше всего выполнять такие действия, не смотря на временные сроки, а по количеству выполненных обновлений, таким образом, высвобождая нужные для работы системы ресурсы. Чем больше загруженности системного диска, тем медленнее работает система в общем, то есть всегда следует иметь в запасе хотя бы 5-10gb свободного места, что бы не испытывать трудности, такого рода.Если у Вас остались вопросы по теме «Что такое папка WinSxS? Как уменьшить размер папки WinSxS?», то можете задать их в комментариях

Был ли материал для Вас полезным? Оставьте Ваш отзыв или поделитесь в соц. сетях:

(Пока оценок нет) Загрузка...

tvoykomputer.ru

Уменьшение размера хранилища компонентов в автономном образе Windows

Система обслуживания образов развертывания и управления ими (DISM) позволяет подключать и изменять образ Windows из WIM-, VHD- или VHDX-файла.

Анализ и очистка хранилища компонентов (папки WinSxS) в автономном образе Windows

Для выполнения данного руководства требуется следующее:

  • Компьютер под управлением Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2016 Technical Preview, Windows Server 2012 R2, Windows Server 2012 или Windows Server 2008 R2 с установленной версией средства Windows ADK для Windows 8.1.

  • WIM-, VHD- или VHDX-файл образа Windows 10 или Windows Server 2016 Technical Preview.

Анализ размера хранилища компонентов в автономном образе Windows

  1. Скопируйте WIM-, VHD или VHDX-файл с образом Windows на локальный диск. Например, в каталог C:\test\images.

  2. Нажмите кнопку Пуск и введите развертывание. Щелкните правой кнопкой мыши элемент Среда средств развертывания и работы с образами и выберите команду Запуск от имени администратора.

  3. Создайте папку для подключенного образа. Например, C:\test\offline.

  4. Чтобы получить имя или указатель индекса для образа, который вы хотите обновить, выполните команду DISM /Get-ImageInfo. Например:

    Dism /Get-ImageInfo /ImageFile:C:\test\images\MyImage.wim
  5. Подключите образ Windows. Пример.

    Dism /Mount-Image /ImageFile:C:\test\images\MyImage.wim /Index:1 /MountDir:C:\test\offline

    Так как WIM-файлы могут содержать несколько образов, необходимо указать значение индекса или имени. Чтобы подключить образ с VHD, необходимо указать /Index:1.

  6. Проанализируйте размер хранилища компонентов. Пример.

    Dism /Image:C:\test\offline /Cleanup-Image /AnalyzeComponentStore

    Чтобы узнать о различных значениях, отображаемых на экране, изучите раздел Определение фактического размера папки WinSxS.

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

    Dism /Image:C:\test\offline /Cleanup-Image /StartComponentCleanup
  8. Для дополнительного сокращения размера хранилища компонентов вы можете добавить параметр /ResetBase. Пример.

    Dism /Image:C:\test\offline /Cleanup-Image /StartComponentCleanup /ResetBase
  9. Зафиксируйте изменения и отключите образ, чтобы сохранить внесенные изменения. Пример.

    Dism /Unmount-Image /MountDir:C:\test\offline /Commit

Связанные разделы

Управление хранилищем компонентов Очистка папки WinSxS Определение фактического размера папки WinSxS Куда пропало место? (Запись блога) Запись блога по метафайлам NTFS Создание точек соединения NTFS и работа с ними Параметры командной строки DISM для обслуживания пакетов операционной системы

msdn.microsoft.com

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

В этой статье мы поговорим о каталоге WinSxS и Windows 8, причинах его постоянного роста и способах очистки. Каталог C:\windows\WinSxS является хранилищем компонентов Windows. В этом каталоге  содержатся dll библиотеки, бинарные и xml файлы, необходимые для установки и работы той или иной роли ОС Windows. При установке обновлений ОС, новая версия обновляемого компонента устанавливается в систему, а старая сохраняется в хранилище WinSxS (по словам Microsoft это необходимо для обеспечения совместимости и возможности «отката» на старые версии компонентов).

Как не трудно догадаться, каталог WinSxS со временем будет постоянно увеличиваться, причем размер его не ограничен ничем. Ситуация усугубляется тем, что какой либо возможности управлять или влиять на этот процесс не предусмотрено.

Самым естественным способ уменьшить размер папки  WinSxS в Windows 8 могла бы быть возможность удаления из системы старых версий компонентов, однако инструмента для этих целей Microsoft пока не предоставила.

Еще одной основной особенностью папки WinSxS является наличие в ней большого количества так называемых  hard links (жестких символьных ссылок). Жесткая ссылка представляет собой полностью равноправный оригинальному указатель на файл. Т.е. указатель и исходный файл могут иметь разные имена и находиться в пределах одного раздела в разных каталогах, но реально указывать они будут на один и тот же объект. Именно из-за наличия жестких ссылок, которые включаются в расчет общего размера каталога,  файловые менеджеры (и в том числе Windows Explorer) показывают несколько преувеличенный размер папки WinSxS. Узнать реальный (без учета жестких ссылок) размер папки WinSxS можно с помощью утилиты SysInternal  du:

du -v c:\windows\winSXS

У многих пользователей возникает естественный вопрос можно ли вручную удалить файлы из папки WinSxS. Ответ на этот вопрос – категоричное НЕТ! Такими действиями с большой долей вероятности получиться нарушить работоспособность Windows 8. И хотя некоторые попытки удаления файлов из папки WinSxS могут быть удачными, рекомендовать этот способ с точки зрения потенциальной опасности для системы нельзя.

Остановимся на наиболее безвредных с точки зрения системы способах очистки папки WinSxS в Windows 8. Это:

  • Технология Features on Demand,  позволяющая удалить неиспользуемые компоненты Windows 8 с диска
  • Сжатие файлов в папке WinSxS – способ уменьшить размер каталога  WinSxS  за счет NTFS компрессии ее содержимого

Для достижения максимального результата оба данных способа можно использовать совместно.

Features on Demand в Windows 8

В статье «Безопасная очистка папки WinSxS в Windows Server 2012» мы рассмотрели новую функцию Features on Demand, предоставляющую возможность удаления бинарных файлов неиспользуемых ролей из каталога WinSxS. Для удаления с диска неиспользуемых ролей существует специальный командлет Powershell — Uninstall-WindowsFeature. Однако в случае с Windows 8 не все так просто. Дело в том, что командлет Uninstall-WindowsFeature в Windows 8 отсутствует. А технология Features on Demand реализуется только с помощью DISM или командлета DISM PowerShell. Кроме того, важно знать, что команда DISM в отличии от командлета Uninstall-WindowsFeature не анализирует зависимости пакетов друг от друга.  Так что при удалении пакета Windows с помощью DISM будет удален только указанный в команде компонент, а все зависимые от него пакеты останутся в системе. Именно по этой причине для удаления ролей с диска в Windows Server 2012 не стоит использовать DISM, т.к. есть гораздо более удобное и функциональное средство.

Полный список доступных функций в Windows 8  можно получить с помощью команды:

DISM.exe /Online /English /Get-Features /Format:Table

Предположим, например, что служба TelnetServer в дальнейшем нам не понадобится. Удалим ее полностью с диска (по сути из каталога WinSxS) командой:

DISM.exe /Online /Disable-Feature /Featurename:TelnetServer /Remove

Если еще раз вывести список всех доступных функций Windows 8, вы увидите, что статус компонента изменится на Disabled with Payload Removed.

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

Сжимаем содержимое папки WinSxS в Windows 8

Еще один способ уменьшения размера каталога WinSxS в Windows 8 – сжать содержимое каталога на уровне файловой системы NTFS.

  1. Откройте командную строку с правами администратора
  2. Остановите и отключите службы Windows Installer  и Windows Module Installer sc stop msiserver sc stop TrustedInstaller sc config msiserver start= disabled sc config TrustedInstaller start= disabled
  3. Создадим резервную копию списков доступа (ACL) назначенных на файлы и папки в каталоге WinSxS (в дальнейшем этот бэкап понадобиться для восстановления оригинальных ACL) icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS_NTFS.acl" /t

  4. Назначим себя владельцем папки WinSxS и всех вложенных каталогов takeown /f "%WINDIR%\WinSxS" /r
  5. Предоставим своей учетной записи полные права на каталог WinSxS icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t
  6. Сожмем каталог WinSxS и все его содержимое с помощью команды compact. Часть файлов может использоваться системой, поэтому если запустить команду без параметра /i, сжатие будет остановлено на первом же файле, используемом в настоящий момент системой. С помощью Process Explorer можно найти имя процесса, открывшего данный файл (CTRL+F) и завершить его. Тем самым можно добиться максимальной степени сжатия. Мы лишь ограничимся сжатием неиспользуемых файлов. compact /s:"%WINDIR%\WinSxS" /c /a /i *

  7. Восстановим владельца каталога WinSxS на TrustedInstaller icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t
  8. Восстановим оригинальные списки доступа ACL на каталог WinSxS icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"

  9. Восстановим тип запуска служб Windows Installer и Windows Module Installer sc config msiserver start= demand sc config TrustedInstaller start= demand

Проверим текущий размер каталога WinSxS:

Как вы видите, в нашем пример размер папки WinSxS за счет сжатия уменьшился  с 5,8 Гб до 4 Гб (примерно на треть). Неплохо, особо с точки зрения, если  процедура выполнялась для небольшого про размеру SSD-диска, место на котором стоит достаточно дорого.

На что может повлиять сжатие каталога  WinSxS.

Windows 8 работает со сжатыми файлами в прозрачном режиме, однако при обработке таких файлов, ей может понадобиться дополнительное время на их декомпрессию/компрессию, это означает некоторое замедление  процессов установки компонентов Windows или обновлений. Однако для современного CPU эти процессы выполняются практически мгновенно, так что реального уменьшения скорости пользователь может даже не заметить. Мало того, если жесткий диск медленный, а процессор достаточно быстрый – при сжатии можно заметить даже увеличение скорости работы! Отметим, что при включении ntfs-сжатия всего содержимого папки WinSxS, за счет использования жестких ссылок  окажутся сжатыми ряд файлов в других системных каталогах.

Указанные команды можно выполнять по отдельности (так проще контролировать успешность выполнения каждой из них), либо можно объединить все операции в один файл сценария, запустив который запуститься описанный процедура сжатия данных в папке WinSxS. Скачать готовый командный файл можно тут: compress_winsxs.bat

Данный скрипт можно использовать постоянно в процессе эксплуатации системы, т.к. после установки новых обновлений и программ в каталоге WinSxS будут появляться новые «несжатые» файлы.

winitpro.ru

Как работает и сколько места экономит оптимизация папки WinSxS в Windows 10, 8.1 и 8

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

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

У вас Windows 7? Читайте Как грамотно уменьшить размер папки WinSxS в Windows 7 SP1

[+] Сегодня в программе

Три способа уменьшить объем папки WinSxS

Напомню, что в Windows 8 и 8.1 предусмотрено три способа:

  1. Параметр /StartComponentCleanUp утилиты DISM
  2. Очистка обновлений Windows в утилите «Очистка диска»
  3. Запланированное задание StartComponentCleanup

Технически все они делают одно и то же, хотя задание в планировщике не трогает компоненты обновлений, установленных в последние 30 дней. Давайте посмотрим, как проходит оптимизация.

Что происходит в процессе оптимизации папки WinSxS

При использовании любого из трех способов в Windows 8 и 8.1 оптимизация ведется по двум направлениям:

  1. Удаление старых версий компонентов.
  2. Сжатие неиспользуемых и старых версий некоторых компонентов.

Чем дольше проработала система, тем больше обновлений установилось, и тем больше компонентов удаляется и/или сжимается. Поэтому процесс может быть долгим, поскольку сжатию подвергается много файлов.

Эксперимент по оптимизации папки WinSxS

В моем распоряжении была виртуальная машина с Windows 8, на которой оптимизация ни разу не выполнялась. Папка WinSxS содержала 15755 подпапок (количество файлов я не подсчитывал).

Утилита cleanmgr, запущенная с полными правами, обещает златые горы! Но не стоит особо полагаться на ее данные, т.к. утилита склонна сильно ошибаться, причем в обе стороны.

В таблице ниже вы видите результаты оптимизации. Отмечу, что экономия дискового пространства определялась по данным, которые проводник показывает в свойствах диска (о корректности различных методов измерения места на диске как-нибудь в другой раз).

Как видите, удалось сэкономить чуть ли не в два раза больше места, чем обещала утилита очистки диска! Давайте разберемся, что стоит за цифрами в таблице.

Какие файлы удаляются и почему

Я не задавался целью отслеживать конкретные файлы, и ограничился только папками. Чтобы получить список удаленных папок, нужно сравнить состав папки WinSxS до и после оптимизации. Ниже вы видите, что произошло с компонентами Adobe Flash Player.

Увеличить рисунок

В процессе оптимизации исчезли шесть папок с предыдущими версиями, но три папки сохранились. Чтобы разобраться в происходящем, нужно изучать систему обслуживания (Component Based Servicing) и CBS.log, объемом в десятки мегабайт. Это довольно скучное занятие, поэтому я постараюсь описать процесс покороче :)

Во время оптимизации CBS ориентируется на хранилище пакетов, извлекая оттуда информацию о состоянии и атрибутах сохранения пакетов, а также версиях компонентов. Например, если пакет помечен в качестве постоянного, система обслуживания его пропускает, оставляя в целости и сохранности.

2013-09-04 21:51:58, Info                  CBS    Skipping package [Package_for_KB2771431~31bf3856ad364e35~amd64~~6.2.1.3] since it is permanent

В случае же с версиями, CBS ищет предыдущую версию компонента, которая необходима для отката при удалении обновления. Продолжая пример с Adobe Flash на картинке выше, самой новой версией является 20760, но для корректного отката компонентов Adobe Flash необходима предыдущая версия за номером 16653.

2013-09-04 21:52:24, Info                  CBS    Appl: Selfupdate, Component: amd64_adobe-flash-for-windows_31bf3856ad364e35_0.0.0.0_none_ab9875376a174135 (6.2.9200.20760), elevation:3, lower version revision holder: 6.2.9200.16653

Сохранение предыдущей версии позволяет удалить обновление KB2857645, доставившее версию пакета 20760 (к версии файлов Adobe она не имеет отношения, как вы можете убедиться из статьи базы знаний).

Ситуацию запутывает тот факт, что предыдущей версией для 20760 считается 16653, а не 20711, но тут я ничего не могу поделать :) Что же касается версии 16384, то она была исходной, т.е. частью ОС, а не пришедшего обновления.

Остальные шесть папок были удалены, потому что с версией 20760 их ничто не связывает. Одной из них являлась 20711, пришедшая в составе KB2837385. Удаление ненужного пакета и зачистка его регистрации в системе отражаются в журнале.

Фрагмент журнала CBS.log

Если вы хотите углубиться еще дальше в темный лес системы обслуживания и владеете английским языком, рекомендую материалы из блога Джозефа Конвея:

  • Servicing Windows: Part One
  • Servicing Windows: Part Two

Какие файлы сжимаются и почему (устарело)

Этот раздел статьи был написан до того, как Microsoft изменила технологию сжатия в Windows 8.1 и портировала ее в Windows 8. Неизменным осталось лишь то, что сжатию подвергаются замененные и неиспользуемые компоненты, а в остальном раздел представляет теперь только исторический интерес. Подробности вы найдете ниже в статье.

Экономия дискового пространства при оптимизации хранилища достигается также за счет сжатия. Проводник выделяет сжатые файлы и папки синим цветом, но из корня папки WinSxS наличие сжатых файлов неочевидно. Дело в том, что сжимаются не папки целиком, а отдельные файлы. Здесь сподручнее воспользоваться утилитой TreeSize, которая сходу подсвечивает синим папки со сжатыми файлами.

Увеличить рисунок

Как видно на левой части рисунка, в Windows 8 сжатию подверглись файлы в папках Backup и Manifests, а также некоторые папки с компонентами. (В скобках замечу, что в Windows 8.1 Preview папки Backup и Manifest не сжались, что оставляет поле для исследований по мере выхода дальнейших обновлений). Утилита также умеет отображать степень сжатия для папки, что показано на правой части рисунка.

Файлы в папке Manifests сжимаются хорошо, поскольку манифесты представляют собой текстовые файлы в формате XML. Выполнив команду compact в папке, можно получить подробную статистику:

Всего файлов: 22086, каталогов: 1. Из них сжато: 19510, не сжато: 2576. Данные объемом 347 734 445 байт сохранены в 139 504 361 байт. Степень сжатия 2,5 к 1.

В CBS.log можно увидеть отчет о числе сжатых компонентов и файлов. При этом манифесты, составляющие подавляющее большинство, подсчитываются отдельно, хотя их окончательное число не указывается.

2013-09-04 21:54:44, Info CSI 00000036 NTFS compress for: [l:136{68}]"amd64_1394.inf_31bf3856ad364e35_6.2.9200.16384_none_53f8fe038fac2809" … 2013-09-04 21:59:00, Info CSI 00000570 NTFS compression complete. Total component compressed: 1338 (0x0000053a), total file compressed: 3125 (0x00000c35) … 2013-09-04 22:23:41, Info CSI 0000059c@2013/9/4:18:23:41.607 Completed compression of 19000 (0x00004a38) manifests … 2013-09-04 22:24:18, Info CSI 000005a5@2013/9/4:18:24:18.065 Completed compression of manifests

Обратите внимание на длительность выполнения операций (символами … я обозначил вырезанные из журнала строки) — сжатие заняло полчаса. Конечно, нужно сделать поправку на два момента:

  1. Система работала на виртуальной машине Hyper-V с одним выделенным процессором, 2GB RAM и VHD на SSD.
  2. Объем установленных обновлений был достаточно велик, а оптимизация папки WinSxS ранее не проводилась.

Журнал CBS не раскрывает подробностей о критериях, служащих основанием для сжатия. Но с помощью утилиты TreeSize можно увидеть, например, что сжимаются отключенные компоненты. Так, в Windows изначально отключен компонент Telnet, и все его компоненты подверглись сжатию.

Увеличить рисунок

Похожая картина наблюдается и с компонентом Hyper-V, который не активирован в моей экспериментальной системе.

Какое сжатие применяется

Этот раздел статьи я добавил значительно позже, когда появилась официальная информация об изменениях в стеке обслуживания Windows 8.1.

В Windows 8, 8.1 и 10 сжимаются компоненты, для которых уже установлены более новые версии. Изначально в Windows 8 для этого применялось сжатие NTFS. Разностное сжатие появилось только в Windows 8.1 и продолжает использоваться в Windows 10 (его также портировали в Windows 8, выпустив обновление KB2821895).

Разностное сжатие

В блоге Ask the Core Team появилась серия статей об изменениях в системе обслуживания Windows 8.1. В частности, во второй записи подробно разбирается алгоритм разностного сжатия (delta compression).

Разностное сжатие применяется только для замененных компонентов. Одна версия файла используется в качестве базовой, а остальные выражаются как «база + дельта изменений». Сжимаются только дельты, поэтому для декомпрессии необходима базовая версия файла.

Разностное сжатие применяется к актуальному компоненту на момент выполнения операции сжатия, поэтому дельты конкретных компонентов могут отличаться на разных ПК (например, в зависимости от частоты установки обновлений).

Ниже приводятся выдержки из CBS.log, где многоточия обозначают удаленные мной фрагменты. Вы видите операции сжатия, впервые появившиеся в Windows 8.1 (сам лог из Windows 10, кстати). Сначала анализ определяет кандидатов на разностное сжатие, а спустя 10 минут рапортует о завершении, после чего начинаются совсем загадочные операции Null-Delta compression.

2015-10-20 15:10:50, Info CSI 00000026 Scavenge: Planning Complete. The following actions will be performed: Regeneration Candidates: 0 Removal Candidates: 3 Superseded/LDR (Delta Compression) Candidates: 133 Null-Delta Compression Candidates: Mutable file Candidates: 1 Boot-Recovery Candidates: 14 Deletion Candidates (Non Driver): 0 Driver Deletion Candidates: 1 ... 2015-10-20 15:20:42, Info CSI 00000255 Delta compression complete. Total number of components compressed: 133 (0x00000085), Total file compressed: 245 (0x000000f5), Total files untouched: 257 (0x00000101), Total file skipped due to backing: 0, Total file size compressed:472088576, Total delta file size: 23932928, compression ratio: 94% 2015-10-20 15:20:42, Info CSI 00000256 Beginning Null-Delta compression of components with mutable files ... 2015-10-20 15:20:42, Info CSI 0000025b Null-Delta compression of mutable files complete. Total files compressed: 1, Total files untouched: 0, Total files skipped due to backing: 0, Total file size compressed:16384, Total delta file size: 4096, compression ratio: 75% 2015-10-20 15:20:42, Info CSI 0000025c Beginning Null-Delta compression of boot-recovery components ... 2015-10-20 15:21:31, Info CSI 00000295 Null-Delta compression of boot-recovery components complete. Total files compressed: 26 (0x0000001a), Total files untouched: 0, Total files skipped due to backing: 0, Total file size compressed:102842368, Total delta file size: 35291136, compression ratio: 65%

В комментариях к записи блога я поинтересовался, можно ли визуально определить файлы под воздействием разностного сжатия. Сотрудники Microsoft ответили, что файлы получают атрибут «Сжатый», однако я пока не нашел этому подтверждений. В журнал имена сжимаемых файлов не пишутся (в отличие от пропускаемых), а в Windows 10 у меня в папке WinSxS вообще нет файлов с атрибутом «Сжатый», хотя в Windows 8.1 таковые имеются. Все очень запутано :)

Сжатие NTFS

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

Неясности

Публикации в блоге Ask the Core Team раскрыли принципы технологии, но породили вопросы о тонкостях процесса. Я задал вопросы о regeneration, null-delta compression и т.д. в комментариях ко второй записи, но ответа не получил. Возможно, когда-нибудь срыв покровов произойдет…

Удаление всех предыдущих версий компонентов (8.1 и новее)

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

Для этого эксперимента я использовал виртуальную машину с 32-разрядной Windows 8.1 Preview, поэтому версии Adobe Flash отличаются от описанных выше на примере 64-разрядной ОС.

Увеличить рисунок

На рисунке выше вы видите состояние:

  1. До очистки.
  2. После очистки с ключом /StartComponentCleanup, что оставляет возможность откатиться к предыдущей версии.
  3. После очистки с ключом /StartComponentCleanup /ResetBase, что не оставляет возможности отката.

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

Надеюсь, теперь белых пятен в механизме очистки папки WinSxS стало меньше :) А вы уже проводили оптимизацию папки WinSxS в Windows 8? Напишите в комментариях, сколько места сэкономили!

www.outsidethebox.ms


Смотрите также