Windows 2008: каталог WinSXS бесконтрольно растет, блокируя сервер

62

Я запускаю (удаленно размещенный) виртуальный сервер с Windows 2008 Server для клиента. Изначально на нем было 10 ГБ места. В течение нескольких недель - в течение которых ничего не было сделано на компьютере, кроме обычной работы с использованием системы icket на веб-основе - Windows начала заполнять свой печально известный каталог «winsxs» настолько, что в итоге жесткий диск оказался полный и пришлось заказывать еще 5 гб. Теперь, три недели спустя, эти 5 ГБ также были использованы winsxs, и снова я не могу работать на машине. Winsxs теперь имеет размер 8 ГБ, остальные каталоги Windows - 5 ГБ.

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

Что я могу сделать? Это нормальное поведение, и если это так, как другие серверы с одинаково ограниченным пространством управляют? Есть ли что-то, что я могу выключить или включить?

Из предопределенных серверных ролей активируются только «Файловые службы» (или как это называется на английском языке, это швейцарский сервер). Кроме того, я установил Apache, MySQL и Subversion. Автоматические обновления активированы.

Изменить: проблема сохраняется.

Примечание. Мне известно, что каталог WinSXS состоит в основном из символических ссылок и что пользователи часто паникуют, глядя на его размер. Тем не менее, из 15 ГБ места у меня есть 1,5 МБ, используемых программами и данными, и ничего не осталось. Я рад, что могу даже получить доступ к чертовой машине. * Я уже высвободил 1 ГБ данных, которые были заполнены окнами Windows в течение 24 часов. Это как в фильме ужасов. Что я пробовал:

  • Установка пакета обновления 2 (который идет с compcln.exe) не вариант, так как места на диске недостаточно даже для этого.
  • На компьютере нет файла vsp1clean.exe, возможно, потому что SP1 уже включен в систему. Фактически, нигде не существует файла с именем * cln.exe.
  • Там нет теневых копий. Теневые копии не активны.
  • Насколько я могу судить, нет активных точек восстановления системы.
  • Единственная активированная роль сервера - это «файловый сервер».
  • Стандартная функция «очистки» (щелчок правой кнопкой мыши на диске C:) предлагает мне 2 МБ содержимого мусора и временных интернет-файлов.
  • Использование одного из сценариев «cleanup winsxs» для меня не вариант, все они выглядят слишком тенистыми. Я не могу найти что-то напрямую от Microsoft, чтобы решить эту проблему.
Пекка поддерживает GoFundMonica
источник
Вы решили это в конце?
UpTheCreek
@UpTheCreek на самом деле, к сожалению, нет! Поставщик предоставил нам 5 ГБ дополнительного пространства на VPS, которое Windows, к счастью, не заполнило. Но каталог Windows по-прежнему занимает 20 ГБ. Контракт скоро закончится, и мы будем менять хостинговые компании.
Пекка поддерживает GoFundMonica

Ответы:

24

Каталог WinSxS не занимает почти пространство, сообщаемое Explorer, поскольку использует жесткие ссылки на физические файлы, а не на реальные файлы. У Explorer просто есть проблемы, сообщающие о размере жестких ссылок.

Эта статья о дисковом пространстве (ссылка здесь http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) содержит отличное объяснение каталога WinSxS.

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

Christopher_G_Lewis
источник
Это звучит хорошо, однако каталог Windows, по-видимому, фактически потребляет> 12 ГБ (это 15 ГБ пространства, программы и рабочие данные занимают 2,5 ГБ, и места не осталось). Compcln.exe не существует в 2008 году, кто-нибудь знает подобную команду там?
Пекка поддерживает GoFundMonica
Возможно только для W2K8 SP2: news.softpedia.com/news/…
Christopher_G_Lewis
SP2 звучит интересно, но сервер настолько полон, что я даже не могу его установить. Я попросил у провайдера несколько дополнительных мест в течение нескольких дней, но они не оказывались слишком полезными в прошлом. Это действительно беспокоит и вызывает серьезные проблемы. Я открываю щедрость и добавляю несколько скриншотов.
Пекка поддерживает GoFundMonica
Я предполагаю, что переоснащение машины и запуск обновлений не вариант для вас?
черничные
Только в качестве самого последнего средства, так как я вложил много работы, чтобы все настроить ... Это, вероятно, решило бы это, но я был бы очень рад обойти это.
Пекка поддерживает GoFundMonica
18

Я был в той же лодке, что и ты. У меня было 5 абсолютно новых виртуальных машин 2008 года, и я наблюдал за ними, постоянно занимая все больше места на диске в течение последнего года. Позвольте мне проиллюстрировать это с помощью windrstat.

Вот снимок экрана совершенно нового сервера 2008 года :

альтернативный текст 3.8 ГБ каталог winsxs

Теперь вот снимок экрана сервера производства 2008 :

альтернативный текст 5.4 ГБ каталог winsxs

Наконец, снимок экрана совершенно нового сервера 2008R2 : альтернативный текст каталог winsxs 5.4 ГБ

Из того, что я могу сказать, нет возможности обрезать каталог winsxs. WinSxS означает Windows бок о бок. В своих попытках уменьшить эффект DLL DLL (т.е. зависимостей) Microsoft решила сохранить каждую версию каждой DLL, когда-либо установленной в вашей системе, в каталоге winsxs.

Это означает две вещи (я думаю):

  1. Хотя в winsxs есть несколько жестких ссылок, единственными жесткими ссылками должны быть ссылки текущих библиотек DLL. Другими словами, текущие библиотеки DLL, которые активны в системе, жестко связаны с этой папкой winsxs.

  2. Все предыдущие версии библиотек DLL по-прежнему доступны и сохранены в каталоге winsxs. Как вы можете видеть во всех примерах, если бы каталог winsxs действительно был «в основном жесткими ссылками», он никак не мог бы занять более 50% вашего текущего использования диска. Теперь, даже если бы это было правдой, что каталог winsxs является «в основном жесткими ссылками», использование 50% означало бы, что весь ваш диск C: был жестко связан с каталогом winsxs.

Я перепробовал все. Удаление старых файлов, удаление исправлений, удаление каталогов "$". Все.

В итоге я увеличил все разделы C: на всех моих серверах до 30 ГБ каждый. Это будет только временное исправление, так как каталог winsxs будет продолжать расти. Хорошая новость, поскольку последняя версия NTFS позволяет расширять разделы без перезагрузки. Как удобно

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

На каждом новом Windows 2008/7 / Vista я чувствую, что 30 ГБ C: почти правильно. Достаточно места (пока) для исправлений, логов и нескольких приложений.

Я не могу дождаться, пока кто-нибудь все это выяснит и начнет реактивировать пред-патч DLL с мошенническими манифестами , которые станут векторами атаки / эксплойта.

Джозеф Керн
источник
1
Спасибо, если не появится чудесный способ похудеть WinSXS, я приму этот ответ, чтобы сообщить мне, что я не единственный, с кем это происходит. Жаль, что, похоже, нет решения. Обновление до 30 Гб будет сложно оправдать, так как это внешний платный хостинг. Может быть, я вернусь к 2003 году - но это тоже звучит глупо ...
Пекка поддерживает GoFundMonica
1
Да, я тоже не в восторге от этого. Похоже, что winsxs не является набором жестких ссылок. Скорее, он проецирует жесткие ссылки на остальную часть системы, но, похоже, по этому поводу также существуют некоторые разногласия. winvistaclub.com/f16.html ...
Джозеф Керн
Я также хотел упомянуть, что у меня не включены роли сервера ни на одном из серверов, которые я использовал в качестве примеров. Рабочий сервер является сервером Apache Tomcat. И программа, которую я использовал, чтобы найти место на диске - windirstat.info
Джозеф Керн
5
MS заявляет, что минимальное дисковое требование составляет 32 ГБ: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis
5

15 ГБ, по моему опыту, не помогут, особенно если это 64-битный компьютер с некоторой активностью ...

Расширение диска VPS, а затем системного раздела должно быть простым, без необходимости переустанавливать что-либо, каким бы дорогим оно ни было. Предложение системного диска объемом менее 60 ГБ для современного Windows Server VPS не кажется продуманным с первого взгляда, даже если ~ 30 ГБ может его сократить на некоторое время: 7

Переход на 32-разрядную установку устранит некоторые накладные расходы, а переход на Server Core удалит многое. Мой 32-битный файловый сервер Server 2008 Core, который запускает svnserve, dfs, службу печати и т. Д. И регулярно обновляется, составляет около 5 ГБ ... в то время как мой 64-битный стандарт Server 2008, который обслуживает веб-приложения (asp.net и php с использованием IIS) сейчас занимает 30 ГБ. Обе эти метрики, конечно, исключают хранилища / разделы данных, только систему Windows, и оба являются лишь примерами. У меня есть 64-битные системные диски Server 2008, которые сейчас занимают от 10 до 35 ГБ.

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

Оскар Дювеборн
источник
5

Это, вероятно, слишком поздно для вас, и только на основе опыта Vista, но:

  1. Не верьте тем, кто говорит: «В основном это жесткие ссылки, поэтому папка не такая большая, как кажется» - это правда, но если вам не хватило места на диске, она была слишком большой.
  2. Единственное «лекарство», которое когда-либо предлагалось, - это удаление приложений, которые добавили в папку раздутие, но я не знаю документированного способа найти виновных.
  3. Моим «лекарством» после того, как я не смог найти удовлетворительных ответов, было жестоко удалить самые большие (и нежелательные) папки, например:

    • 6 версий «Microsoft поиска на естественном языке», ~ 300 КБ каждая
    • Многие восточные шрифты я никогда не буду использовать (иногда 6 vns, в основном идентичные)
    • и т. д.

Предполагая, что вы начинаете с хорошей резервной копии (образа), попробуйте и посмотрите!

Мартин Герхольд
источник
4

Если это возможно, вы можете попробовать переместить WinSXS на другой раздел в качестве обходного пути. Насколько мне известно, нет никакого способа избавиться от содержимого WinSXS. Эта милая маленькая штучка находится в центре работы Vista / Win2008, так что ... я не слышал ничего лучшего, как перенести ее в другой раздел.

Вот ссылка на блог, описывающий, как это сделать: Нажмите

Я бы посоветовал вам сделать полное резервное копирование (даже лучше: образ) всего раздела C: перед тем, как выполнить процедуру. Напоминаю, что я пробовал это только на Vista, а не на Win2008 Server.

imagodei
источник
Хорошая идея, но в моем случае (это VPS без альтернативного хранилища), к сожалению, это не вариант.
Пекка поддерживает GoFundMonica
--- и сделать изображение не так просто по той же причине - иначе я бы сделал его и попробовал запустить его на своей машине для дальнейшего изучения.
Пекка поддерживает GoFundMonica
3

Если основным виновником является WindowsUpdate, то я бы сказал, что единственной альтернативой покупке дополнительного места или выполнению операции с системными файлами является ограничение роста, вызванного удачными обновлениями Microsoft.

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

Таким образом, вы можете отключить автоматические обновления, а затем ОЧЕНЬ тщательно выбирать, какие «важные» обновления применять. Применяйте только те из них, которые исправляют уязвимости, НАПРЯМУЮ ставящие под угрозу ваш план безопасности. Большинство «важных» обновлений, вероятно, не применимы к вашему сценарию безопасности, и если они это сделают, вы, вероятно, можете изменить свой план безопасности, чтобы обойтись без них (например, не используйте IE на сервере, используйте альтернативные файловые службы, усилите сетевую безопасность) ,

Матиас Нино
источник
3

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

У меня есть эта проблема на Storage Server 2008 и DC (Server 2008). Никакие другие программы, кроме обновлений Windows, не были установлены на DC, оба сервера занимают 15 ГБ пространства под WinSXS. Сервер хранения был предустановлен HP с 40 ГБ на C:, поэтому я тоже страдаю от этой проблемы. До 5 ГБ свободного места.

Это было исправлено в Windows 8 / Server 2013 с помощью DISM для очистки замененных обновлений (dism.exe / online / cleanup-image / startcomponentcleanup), поэтому ясно, что это проблема, которую они признали, к сожалению, без какого-либо исправления, кроме обновления для тех, кто застрял с 2008.

NickIzk99
источник
3

В Windows Server 2008 R2 вы можете использовать DISM для очистки WinSxS, конечно же, вы не сможете откатить обновления после этого. Вот объяснение: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

В итоге вам нужно выполнить следующую команду от имени администратора:

DISM.exe /online /Cleanup-Image /spsuperseded

Я знаю, что это может быть неуместным решением для вас, поскольку у вас Windows Server 2008 (очевидно, не R2), но я нашел этот вопрос, когда искал решение для R2, ​​поэтому оно может быть полезно для некоторых людей.

Ynhockey
источник
это удаляет только файлы pre sp1, а не файлы из исправлений, которые пришли позже.
Юбер Карио
1

Пара предложений:

  • Где ваш файл подкачки?

  • Настройте тестовый компьютер с тем же программным обеспечением, чтобы увидеть, сможете ли вы воспроизвести проблему. Это определенно не нормально, и единственное, о чем я могу думать, это то, что что-то на этом блоке постоянно модифицирует DLL (или что-то в этом роде), и поэтому Windows постоянно делает из нее резервные копии.

15 ГБ очень мало для установки Windows 2008 - мой стандартный диск C: для сборок Windows 2008 - 60 ГБ.

Джон Ротлисбергер
источник
15 ГБ - это размер пакета провайдера виртуального хостинга, и каждое расширение (мы начали с 10 ГБ) очень дорого. Вот почему я не могу переместить файл подкачки куда-либо еще.
Пекка поддерживает GoFundMonica
О, я забыл: по той же причине, копировать машину не так просто сделать. Это будет последним средством, если ничего не работает.
Пекка поддерживает GoFundMonica
Так что смени провайдера.
TomTom
1

http://tech.xlab.si/2009/07/move-winsxs-folder/

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

techsmarty
источник
Это ссылка из ответа Имагодея.
Сис Тиммерман
1

Microsoft предъявляет системные требования для Server 2008: «Дисковое пространство: минимум 32 ГБ или более».

http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx

Как вы думаете, почему он может комфортно работать на половине этого пространства?

TessellatingHeckler
источник
Я арендую решение VPS у крупного хостинг-провайдера, который изначально представлял собой пакет объемом 10 ГБ с предустановленным сервером 2008 года. Я предполагаю, что они должны были как-то это предусмотреть. Крупные провайдеры имеют 10GB или 20GB Windows , пакеты: смотри , например bit.ly/h0AZsP . Мне провайдер сказал, что у меня дело
странное
Моя ошибка, я связал с требованиями Server 2008 R2 SP1. Для сервера 2008 требуется минимум 8 ГБ - microsoft.com/latam/windowsserver2008/sysreqs.mspx - но все равно рекомендуется 40 ГБ.
TessellatingHeckler
спасибо за ссылку. Тем не менее, может случиться так, что ОС была обновлена ​​между - я буду исследовать
Pekka поддерживает GoFundMonica
0

Один из вариантов использования - если это просто дешевый старый VPS, который вы используете для простых вещей, то стоит включить сжатие NTFS на диске или в определенных папках:

Это может выдавить немного места из диска. В статьях говорится, что это для XP, но это те же шаги на Win7 / 2008:

Дэвид д С е Фрейтас
источник
0

Я столкнулся с той же проблемой. Конечно, отчасти виноват WinSxs ... Но я думаю, что проблема частично связана с такими инструментами, как WinDirStat, которые одинаково подсчитывают размеры файлов и переходы к файлам. Соединение - это только указатель на файл, а не дубликат всех блоков, составляющих файл.

Я обнаружил, что VSS является более серьезным виновником этой проблемы. Используйте следующие команды, чтобы проверить, занимает ли VSS слишком много места на диске, освободить это пространство или установить меньший предел:

vssadmin список shadowstorage

vssadmin Удалить ShadowStorage / For = C: / On = C:

vssadmin Изменить размер ShadowStorage / For = C: / On = C: / MaxSize = 20%

Clayton
источник