- Безопасная очистка папки WinSXS в Windows Server 2016 / 2012 R2
- Features on Demand в Windows Server 2012
- Установка удаленных ролей и функций в Windows Server 2012
- Устанавливаем удаленную роль с помощью Server Manager
- Восстановление удаленной роли Windows 2012 с помощью Powershell
- Автоматическая очистка WinSxS с помощью Cleanmgr
- Features On Demand
- Overview
- Types of Features on Demand
- Adding or removing Features on Demand
- Using DISM /add-package to add or remove FODs
- Using DISM /add-capability to add or remove FODs
Безопасная очистка папки WinSXS в Windows Server 2016 / 2012 R2
Прежде чем говорить о безопасном способе очистки папки 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 можно получить информацию обо всех ролях системы:
Как вы видите, в колонке Install State отображается состояние каждой роли. Возможные статусы:
- Installed: роль или функция установлена и в настоящий момент используется системой
- Available: роль на сервере не установлена, однако на диске присутствуют все необходимые файлы, позволяющие в любой момент установить/активировать эту роль.
- Removed: — роль или функция на сервере не установлена, файлы, необходимые для ее установки удалены с диска
Соответственно, при установке любой роли через GUI или Powershell (команда Install-WindowsFeature) ее статус с Available меняется на Installed, а при удалении (команда Uninstall-WindowsFeature) наоборот.
Полностью удалить роль с диска (из папки WinSxS) можно только через Powershell. Для этого нужно использовать специальный аргумент команды Uninstall-WindowsFeatur — Remove.
Например, чтобы удалить бинарные файлы роли DHCP-сервера, выполните команду:
А чтобы удалить файлы службы каталогов Active Directory Domain Services:
С помощью конвейеров Powershell можно написать более сложную команду, которая удалит с диска инсталляционные файлы всех неиспользуемых ролей и функций Windows Server:
В нашем примере, при условии, что была установлена только роль файл-сервера, размер папки 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 команду:
Найдите версию установленного у вас Windows Server и запомните ее индекс (значение в строке Index). В нашем примере это Windows Server 2012 Datacenter с индексом 4. (Мы уже рассматривали особенности работы с различными редакциями Windows 2012 в одном дистрибутиве в статье «Интеграция драйверов в установочный диск Windows Server 2012»).
Ту же самую операцию можно выполнить с помощью утилиты Dism:
Устанавливаем удаленную роль с помощью Server Manager
Откройте консоль Server Manager и запустите мастер установки ролей (Add Roles and Features. Выберите роль или функцию, которую необходимо установить. Мастер предупредит, что некоторые файлы, необходимые для установки данной роли отсутствуют и нужно указать альтернативный путь к местоположению дистрибутива. Нажмите кнопку Specify an alternate source path.
В поле Path укажите полный путь к файлу intall.wim и индекс установленной редакции ОС в таком формате:
В случае необходимости, в данной строке можно указать сетевой путь к каталогу с файлом 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. Выполним следующую команду:
Итак, в этой статье мы разобрались с новой функцией Windows Server 2012 под название Features on Demand, позволяющей удалить дистрибутивы бинарных файлов неиспользуемых серверных ролей из каталога WinSxS. В случае необходимости удаленную роль можно достаточно просто восстановить: все, что для этого понадобится – дистрибутив Windows Server 2012.
В Windows 8 функция Feautere on Demand работает немного по другому, дело в том, что используемый нами командлет Powershell просто напросто отсутствие. Его аналогом (не таким удобным) является команда DISM с параметром /Disable-Feature. Кроме того можно просто сжать содержимое каталога Winsxs. Подробности в статье Как уменьшить размер папки Winsxs в Windows 8
Автоматическая очистка WinSxS с помощью Cleanmgr
Для автоматической очистки файлов обновлений в WinSxs и временных файлов можно использовать стандартную утилиту Disk Cleanup (cleanmgr.exe). Используйте такой скрипт (thnks to Alex Kornev)
:: параметры очистки каталога winsxs
REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\ CurrentVersion\Explorer\ VolumeCaches\Update Cleanup» /v StateFlags0088 /t REG_DWORD /d 2 /f
:: параметры очистки временных объектов
REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\ CurrentVersion\Explorer\ VolumeCaches\Temporary Files» /v StateFlags0088 /t REG_DWORD /d 2 /f
:: создание запланированной задачи «CleanupWinSxS»
schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR «cleanmgr /sagerun:88»
Данный скрипт создаст в планировщике задание ежемесячной очистки папки WinSxS с помощью утилиты cleanmgr. Задача будет выполняться автоматически 1 раз в месяц 1-го числа без непосредственного участия. Время запуска задачи будет соответствовать времени создания задачи.
Чтобы задать свое время запуска, добавьте в последнюю строку ключ:
/ST HH:mm
где
HH — часы в формате 24h
mm — минуты
Features On Demand
Overview
Features on Demand (FODs) are Windows features that can be added at any time. Common features include language resources like handwriting recognition or other features like the .NET Framework (.NetFx3). When Windows 10 or Windows Server needs a new feature, it can request the feature package from Windows Update.
You can also preinstall FODs so they’re ready if a user needs them. FODs are distributed as .cab files on the Feature on Demand ISO and you can use DISM to add a FOD to a Windows image. If you’re using the FOD ISO to preinstall FODs, make sure you’re using the FOD ISO that matches your Windows image version.
Add language packs, FODs, and apps, in that order, prior to installing an update. If you add an update prior to adding language packs, FODs, and apps you’ll have to reinstall the update.
Types of Features on Demand
Starting with Windows 10, version 1809 and Windows Server 2019, Windows has two different types of Features on Demand:
FODs without satellite packages: FODs with all language resources packaged into the same package. These FODs are distributed as a single .cab file.
They can be added using either DISM /Add-Capability or /Add-Package .
FODs with satellite packages: Language-neutral FODs that have language and/or architecture resources in separate packages (satellites). When you install this type of FOD, only the packages that apply to the Windows image are installed, which reduces disk footprint. These FODs are distributed as a set of several .cab files, but are installed by specifying a single /capabilityname . These are new for Windows 10, version 1809.
They can only be added using DISM /Add-Capability (and not /Add-Package ).
FODs with satellites require a well-formed FOD repository. This can either be the full FOD repository on the ISO, or a custom repository created with DISM /export-source . They cannot be added by pointing to a directory with a handful of FOD files hand-copied from the repository, because DISM requires additional metadata to make the right connections.
See Available Features on demand for more information about which FODs have satellites. Language FODs don’t have satellites.
While you can add non-satellite FODs using /add-package , we recommend adding all FODs with /add-capability because you can use it to add both satellite and non-satellite FODs.
Adding or removing Features on Demand
Using DISM /add-package to add or remove FODs
You can add non-satellite Features on demand to a Windows image with DISM /add-package . The FODs that you can add with /add-package include the language FODs, the FODs that come preinstalled with Windows, and the FODs that we recommend for preinstallation.
OEMs can generally add FODs to their Windows images using DISM /add-package , unless they need to preinstall a FOD that has satellites.
Command | Description | Example | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/add-package | Adds a package, including a FOD .cab to an image. add-package can only be used to add FODs that don’t have satellite packages. | DISM.exe /image:C:\mount\Windows /add-package /packagepath:E:\Microsoft-Windows-Holographic-Desktop-FOD-Package .cab | |||||||||||||
/Get-Packages | Get a list of all packages in an image. | DISM /image:C:\Mount\Windows /get-packages | |||||||||||||
/Get-Packageinfo | Get information of a package in an image. | DISM /image:C:\mount\Windows /get-packageInfo /packagename:Microsoft-Windows-Xps-Xps-Viewer-Opt-Package 10.0.17134.1000 | |||||||||||||
/Remove-Package | Removes a package from an image. Note: Don’t remove a package that other packages depend on. For example, if you have the French handwriting and basic packages installed, don’t remove the basic package. | DISM.exe /image:C:\mount\Windows /Remove-Package /PackageName:Microsoft.Windows.Calc.Demo Using DISM /add-capability to add or remove FODsYou can also install FODs with DISM /add-Capability . You have to use /add-capability to preinstall satellite FODs. If you’re preinstalling a FOD onto an offline image, use the /source option to tell Windows where to find the FOD installation files. The /source could be a FOD repository or a mounted FOD ISO. You can use multiple /source arguments in a command. If you’re adding a FOD to an online image, /add-capability downloads features from Windows Update and adds them to the image. If you don’t want to install from Windows Update, you can use /LimitAccess , which tells DISM to not check Windows Update or Windows Server Update Services for the capability source files.
|