Безопасная очистка папки WinSXS в Windows Server 2012 | Windows для системных администраторов

Безопасная очистка папки WinSXS в Windows Server 2012

Прежде чем говорить о безопасном способе очистки папки WinSxS в Windows Server 2012, попробуем понять, что же это за папка такая, что в ней хранится и почему со временем она увеличивается в размерах.

Если вы помните, при установке дополнительных компонентов в Windows Server 2003 мастер установки требовал вставить в CD-Rom установочный диск , либо указать путь к каталогу с дистрибутивом Windows Server 2003. В Windows Server 2008 Microsoft решила изменить подход к установке дополнительных ролей и возможностей Windows. Теперь все бинарные файлы, необходимые для разворачивания любой роли, хранятся в каталоге C:\Windows\WinSxS (WinSxS — Windows Side By Side). Это означает, что при установке любой дополнительной роли теперь нет необходимости искать и подключать к серверу  диск с дистрибутивом. Естественно, при таком подходе для ОС требует гораздо большего места на диске. Нужно понимать, что в  каталоге WinSXS содержаться ключевые компоненты системы, поэтому удалять из нее что-то вручную ни в коем случае нельзя. Почему же размер папки WinSXS постоянно растет? Ответ прост – обновления.  При установке обновлений различных компонентов в каталоге  WinSXS остаются и старая и новая версия обновленного компонента. Благодаря такой архитектуре, мы в любой момент можем безопасно удалить любое установленное обновление и откатиться на старую версию компонента.

А что же делать, если система запущена и работает, разворачивать дополнительные роли не планируется, а места на диске не хватает? Ведь нелогично, что на системном диске несколько гигабайт занято дистрибутивами, которые никогда не потребуются! В Windows Server 2008, к сожалению, удалить данные файлы без вреда системе довольно сложно. Однако, в новой серверной ОС — Windows Server 2012, Microsft решила исправить этот недостаток и внедрила новую функцию под названием Features on Demand.

Features on Demand в Windows Server 2012


Функция Features on Demand (функции по запросу) позволяет уменьшить размер, занимаемый системой на диске, предоставляя возможность удалений бинарных файлов неиспользуемых ролей  из папки WinSxS.  В том случае, если в дальнейшем возникнет необходимость вернуть ранее удаленную роль, то все необходимые для работы ролей файлы можно извлечь из образа дистрибутива Windows Server 2012, службы Windows Update или сетевого ресурса с оригинальным содержимым WinSxS.

С помощью следующей команды Powershell можно получить информацию обо всех ролях системы:

Get-WindowsFeature

Вывод списка всех ролей и функций в Windows Server 2012

Как вы видите, в колонке Install State отображается состояние каждой роли. Возможные статусы:

  • Installed: роль или функция установлена и в настоящий момент используется системой
  • Available: роль на сервере не установлена, однако на диске присутствуют все необходимые файлы, позволяющие в любой момент установить/активировать эту роль.
  • Removed: — роль или функция на сервере не установлена, файлы, необходимые для ее установки удалены с диска

Соответственно, при установке любой роли через GUI или Powershell (команда Install-WindowsFeature) ее статус с Available меняется на Installed, а при удалении (команда Uninstall-WindowsFeature) наоборот.

Полностью удалить роль с диска (из папки WinSxS) можно только через Powershell.  Для этого  нужно использовать специальный аргумент команды Uninstall-WindowsFeatur  — Remove.

Например, чтобы удалить бинарные файлы  роли DHCP-сервера, выполните команду:

Uninstall-WindowsFeature –Name DHCP –Remove

А чтобы удалить файлы службы каталогов Active Directory Domain Services:

Uninstall-WindowsFeature AD-Domain-Services -Remove

Удалить с диска роль Active Directory

С помощью конвейеров Powershell можно написать более сложную команду, которая удалит с диска инсталляционные файлы всех неиспользуемых ролей и функций Windows Server:

Get-WindowsFeature | Where-Object {$_.InstallState -Eq “Available”} | Uninstall-WindowsFeature -Remove

Очищаем папку wisxs в windows server 2012, удалив неиспользуемые роли

В нашем примере, при условии, что была установлена только роль файл-сервера, размер папки WinSxS уменьшился с 8 до 5.2 Гб. Неплохо, правда? Тем более, что для очистки папки WinSxS нам потребовалась всего одна команда.

После очистки размер папки winsxs уменьшился на 3 Гб

Установка удаленных ролей и функций в Windows Server 2012


Рассмотрим еще один сценарий, предполагающий, что вам потребуется установить некую роль Windows Server 2012, дистрибутив которой был удален из каталога WinSxS.  Восстановить роль можно несколькими способами: с помощью GUI Server Manager или с помощью Powershell.

Прежде, чем приступить к восстановлению файлов ролей, необходимо определить индекс установленной редакции Windows Server 2012.  Нам понадобятся диск с дистрибутивом Windows Server 2012 (а точнее файл образа install.wim, находящийся в каталоге sources). Выполните следующую Powershell команду:

Get-windowsimage –imagepath <путь к файлу wim>\sources\install.wim

windows2012 index различных версий

Найдите версию установленного у вас Windows Server и запомните ее индекс (значение в строке Index). В нашем примере это Windows Server 2012 Datacenter с индексом 4. (Мы уже рассматривали особенности работы с различными редакциями Windows 2012 в одном дистрибутиве в статье «Интеграция драйверов в установочный диск Windows Server 2012»).

Ту же самую операцию можно выполнить с помощью утилиты Dism:

dism.exe /get-imageinfo /imagefile:d:\sources\install.wim

Вывод версий win2012  помощью dism

Устанавливаем удаленную роль с помощью Server Manager

Откройте консоль Server Manager и запустите мастер установки ролей (Add Roles and Features. Выберите роль или функцию, которую необходимо установить. Мастер предупредит, что некоторые файлы, необходимые для установки данной роли отсутствуют и нужно указать альтернативный путь к местоположению  дистрибутива. Нажмите кнопку Specify an alternate source path.

specify alternative source path: восстанавливаем роль

В поле Path укажите полный путь к файлу intall.wim и индекс установленной редакции ОС в таком формате:

WIM:D:\Sources\Install.wim:4

Путь к wim файлу

В случае необходимости,  в данной строке можно указать сетевой путь к каталогу с файлом WIM или сетевой путь к каталогу WinSxS. Кроме того путь к данному каталогу можно указать сразу для группы серверов с помощью групповой политики ( Computer Configuration -> Administrative Templates ->System ->Specify settings for optional component installation and component repair). Последний вариант удобен в случае большого количества инсталляций серверов с Windows Server 2012, ведь суммарный эффект от очистки папки WinSxS может достигать сотен Гб.

windows 2012: задаем путь к хранилищу компонентов с помощью групповой политики

После того, как будет нажата кнопка OK, все необходимые файлы для устанавливаемой роли будут скопированы в каталог WinSxS.

Восстановление удаленной роли Windows 2012 с помощью Powershell

Ту же самую операцию можно выполнить с помощью всего одной команды Powershell. Допустим, нам нужно восстановить удаленные файлы роли ADDS. Выполним следующую команду:

Install-WindowsFeature AD-Domain-Services -Source WIM: WIM:D:\Sources\Install.wim:4

Восстановление удаленной роли с помощью powershell

Итак, в этой статье мы разобрались с новой функцией Windows Server 2012 под название Features on Demand, позволяющей удалить дистрибутивы бинарных файлов неиспользуемых серверных ролей из каталога WinSxS. В случае необходимости удаленную роль можно достаточно просто восстановить: все, что для этого понадобится – дистрибутив Windows Server 2012.

В Windows 8 функция Feautere on Demand работает немного по другому, дело в том, что используемый нами командлет Powershell просто напросто отсутствие. Его аналогом (не таким удобным) является команда DISM с параметром /Disable-Feature. Кроме того можно просто сжать содержимое каталога Winsxs. Подробности в статье Как уменьшить размер папки Winsxs в Windows 8

Еще записи по теме: Windows Server 2012
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 7

Оставить комментарий
  1. Sergio | 30.07.2013

    Очень много полезных статей!
    Спасибо ВАМ большое!
    Удачи!

    Ответить
  2. Игорь | 01.08.2013

    Прекрасно изложено. Большое спасибо.

    Ответить
  3. Serg | 27.12.2013

    Спасибо за статью.
    Но при удалении неиспользуемых ролей возникает ошибка.
     

    
    
    Uninstall-WindowsFeature : Сбой запроса на добавление или удаление компонентов на указанном сервере.
    Сбой удаления одной или нескольких ролей, служб ролей или компонентов. Ошибка: 0x800f082f
    строка:1 знак:1
    + Uninstall-WindowsFeature AD-Domain-Services -Remove
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (@{Vhd=; Credent...Name=localhost}:PSObject) [Uninstall-WindowsFeature
       ], Exception
        + FullyQualifiedErrorId : DISMAPI_Error__Failed_Disabling_Updates,Microsoft.Windows.ServerManager.Commands.RemoveW
       indowsFeatureCommand
    
    
    Подскажите в чём причина?

     

    Ответить
  4. itpro | 30.12.2013

    Роль ADDS точно не установлена?
    Каков ее статус?
    Get-WindowsFeature
    Возможно стоит просто перезагрузить сервер…

    Ответить
    • Serg | 15.01.2014

      Ещё раз спасибо за статью. Решил данную проблему в тот же день, действительно необходимы было просто перезагрузить сервер.

      Ответить
  5. Сергей | 27.09.2014

    А проверяли ли Вы работу второго пункта в групповой политике, которая должна скачивать компоненты с Wsus. Как-то давно я пробовал, сервер не хотел выкачивать обновления.
    Я это к тому, что иначе придётся держать одну копию системы без удаленных компонентов, чтобы потом можно было скопировать локальную папку winSxS в сетевую. Чтобы роли на серверах ставились всегда с последними версиями компонентов.

    Ответить
    • Сергей | 27.09.2014

      Уоп, )) тупанул. Только сейчас заметил, что там написано WinUpdate вместо WSUS, а не наоборот. Тогда получается только вариант с копированием обновляемой папки с установленной полной системой?

      Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.26MB/0.00224 sec