Безпечне очищення папки 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 залишаються і стара і нова версія оновленого компонента. Завдяки такій архітектурі, ми в будь-який момент можемо безпечно видалити будь-який встановлений оновлення і відкотитися на стару версію компонента.

зміст:

  • Features on Demand в Windows Server 2012
  • Установка віддалених ролей і функцій в Windows Server 2012

Порада. Користувачі Windows 7 SP 1 можуть зменшити розмір папки 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

Як ви бачите, в колонці 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

За допомогою конвеєрів Powershell можна написати більш складну команду, яка видалить з диска інсталяційні файли всіх невикористовуваних ролей і функцій Windows Server:

Get-WindowsFeature | Where-Object $ _. InstallState -Eq "Available" | Uninstall-WindowsFeature -Remove

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

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

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

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

Get-windowsimage -imagepath \ sources \ install.wim

Знайдіть версію встановленого у вас Windows Server і запам'ятайте її індекс (значення в рядку Index). У нашому прикладі це Windows Server 2012 Datacenter з індексом 4. (Ми вже розглядали особливості роботи з різними редакціями Windows 2012 у одному дистрибутиві в статті "Інтеграція драйверів в інсталяційний диск Windows Server 2012").

Ту ж саму операцію можна виконати за допомогою утиліти Dism:

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

Встановлюємо віддалену роль за допомогою Server Manager

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

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

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

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

Після того, як буде натиснута кнопка OK, всі необхідні файли для встановлюваної ролі будуть скопійовані в каталог WinSxS.

Відновлення видаленої ролі Windows 2012 за допомогою Powershell

Ту ж саму операцію можна виконати за допомогою всього однієї команди Powershell. Припустимо, нам потрібно відновити вилучені файли ролі ADDS. Виконаємо наступну команду:

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

Отже, в цій статті ми розібралися з новою функцією Windows Server 2012 під назву Features on Demand, що дозволяє видалити дистрибутиви бінарних файлів невикористовуваних серверних ролей з каталогу WinSxS. У разі необхідності віддалену роль можна досить просто відновити: всі, що для цього знадобиться - дистрибутив Windows Server 2012.

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