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

105494
Jeff Atwood

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

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

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

И основной виновник - это /winsxsпапка Windows Side-By-Side .

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

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

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

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

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

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

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

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

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

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

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

171
TreeSize Free ... Я использую http://windirstat.info/ для этой цели ;-) Steve Schnepp 10 лет назад 24
Разве вы не можете увеличить виртуальную машину и расширить основной раздел? Sam Saffron 10 лет назад 6
Вы можете использовать это: http://windowsfixup.com/2009/05/winsxs-folder-taking-up-too-much-disk-space-fix/ лично я бы держался подальше от этого, если бы я не мог найти исходный код Sam Saffron 10 лет назад 1
В winsxs много жестких ссылок, поэтому о размере часто сообщают. Greg D 10 лет назад 11
@sam: это файл летучей мыши. Источник прямо там ... Quintin Par 10 лет назад 0
http://omnicognate.wordpress.com/2009/10/05/winsxs/ Brad Gilbert 10 лет назад 1
Вы не упомянули тот факт, что большинство этих файлов являются жесткими ссылками, поэтому Windows фактически просто искажает размер папки. См. Также [здесь] (http://social.technet.microsoft.com/Forums/en-US/w7itproperf/thread/09578403-a363-49ac-beb1-33f0da8d0e25/) и [здесь] (http: // serverfault. com / a / 79526/41533) * (кстати, скриншоты во втором ответе сервера о сбое имеют отношение к windirstat, +1 к этому!) * BlueRaja - Danny Pflughoeft 8 лет назад 0
В этом месяце для клиентов win7sp1 выпущено обновление, которое удаляет замененные обновления Windows и экономит много дискового пространства. Пожалуйста, прочитайте этот блог http://blogs.technet.com/b/askpfeplat/archive/2013/10/07/breaking-news-reduce-the-size-of-the-winsxs-directory-and-free-up- дисковое пространство с новым обновлением для windows-7-sp1-clients.aspx для большей ясности. algo-geeks 6 лет назад 0
Первый вопрос по SuperUser puretppc 6 лет назад 2
«Администраторы не должны по какой-либо причине брать на себя ответственность за очистку каталога / winsxs». Но вы можете. Если вы хорошо знаете Windows, она может хорошо работать, и вы можете удалять компоненты. Но это также может дать довольно ... интересные ... результаты. Мне было очень весело с этим в прошлом. По сути, вы можете удалить каждую часть операционной системы. Windows может терпеть на удивление много, особенно если вы не перезагружаетесь, но если вы удалите не те части, это может стать нереально пригодным для использования. Fabian Röling 2 года назад 0

12 ответов на вопрос

100
GvS

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

DISM /online /cleanup-Image /spsuperseded 

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

отлично, я просто думал о чистке Windows 7 SP1 Jeff Atwood 8 лет назад 2
Существуют ли другие команды для Windows 7, которые также могут удалять резервные копии обновлений без SP? galacticninja 8 лет назад 6
@galacticninja - К сожалению, я не знаю, если они вообще существуют GvS 8 лет назад 0
Отлично! Использовал это на сервере Windows 2008 R2 и размер папки winsxs изменился с 11 до 6,5 ГБ. miha 8 лет назад 0
Просто использовал эту команду, чтобы уменьшить мой размер Windows примерно на 3 ГБ. Похоже, это было из-за совершенно ненужного пакета Ultimate Edition (у меня есть Home Premium). Will Bickford 8 лет назад 0
+1 это круто Просто чтобы прояснить это, запуск этого удалит вашу способность откатывать пакет обновления (не то, что вы должны делать это ...). TM. 8 лет назад 1
Я перешел с папки winsxs 10,1 ГБ на 6,5 ГБ с этим (win7 sp1) TM. 8 лет назад 0
Моя папка winsxs уменьшилась на 3,5 ГБ, но у меня осталось свободное место (которое [я] (http://social.technet.microsoft.com/Forums/en-US/w7itproperf/thread/09578403-a363-49ac-beb1 -33f0da8d0e25 /) [сказано] (http://serverfault.com/questions/79485/windows-2008-winsxs-directory-growing-uncontrollably-blocking-server/79526#79526) является действительным правильным числом) не пошел на всех. Бессмысленно. BlueRaja - Danny Pflughoeft 8 лет назад 0
В качестве альтернативы вы можете использовать параметр «Очистка системных файлов» в инструменте «Очистка диска» и удалить файлы резервных копий пакета обновления. Michał T 7 лет назад 8
просто перешел с 14gb на 8.61 с этим Maslow 7 лет назад 0
Я сэкономил 3,6 ГБ моего почти полного SSD. Wernight 7 лет назад 0
@ Пироги, я сначала запустил Очистку диска, и DSIM все еще избавился от дополнительных ~ 3 ГБ (измерение% свободного места на диске, а не размера папки). Так что стоит делать и то и другое. matt wilkie 7 лет назад 5
@ пироги, это не будет делать то же самое. UpTheCreek 6 лет назад 0
@ UpTheCreek, ты уверен? После выполнения очистки диска, очистки системных файлов я получаю `C: \ Windows \ system32> DISM / online / cleanup-Image / spsuperseded Средство обслуживания образа развертывания и управления им. Версия: 6.1.7600.16385 Версия образа: 6.1.7600.16385 продолжить: не найдены файлы резервных копий пакета обновления. Операция завершена успешно. Cees Timmerman 6 лет назад 3
@CeesTimmerman команда работает только если вам есть что удалить Ramhound 5 лет назад 0
43
Mateen Ulhaq

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. И я надеюсь, что это было полезно.

Разве этот ответ не является чрезвычайно важным аспектом, который полностью отсутствует в принятом ответе? mafu 4 года назад 0
32
eran

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

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

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

Я попытался сжать его, и я говорю «Доступ запрещен» к папке, а затем poqexec.log. Предполагается, что это был замок для чтения. Что-нибудь, чтобы обойти это? Quintin Par 10 лет назад 2
На самом деле, вы все еще ставите под угрозу стабильность вашей ОС. Папка WinSxS НЕ должна быть сжата. На самом деле, это довольно плохая идея. Просто гуглите «сжать winsxs», и вы узнаете. Hello71 9 лет назад 1
@ Hello71: Обратите внимание, что он сжимает только резервную папку. Tom Wijsman 9 лет назад 0
@ Tom Wijsman Это папка '/ winsxs / backup', верно? @eran Будет ли это работать так же с Windows 7? galacticninja 8 лет назад 0
@galacticninja: Да, это та папка. Да, это работает на Windows 7 ... Tom Wijsman 8 лет назад 0
@ Tom Wijsman Я получил ту же проблему, что и @Quintin Par (сообщение об отказе в доступе). Знаете ли вы какие-либо обходные пути? Это на Windows 7 Ultimate, под учетной записью администратора. galacticninja 8 лет назад 0
@galacticninja: Получите разрешения на столько, сколько вы можете получить (сначала получите право собственности, а затем рекурсивно получить разрешения для своей учетной записи администратора), а затем сжимайте, вам не нужно беспокоиться о том, что один файл журнала не будет сжат. Tom Wijsman 8 лет назад 0
Я не уверен, что эта техника хорошая идея - многие файлы в дереве winsxs являются жесткими ссылками. Будет ли сжатие этих файлов сжимать все экземпляры файла? Там могут быть некоторые непредвиденные последствия производительности. duffbeer703 8 лет назад 6
Сжатие, чтобы сэкономить 1,5 ГБ места, не стоит, диски дешевы. Fiasco Labs 6 лет назад 0
@FiascoLabs, вы заметили, что это 4-летний вопрос, который конкретно относится к диску 10 ГБ? С таким же успехом можно сказать, что «никто не использует Vista». Это могло бы быть правдой сейчас, но не было так в то время, когда был задан вопрос. eran 6 лет назад 3
@eran Все же все вопросы Win7 о winsxs закрываются как дубликат этого вопроса Tobias Kienzler 6 лет назад 1
Операционная система никогда не должна располагать более чем 2 ГБ дискового пространства для своих файлов. Признаки раздувания ИМХО. И в довершение всего, MS хочет, чтобы ему было трудно отказаться от сохранения дерьма и вздутия. user55570 2 года назад 0
27
Tomas Andrle

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

  1. Нажмите Пуск> Все программы> Стандартные> Командная строка или нажмите Пуск> Выполнить и введите cmd, чтобы открыть командную строку Windows
  2. Выполните команду «Compcln.exe». Путь «c: \ Windows \ System32 \ compcln.exe».
  3. Пользователям будет задан вопрос, следует ли постоянно держать Vista SP2 в системе.
  4. Введите «Y» и нажмите Enter, система начнет выполнять чистку компонентов Windows.
Я не мог найти это в моем Vista SP1 pencilslate 10 лет назад 0
Да, это, вероятно, новинка в Vista SP2. Tomas Andrle 9 лет назад 0
Не так много сэкономил для меня, но я могу подтвердить, что инструмент существует, и он спас мне плюс itj 9 лет назад 4
21
magicandre1981

In Windows 8 you can reduce the size of the WinSxS folder by removing Windows Features:

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

The important thing is the /Remove parameter which is new to Windows 8.

The most space in WinSxS is used the WindowsUpdates which you install over the time. In Windows 8/Windows 10 you can detect and remove Updates which are replaced by newer updates (like newer cumulative IE Updates) be running this command:

dism.exe /online /cleanup-image /startcomponentcleanup 

or running the disk cleanup wizard and select "Windows Update Cleanup"

enter image description here

enter image description here

enter image description here

Also make sure you've installed the servicing stack update http://support.microsoft.com/kb/2821895.

This updates run an in deep cleanup of WinSxS and compresses all DLLs/Exe files, from WinSxS which are not currently in use, into smaller delta file:

enter image description here

Look at the different file sizes.

Windows 8.1 adds new DISM commands. The /startcomponentcleanup gets a new parameter /ResetBase which makes your last Update permanent and removes all older files to save more space.

You can also run a new command dism /online /cleanup-image /analyzecomponentstore to analyze the WinSxS folder:

enter image description here

It tells you now when you should run the cleanup to save space.

Это теперь доступно и для Windows 7 SP1: http://support.microsoft.com/kb/2852386 Mark Henderson 6 лет назад 3
20
Ben Lings

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

Эти парни потеряли 7 ГБ с помощью этого инструмента: http://www.bit-tech.net/blog/2009/07/24/winxs-why-my-vista-install-bloated-to-28gb/ hyperslug 10 лет назад 5
9
Mark Henderson

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

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

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

6
Jeff Atwood

Looks like there is finally a way to do this in Windows 8.1 service pack 1 and Windows Server 2012 R2.

Component store analysis tool:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

At the end of the scan, the user gets a report of the results (actual size of the winsxs folder) like this:

analyzecomponentstore results

Component store cleanup:

Today, Component Store Cleanup must be triggered manually by an end-user, either by running DISM, or by using the Disk Cleanup Wizard. In order to make Component Store Cleanup more useful for the average end-user, it will be added into a maintenance task, automatically saving disk space for end-users. To enable this, a change will be made to allow uninstallation of superseded inbox drivers without requiring a reboot (today, all driver installs/uninstalls done by CBS require a reboot).

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

  2. Disk Cleanup tool, Clean up system files button.

    disk cleanup tool

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

уже опубликовано много лет назад: http://superuser.com/a/594216/174557 Не нужно публиковать одно и то же дважды;) magicandre1981 5 лет назад 4
2
Journeyman Geek

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

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

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

enter image description here

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

Должны быть предоставлены конкретные инструкции по использованию этой программы. Я могу получить программу от Github, но не могу перейти по указанной вами ссылке. Ramhound 2 года назад 1
Я пробовал это на виртуальной машине - кажется довольно быстрым и, насколько я могу судить, ничего не сломал. Я мог бы поиграть с этим, так как он, кажется, имеет несколько изящных функций после установки (ооо, резервные копии драйверов!). Я отредактировал ваш ответ с помощью основных шагов и снимка экрана. Надеюсь, вы должны увидеть разницу, и вскоре Journeyman Geek 2 года назад 1
Отличный инструмент! В отличие от WinSXSLite, он работал и освободил для меня почти 8 ГБ места. Suncatcher 2 года назад 0
1
maoizm

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

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

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

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