Что за папка WINSxS и почему она такая большая?
Люди часто, когда смотрят на установленную Windows Vista или Windows Server 2008
🕛 07.02.2011, 10:41
Чтобы ответить на этот вопрос сначала я должен рассказать о компонетизации и том, каким образом она присутствует в Windows Vista.Одним из самых больших изменений в Windows Vista по сравнению с предыдущими версиями Windows стал переход от ОС, описываемой INF-файлами, к компонентизации. Компонент в Windows - это один или несколько бинарных файлов, файл-каталог, и XML-файл, в котором описано, каким образом все это должно быть установлено. От связанных ключей реестра и служб вплоть до того, какие настройки безопасности и прав должны быть у файлов. Компоненты группируются в логические единицы, а эти единицы используются для создания разных редакций Windows.
Все компоненты операционной системы находятся в папке WinSxS. Фактически мы можем назвать эту папку хранилищем компонентов. Каждый компонент имеет уникальное имя, которое включает в себя номер версии, язык локализации и процессорную архитектуру, для которой он был собран. Папка WinSxS - единственное место в системе, где находятся компоненты, а все остальные экземпляры, которые вы можете найти в системе - это отражения, всего лишь жесткие ссылки на системное хранилище. Позвольте мне повторить последнее утверждение - в операционной системе есть только один экземпляр (или полная копия данных)каждой версии каждого файла и этот экземпляр находится в папке WinSxS. Итак, если смотреть на вопрос с такой перспективы, то папка WinSxS содержит в себе абсолютно всю ОС. Это также объясняет, почему когда вы проводите операции типа проверки системных файлов (System File Checker, SFC), установки дополнительных ролей или функций, система не запрашивает диск.
Это объясняет, почему размер папки большой с самого начала, но не объясняет, почему он со временем увеличивается. Ответ - это обслуживание. В предыдущих версиях Windows минимальным компонентом обслуживания был файл, а в Windows Vista это компонент. Когда мы обновляем определенный бинарный файл, то мы выпускаем новую версию всего компонента, и она, наряду с предыдущей версией, хранится в папке WinSxS. Более новая версия компонента интегрируется в систему, но старая версия, которая находится в хранилище, изменениям не подвергается. Это является еще одной причиной того, почему хранилище компонентов имеет такой большой размер.
Не каждый компонент, который находится в хранилище, является применимым, в смысле, что не каждый компонент должен быть спроектирован на систему. Например, в системах, где доступен, но не установлен IIS, компоненты IIS доступны в хранилище компонентов, но они проецируются в какую-либо локацию в системе, где могли бы быть использованы. Если вы знакомы с тем, как многоотраслевое обслуживание работало в предыдущих версиях Windows, то вам будет понятно, что у нас есть разные версии компонентов для каждой области распространения и уровня пакета сервисных обновлений, и все они также хранятся в папке WinSxS, даже в том случае, если они сейчас не применимы. Таким образом, Post SP1 GDR-пакет, который содержит в себе обновление для одного компонента, в итоге в папку WinSxS установит четыре версии этого компонента, а для некоторых компонентов х64-редакций ОС это число можно удвоиться.
Итак, теперь, когда вы знаете, почему хранилище может вырасти до таких больших размеров, вы наверняка спросите, почему мы не удаляем старые версии компонентов. Если говорить коротко - то причина этому надежность. Хранилище компонентов наряду с другой информацией в системе позволяет нам определить в любое указанное время какую именно версию компонента лучше всего спроектировать в систему. Это значит, что если вы удалите обновление безопасности, то мы можем установить следующую более новую версию компонента - у нас больше нет проблемы "неисправного удаления". Это также значит, что если вы решите установить опциональную функцию, то мы не просто можем выбрать RTM-версию компонента, а проверить самую новую версию компонента, доступную в системе. Так как каждый компонент в системе подвержен изменениям, то это, в свою очередь, может вызвать изменения в других компонентах. Но так как отношения между всеми компонентами в системе описаны, то мы можем отвечать на эти изменения так, как мы не могли в предыдущих версиях ОС.
Единственный способ безопасно уменьшить размер папки WinSxS - уменьшить набор возможных действий, которые система может провести, а самый простой способ сделать это - удалить пакеты, из которых первоначально устанавливались компоненты. Это может быть сделано путем удаления замененных компонентов, которые установлены у вас в системе. Первый пакет сервисных обновлений содержит файл VSP1CLN.EXE - инструмент, который сделает пакет SP1 перманентным (неудаляемым из вашей системы) и удалит все RTM-версии замененных компонентов. Это единственно возможный вариант, так как сделав первый пакет сервисных обновлений перманентным мы сможем гарантировать, что нам никогда не понадобятся RTM-версии компонентов.
Итак, да, папка WinSXS очень большая и со временем она будет увеличиваться. Я надеюсь, что данная статья помогла вам понять, почему так происходит и что вы можете с этим сделать. Заметьте, что структура обслуживания Windows и способ хранения в будущем будут меняться.