Что за папка Winsxs и почему она такая большая?, только для висты и семеры !!

Автор aga5510, 27-09-2013, 22:36:10

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

aga5510

Люди часто, когда смотрят на установленную Windows Vista или Windows Server 2008, спрашивают "Почему папка WinSxS такая большая?". Чтобы ответить на этот вопрос сначала я должен рассказать о компонетизации и том, каким образом она присутствует в 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-версию компонента, а проверить самую новую версию компонента, доступную в системе. Так как каждый компонент в системе подвержен изменениям, то это, в свою очередь, может вызвать изменения в других компонентах. Но так как отношения между всеми компонентами в системе описаны, то мы можем отвечать на эти изменения так, как мы не могли в предыдущих версиях ОС.