it-swarm.xyz

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

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

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

enter image description here

И основной виновник в том, что/winsxs или папка «Windows Side-By-Side» .

enter image description here

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

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

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

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

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

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

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

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

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

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

174
Jeff Atwood

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

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

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

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

analyzecomponentstore results

Очистка магазина компонентов:

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

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

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

    disk cleanup tool

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

6
Jeff Atwood

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

DISM /online /cleanup-Image /spsuperseded

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

101
GvS

TL; DR

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

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

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


winsxs это не проблема

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

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

Вау, долгое обсуждение жестких ссылок и winsxs. Во всяком случае, вот несколько обобщенных пунктов того, что я понял о том, как все это работает.

Для начала, отвечая на вопрос ОП с идеальным ответом, опубликованным выше Андре.Зиглером, вы не касаетесь winsxs. Возможно, некоторые из файлов можно обрезать, например, mp3, avi и т.д., Но остальные системные файлы следует оставить в покое. Я также использую Link Shell Extension, как было опубликовано выше Ронни Верноном, простой способ увидеть, какие из них жестко связаны (красная стрелка), а какие - простые файлы.

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

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

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

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

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

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

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

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

44
Mateen Ulhaq

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

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

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

33
eran

Если у вас Vista и установлен SP2, вы можете очистить старые системные файлы с помощью нового Service Pack Clean-Tool .

  1. Нажмите Пуск> Все программы> Стандартные> Командная строка или нажмите Пуск> Выполнить и введите cmd, чтобы открыть командную строку Windows
  2. Выполните команду «Compcln.exe». Путь «c:\Windows\System32\compcln.exe».
  3. Пользователям будет задан вопрос, следует ли постоянно держать Vista SP2 в системе.
  4. Введите «Y» и нажмите Enter, система начнет выполнять чистку компонентов Windows.
27
Tomas Andrle

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

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

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

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

dism.exe /online /cleanup-image /startcomponentcleanup

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

enter image description here

enter image description here

enter image description here

Также убедитесь, что вы установили обновление стека обслуживания http://support.Microsoft.com/kb/2821895 .

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

enter image description here

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

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

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

enter image description here

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

21
magicandre1981

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

20
Ben Lings

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

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

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

9
Mark Henderson

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

Вы сэкономите гигабайты места ...

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

 enter image description here

Это даст вам представление о том, сколько места вы сэкономите. Хит очистки, и это должно очистить это пространство.

2
user425154

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

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

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

Это работает в Windows 8.1 и позже

1
maoizm

Помимо вышеупомянутых решений, одним из способов получения значительного пространства является сжатие всего содержимого папки. Однако это невозможно сделать с помощью проводника (необходимы соответствующие права), по крайней мере, начиная с 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. Некоторые шаги занимают довольно много времени, особенно время сжатия. Большинство шагов будут повторяться и показывать обработанные файлы. Свертывание окна командной строки может увеличить скорость.

0
Alexei