Почему папка /winsxs становится настолько большой, и ее можно уменьшить?

Виртуальная машина Vista, в которой я использую, имеет только 10 ГБ виртуальный жесткий диск, и я беспокоюсь о том, что с течением времени это заканчивается.

Я использовал TreeSize , чтобы проверить виновных.

введите описание изображения здесь>> </p>

<p> И основным виновником является <strong> <code>/winsxs</code> или .

введите описание изображения здесь

Что такое папка Windows Side By Side? Ну, это здесь довольно хорошо объясняется .

  

Все компоненты в операционной системе находятся в папке WinSxS - на самом деле мы называем это местоположение хранилищем компонентов. Каждый компонент имеет уникальное имя, которое включает в себя версию, язык и архитектуру процессора, для которой он был создан. Папка WinSxS - это единственное место нахождения компонента в системе, все другие экземпляры файлов, которые вы видите в системе, «выложены» жесткой привязкой из хранилища компонентов. Позвольте мне повторить, что последняя точка - есть только один экземпляр (или полная копия данных) каждой версии каждого файла в ОС, и этот экземпляр находится в папке WinSxS. Таким образом, с этой точки зрения, папка WinSxS - это целая часть всей ОС, называемая «плоской» в нижестоящих операционных системах. Это также объясняет, почему вам больше не будет предложено использовать носитель при выполнении таких операций, как System File Checker (SFC) или при установке дополнительных функций и ролей.

     

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

Множество других людей , также жалуясь на размер папки /winsxs :

  

Сотрудник недавно получил его каждые два года работы обновления ноутбука и был в середине загрузки его новый ноутбук с Vista. По какой-то причине его жесткий диск C: был разделен только на 25 ГБ, а остальная часть пространства зарезервирована для гораздо большего диска D:.

     

В любом случае, после загрузки многих обновлений Windows, у него оставалось практически свободное место на C :, и по какой-то причине каталог WinSxS раздувался до 8 ГБ.

     

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

Мне все равно, что все эти дубликаты файлов безопасны, но я do заботятся о взрывах VM из-за ошибки в дисковой памяти. Итак, can /winsxs можно безопасно сократить каким-либо образом? Не похоже, что это может быть .

  

Администраторы не должны по какой-либо причине взять на себя ответственность за очистку каталога /winsxs . Это может помешать работе Windows Update и MSI после этого работать должным образом. Предотвращение случайного удаления из каталога выполняется путем размещения в дескрипторе надежного дескриптора безопасностикоторый наследует своих детей.

Если эта папка /winsxs становится больше, мне придется перерисовать эту виртуальную машину .., которую я действительно не хочу делать!

172 голоса | спросил Jeff Atwood 15 J000000Wednesday09 2009, 10:27:46

12 ответов


6

Похож, что наконец-то есть способ сделать это в Windows 8.1 пакете обновления 1 и Windows Server 2012 R2 .

Инструмент анализа хранилища компонентов:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

В конце сканирования пользователь получает отчет о результатах (фактический размер папки winsxs) следующим образом:

результаты анализатекомпонентов

Очистка хранилища компонентов:

  

Сегодня очистка хранилища компонентов должна запускаться вручную конечным пользователем, либо путем запуска DISM, либо с помощью мастера очистки диска. Чтобы сделать очистку хранилища компонентов более полезной для среднего конечного пользователя, она будет добавлена ​​в задачу обслуживания, автоматически экономя дисковое пространство для конечных пользователей. Чтобы включить это, будет сделано внесение изменений, позволяющих удалить замененные драйверы входящих сообщений без необходимости перезагрузки (сегодня все установки /удаления драйверов, выполняемые CBS, требуют перезагрузки).

  1. Dism.exe /online /Cleanup-Image /StartComponentCleanup

  2. Инструмент «Очистка диска», «Очистка системных файлов».

    инструмент очистки диска

  3. schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

ответил Jeff Atwood 11 MaramTue, 11 Mar 2014 01:44:38 +04002014-03-11T01:44:38+04:0001 2014, 01:44:38
100

Есть хорошая команда, которая очищается после установки Windows 7 с пакетом обновления 1 (это спасло меня примерно на 3 ГБ):

DISM /online /cleanup-Image /spsuperseded

Должен выполняться из командной строки с повышенными правами

ответил GvS 9 MarpmWed, 09 Mar 2011 22:38:42 +03002011-03-09T22:38:42+03:0010 2011, 22:38:42
43

TL; DR

winsxs содержит жесткие ссылки . Это не займет столько дополнительных данных, как вы думаете.

Жесткая ссылка похожа на «ярлык» или «указатель» на фактический файл, расположенный где-то на вашем диске. Жесткая ссылка не занимает само пространство жесткого диска: она просто служит в качестве перенаправления.

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


winsxs не проблема

... это решение! (Ну, в основном .)

Сводка, отмеченная как ответ Ронни Вернона, MVP, Модератор, говорит здесь :

  

Ничего себе, долгая дискуссия о hardlinks и winsxs. В любом случае, вот некоторые   резюмированные моменты того, что я понял о том, как все это работает.

     

Чтобы начать с ответа на вопрос OP с идеальным ответом   выше Andre.Ziegler, вы не трогаете winsxs. Возможно, некоторые из   файлы могут быть обрезаны как mp3, avi и т. д., но остальные   системные файлы должны быть оставлены в покое . Я тоже использую расширение командной строки   как указано выше Ронни Верноном, легкий способ увидеть, какие из них тяжелые   (красная стрелка) и которые являются простыми файлами.

     

Перед тем как добраться сюда, я увидел во многих местах людей, просящих   после установки SP1 для Windows 7, например vsp1cln. Там есть   нет специального инструмента, все оно интегрировано в очистку диска   оказание услуг. Одно замечание, которое я хотел бы сделать здесь, это то, что даже если опция   говорит, что он удалит несколько сотен МБ после того, как я очистил свой диск   служба удалила около 3 ГБ лишних файлов, поэтому она варьируется от   системы к системе. Забавно, теперь у меня еще больше места, чем раньше   установка SP1. Хороший, MS.

     

Что касается жестких ссылок, меня поразила путаница, созданная вокруг   их. Я не Linux-выродка, и я обычно использую только мягкие ссылки ...   для меня это достаточно, но люди не понимают, как работают тяжелые   и как рассчитывается размер.

     

Группа выбранных файлов, ссылок или нет всегда будет считаться   сумма. Это означает, что если я возьму файл 10 МБ и сделаю 2 жестких ссылки,   выбор всех трех из них будет иметь 30 МБ, и это правильный   size, потому что в отличие от мягких ссылок, связанных с файлом   оригинальной записи в главном файле и имеют 0 байт, жесткие ссылки   связанные с самими данными , имеют свою собственную запись в MFT, но указывают на   тот же адрес данных, очевидно имеющий размер как размер фактического   данные, то же время, атрибуты и т. д. Почему, ниже.

     

Сколько осталось на диске? Простой: ровно столько, сколько   собственные отчеты о свойствах . Не выбирайте все файлы, скрытые и   не скрытые на C и сравнения, или с использованием инструментов , которые делают это   автоматически, потому что не будет отображаться фактическое использование жесткого диска. Зачем?   Потому что:

     
  1. эта операция делает список всех выбранных файлов, включая жесткие ссылки, как отдельные файлы, берет каждый из них и добавляет размеры   up, свойства дисков учитывают фактические сохраненные данные.
  2.   
  3. не все файлы будут считаться, папки, защищенные от прохода, и файлы от чтения не будут считаться, а система   Информация об объеме обычно имеет очень большие файлы, защищенные только в этом   Способ литий>   
  4. этот номер полезен только в случаях передачи файлов, если файлы, ссылки и т. д. необходимо скопировать на DVD или NAS, так они будут   занимать, и ссылки не будут сохранены, так как они NTFS   конкретные функции, недоступные или доступные в разных   ISO, UDF, NFS и другие файловые системы, но они будут клонированы.
  5.   

Сделайте тест ... скопируйте 10 МБ-файл, a.exe, издругой привод и   обратите внимание на то, как свободное пространство падает на 10 МБ. Сделайте жесткую ссылку (mklink   /H b.exe a.exe). Теперь эти два выбранных файла будут «использовать» 20 МБ в   свойства выбора , но на самом деле только 10 МБ проверено на диске   свойства , которые будут иметь такое же свободное пространство, как это было /после   копию файла. Удалите один, один, свободное пространство останется   одна и та же. Теперь удалите последний, и пространство увеличится на 10 МБ. Был   там какой-нибудь вред? НЕТ.

     

Что такое winsxs? Намного лучше dllcache. Где с dllcache в XP   у нас были копии файлов, которые фактически добавили к использованию размера, поскольку   они были клонированы, это фактически улучшает использование, но не   защиты (от вирусов). Если мошенник-деинсталлятор считает, что он должен   удалите некоторые библиотеки runtime из System32, он удалит только   ссылки, но не данные, тогда ссылки будут воссозданы, а   сохранение использования пространства данных при минимальных возможностях, лучше, чем архивирование   winsxs в кабинах и с кабинами вдоль оригинальных файлов. Также   winsxs приносит сериализацию, разделяя файлы с тем же   имя, но другая версия, для бога, и это хорошо.   /плохое, это делает их ленивыми, чтобы правильно кодировать, но это помогает, когда   они больше не хотят кодировать.

     

Я сделал это, чтобы помочь любому, кто приземляется здесь по тем же причинам   сделал ... чрезмерное «использование пространства» winsxs после SP1. И я надеюсь, что это   было полезно.

ответил Mateen Ulhaq 28 WedEurope/Moscow2011-12-28T09:58:31+04:00Europe/Moscow12bEurope/MoscowWed, 28 Dec 2011 09:58:31 +0400 2011, 09:58:31
32

Эти дубликаты и резервные копии крайне раздражают при ограниченном пространстве на диске. Будучи в том месте, единственный способ, которым я нашел, что не поставил бы под угрозу стабильность ОС, состоял в том, чтобы щедро использовать « Сжатие содержимого для сохранения дискового пространства ". Сжав все эти резервные каталоги в каталоге Windows, мне удалось уменьшить размер каталога с 6,5 до 6 ГБ без каких-либо распознаваемых побочных эффектов. Используя его на некоторых ваших материалах вне каталога Window, вы еще больше растянете свои 10 ГБ.

ответил eran 19 J000000Sunday09 2009, 15:37:43
27

Если у вас есть Vista и установлен пакет обновления 2 (SP2), вы можете очистить старые системные файлы с помощью нового средства очистки пакета обновления .

  1. Нажмите «Пуск» и «Все программы» и «Аксессуары» и «Командная строка», или нажмите «Пуск» и «Запустить» и введите cmd, чтобы открыть «Командная строка Windows»
  2. Выполните команду «Compcln.exe». Путь: «c: \ Windows \ System32 \ compcln.exe».
  3. Пользователям будет задан вопрос о том, постоянно ли поддерживать Vista SP2 в системе.
  4. Введите «Я» и нажмите «Ввод», система начнет выполнять очистку компонентов Windows.
ответил Tomas Andrle 28 J000000Tuesday09 2009, 02:17:13
21

В Windows 8 вы можете уменьшить размер папки WinSxS на удаление функций Windows :

DISM.exe /Online /Disable-Feature /Featurename:<name> /Remove

Важным является параметр /Удалить , который является новым для Windows 8 .

Самое большое пространство в WinSxS используется WindowsUpdates, который вы устанавливаете с течением времени. В Windows 8 /Windows 10 вы можете обнаруживать и удалять обновления, которые заменяются более новыми обновлениями (например, новые кумулятивные обновления IE) выполнять следующую команду:

dism.exe /online /cleanup-image /startcomponentcleanup

или запустите мастер очистки диска и выберите «Очистка Windows Update»

введите описание изображения здесь>> </p>

<p> <img src = http://support.microsoft.com/кб /2821895 .

Это обновление запускает глубокую очистку WinSxS и сжимает все файлы DLL /Exe из WinSxS, которые в настоящее время не используются, в более мелкий дельта-файл:

введите описание изображения здесь>> </p>

<p> Посмотрите на разные размеры файлов. </p>

<p> <strong> Windows 8.1 </strong> <a href = добавляет новые команды DISM . /startcomponentcleanup получает новый параметр /ResetBase, который делает ваше последнее обновление постоянным и удаляет все старые файлы, чтобы сэкономить больше места.

Вы также можете запустить новую команду dism /online /cleanup-image /analyzecomponentstore для анализа папки WinSxS:

введите описание изображения здесь>> </p>

<p> Теперь он сообщает вам, когда вы должны запустить очистку для экономии места. </p></body></html>

ответил magicandre1981 11 Mayam13 2013, 10:41:43
20

Вы можете использовать VSP1CLN.EXE , чтобы сделать SP1 постоянным, что согласно эта страница освободит компоненты с замененным пакетом SP1.

ответил Ben Lings 22 J000000Wednesday09 2009, 21:18:02
9

Хорошие новости! В настоящее время существует официально санкционированный метод от Microsoft, для Windows 7 SP1, до очистить папку WinSXS .

  1. Установить HotFix 2852386 - вы можете либо загрузить вручную, либо дождаться, когда он пройдет через Центр обновления Windows
  2. Это добавляет новый параметр в мастер очистки диска (в разделе «Очистка системных файлов»), который можно включить для «Очистки Windows Update». Отметьте эту опцию.
  3. Нажмите «ОК»

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

ответил Mark Henderson 9 +04002013-10-09T04:55:26+04:00312013bEurope/MoscowWed, 09 Oct 2013 04:55:26 +0400 2013, 04:55:26
1

Dism ++ - это то, что вы ищете ( https: //www.chuyu.me/en/index.html ).

Вы сохраните гигабайты пространства ...

Вам нужно выбрать «Замененные сборки WinSxS». Если вы это сделаете - это даст вам предупреждение о том, что эти установленные обновления не могут быть удалены. Нажмите «ОК», затем сканируйте

 введите описание изображения здесь>> </a> </p>

<p> Это даст вам представление о том, сколько места вы сэкономите. Уберите очистку, и она должна очистить это пространство. </p></body></html>

ответил 27 FebruaryEurope/MoscowbMon, 27 Feb 2017 16:52:12 +0300000000pmMon, 27 Feb 2017 16:52:12 +030017 2017, 16:52:12
1

Надеюсь, будет полезно иметь один простой oneliner, поскольку в противном случае отличный ответ Джеффа Этвуда пропускает переключатель /ResetBase.

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

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

Это работает в Windows 8.1 и более поздних версиях

ответил maoizm 27 Maypm18 2018, 14:40:21
0

Помимо вышеупомянутых решений, одним из способов получения значительного пространства является сжатие содержимого всей папки. Однако это невозможно сделать с помощью Explorer (необходимы соответствующие права), по крайней мере, начиная с Windows 7.

Эти инструкции показать, как достичь этого:

sc query msiserver 
sc query TrustedInstaller

sc stop msiserver
sc stop TrustedInstaller

sc config msiserver start= disabled
sc config TrustedInstaller start= disabled

icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS.acl" /t

takeown /f "%WINDIR%\WinSxS" /r

icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

compact /s:"%WINDIR%\WinSxS" /c /a /i *

icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t

icacls "%WINDIR%" /restore "%WINDIR%\WinSxS.acl"
del "%WINDIR%\WinSxS.acl"

sc config msiserver start= demand
sc config TrustedInstaller start= demand

sc start msiserver
sc start TrustedInstaller

Примечания /советы:

  1. Группировка отмечает рекомендуемый способ запуска этих команд, если выполняется вручную. Обычно не должно быть проблем (кроме некоторых пропущенных файлов, поскольку они используются), но результат для каждой группы должен быть проверен

  2. Я выполнил эти шаги при установке различных операционных систем дома и на работе: Win7x64, Win10x64, Windows Server 2008R2 и Windows Server 2012, и до сих пор я не видел никаких проблем.

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

ответил Alexei 7 Jam1000000amSat, 07 Jan 2017 00:41:21 +030017 2017, 00:41:21
-4

Вы можете безопасно удалить эти файлы. Если вам когда-нибудь понадобится их снова, вам просто потребуется установить еще несколько вещей.

Теперь об исправлении!

  • Откройте проводник Windows и перейдите к C: \ Windows \ System32. Найдите файл «vsp1cln.exe».
  • Щелкните этот файл правой кнопкой мыши и выберите опцию «Запуск от имени администратора».
  • Средство очистки Windows Vista Service Pack 1 удалит все резервные файлы, которые он заменил.

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

ответил Axxmasterr 28 J000000Tuesday09 2009, 01:17:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132