Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

Вот снимок экрана новый сервер 2008:

Каталог winsxs 3,8 ГБ

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

5,4 ГБ каталога winsxs

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

Насколько я могу судить, невозможно усечь каталог winsxs. WinSxS означает Windows Side-by-Side. В своей попытке уменьшить влияние 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 перед исправлением мошеннические манифесты, которые становятся векторами атак / эксплойтов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В 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, ​​поэтому оно может быть полезно для некоторых людей.

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

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

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

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

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

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

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

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

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

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

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

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

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

vssadmin список shadowstorage

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

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