Dism windows server 2012 r2

Время на прочтение
8 мин

Количество просмотров 100K

Windows Server 2012 R2 вышел 18 октября 2013 года. С тех пор на эту серверную операционную систему Microsoft выпущено несколько сотен обновлений исправляющих уязвимости и дефекты продукта, а так же улучшающие функционал.

Огромное количество обновлений — источник головной боли. Наиболее актуальный дистрибутив сервера, так называемый «Update2», в который интегрированы обновления по ноябрь 2014 года, безнадежно устарел. Установив с него операционную систему, вы получите вдогонку еще 200+ обновлений, которые будут устанавливаться 2-4 часа.

В этой короткой инструкции мы освежим ноябрьский дистрибутив, интегрировав в него все кумулятивные пакеты обновлений и обновления безопасности.

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

Делать будем по максимуму просто, используя штатные инструменты.

Все работы лучше проводить на сервере с уже развернутом Windows Server 2012 R2, чтобы не было накладок с версией утилиты DISM. Так же на нем удобно подключать ISO файлы, не распаковывая их.

Готовим рабочие директории

Для работы потребуются следующие каталоги:

ISO — в этот каталог копируются файлы дистрибутива. В скопируйте в него содержимое дистрибутива SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_English_-4_MLF_X19-82891.ISO, предварительно смонтировав образ, а затем размонтировав.

MOUNT — пустой каталог, в него будут монтироваться образы из wim-файла.
CU — в этот каталог поместим кумулятивные обновления
SU — в этом каталоге будут находиться обновления безопасности и другие обновления

mkdir D:\WS2012R2\ISO
mkdir D:\WS2012R2\MOUNT
mkdir D:\WS2012R2\CU
mkdir D:\WS2012R2\SU

Скачиваем кумулятивные обновления

Tip & Trick #1. Microsoft выпускает для Windows Server 2012 R2 кумулятивные пакеты обновлений, но в них входят только обновления, исправляющие ошибки и улучшающие функционал. Обновления безопасности не включены. При этом обновления и не особо кумулятивны. Некоторые не включают в себя предыдущие обновления, и надо ставить «кумулятивное» за каждый месяц. Бардак. В октябре эта ситуация изменится к лучшему.

Со списком кумулятивных обновлений вы можете ознакомиться на этой wiki странице.

С ноября 2014 года нам потребуется интегрировать следующие обновления:

1. December 2014 Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB3013769, cкачать.

2. July 2016 Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB3172614, скачать.

Пакеты за май и июнь поглощены этим июльским пакетом. Но перед установкой обязательно обновление April 2015 servicing stack update for Windows 8.1 and Windows Server 2012 R2. KB3021910, скачать.

3. August 2016 Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB3179574, скачать.

Обновленный клиент центра обновления можно не интегрировать

Свежий Windows Update Client for Windows 8.1 and Windows Server 2012 R2: June 2016 вошел в KB3161606
KB3161606 поглощен KB3172614.

UPD: Я несколько преувеличил то, насколько Microsoft качественно подготовила дистрибутив. Обновления April 2014 и November 2014 действительно интегрированы. А все промежуточные — нет. Поэтому добавляем
May 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2955164, скачать
June 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2962409, скачать.
July 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2967917, скачать.
August 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2975719, скачать.
September 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2984006, скачать.
October 2014 update rollup for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2. KB2995388, скачать.

Tip & Trick #2. В разных статьях для интеграции обновлений предлагается извлечь из msu cab-файл. Делать это для offline-образа необязательно — интегрируйте msu без распаковки.

В папку CU разместите упомянутые выше msu файлы — Windows8.1-KB3013769-x64.msu, Windows8.1-KB3021910-x64.msu, Windows8.1-KB3138615-x64.msu, Windows8.1-KB3172614-x64.msu, Windows8.1-KB3179574-x64.msu.

Скачиваем обновления безопасности

Помимо кумулятивных обновлений интегрируем обновления, которые способна скачать утилита WSUS Offline Update.
Для этого:

  1. Скачиваем программу download.wsusoffline.net
  2. Выбираем обновления для Windows Server 2012 R2

  3. После скачивания открываем каталог wsusoffline\client\w63-x64\glb и *.cab файлы копируем в каталог C:\WS2012R2\SU

ОСТОРОЖНО: Если в список попали KB2966828 или KB2966827, удалите их, иначе после установки не получится добавить компонент Net Framework 3.5 (подробности).

Обновления готовы, приступим к интеграции.

Интеграция обновлений

Для интеграции обновлений нам потребуется:

  1. Смонтировать содержимое одного из образов в install.wim
    dism /mount-wim /wimfile:{путь к wim файлу} /Index:{N} /mountdir:{путь к директории монтирования}

  2. Интегрировать в offline установку каждое обновление
    dism /image:{путь к директории монтирования} /add-package /packagepath:{путь к *.msu или *.cab файлу}

  3. Сохранить изменения
    dism /Unmount-WIM /MountDir:{путь к директории монтирования} /Commit

Этот процесс легко следующим автоматизировать командным файлом:

for /l %%N in (1,1,4) do (
dism /mount-wim /wimfile:"D:\WS2012R2\ISO\sources\install.wim" /Index:%%N /mountdir:D:\WS2012R2\MOUNT
for %%f in (D:\WS2012R2\CU\*.*) DO (dism /image:D:\WS2012R2\MOUNT /add-package /packagepath:%%f)
for %%f in (D:\WS2012R2\SU\*.*) DO (dism /image:D:\WS2012R2\MOUNT /add-package /packagepath:%%f)
dism /unmount-WIM /MountDir:D:\WS2012R2\MOUNT /Commit
)

Tip: Запуская командный файл, перенаправьте вывод в журнал

UpdateWIM.cmd >>log.txt 2>>&1

В результате мы получим файл D:\WS2012R2\ISO\sources\install.wim размером в 6.15Gb. Можем ли мы его уменьшить? Да, с помощью экспорта можно получить оптимизированный файл размером в 5.85Gb.

Экономия небольшая, кроме того после этого не очень красиво выглядит диалог выбора операционной системы при установке, поэтому следующий шаг опционален.

Что надо сделать?

Для получения сжатого образа необходимо:

  1. Экспортировать первый образ из оригинального wim-файла в новый файл
    dism /export-image /sourceimagefile:{путь к исходному файлу wim} /sourceindex:1 /destinationimagefile:{путь к новому файлу wim}  /compress:max
    
  2. Подключить следующий образ из оригинального wim-файла в точку монтирования
    dism /mount-wim /wimfile:"D:\WS2012R2\ISO\sources\install.wim" /Index:2 /mountdir:{директория для монтированния образа}
    
  3. Добавить в новый файл следующий образ методом «захвата»
    dism /append-image /imagefile:{путь к новому файлу wim} /captureDir:{директория с смонтированным образом} /name:{оригинальное имя} /description:{оригинальное описание}
    
  4. Размонтировать образ, повторить итерацию добавления для каждого дополнительного образа
    dism /unmount-WIM /MountDir:{директория с смонтированным образом}  /Discard
    

Автоматизируем скриптом:

dism /export-image /sourceimagefile:D:\WS2012R2\ISO\sources\install.wim /sourceindex:1 /destinationimagefile:D:\WS2012R2\ISO\sources\install1.wim  /compress:max

dism /mount-wim /wimfile:"D:\WS2012R2\ISO\sources\install.wim" /Index:2 /mountdir:D:\WS2012R2\MOUNT

dism /append-image /imagefile:D:\WS2012R2\ISO\sources\install1.wim /captureDir:mount /name:"Windows Server 2012 R2 SERVERSTANDARD" /description:"Windows Server 2012 R2 SERVERSTANDARD"

dism /unmount-WIM /MountDir:D:\WS2012R2\MOUNT /discard

dism /mount-wim /wimfile:"D:\WS2012R2\ISO\sources\install.wim" /Index:3 /mountdir:D:\WS2012R2\MOUNT

dism /append-image /imagefile:D:\WS2012R2\ISO\sources\install1.wim /captureDir:mount /name:"Windows Server 2012 R2 SERVERDATACENTERCORE" /description:"Windows Server 2012 R2 SERVERDATACENTERCORE"

dism /unmount-WIM /MountDir:D:\WS2012R2\MOUNT /discard

dism /mount-wim /wimfile:"D:\WS2012R2\ISO\sources\install.wim" /Index:4 /mountdir:D:\WS2012R2\MOUNT

dism /append-image /imagefile:D:\WS2012R2\ISO\sources\install1.wim /captureDir:mount /name:"Windows Server 2012 R2 SERVERDATACENTER" /description:"Windows Server 2012 R2 SERVERDATACENTER"

dism /unmount-WIM /MountDir:D:\WS2012R2\MOUNT /discard

Удалите оригинальный install.wim, а сформированный install1.wim переименуйте в install.wim

Создание компактного образа install.esd

По совету D1abloRUS, если вы хотите получить инсталляционный диск минимального размера умещающийся на DVD5, можно экспортировать один (и только один) из образов в esd файл. Например, для экспорта Windows Server 2012 R2 Standard, используйте команду

dism /export-image /sourceimagefile:D:\WS2012R2\ISO\sources\install.wim /sourceindex:2 /destinationimagefile:D:\WS2012R2\ISO\sources\install.esd  /compress:recovery

Оригинальный install.wim можно удалить.

Сборка ISO-файла

Для сборки нам потребуется утилита oscdimg.exe из комплекта Windows ADK. Если у вас ее не оказалось, можно просто скачать утилиту по ссылке (не используйте из этого комплекта ничего, кроме самой утилиты).

Tip & Trick #3. Для того, чтобы не было проблем с загрузкой из образа, следует расположить загрузочные файлы в пределах первых 4 гигабайт образа. Для этого используем файл bootorder.txt

boot\bcd
boot\boot.sdi
boot\bootfix.bin
boot\bootsect.exe
boot\etfsboot.com
boot\memtest.exe
boot\en-us\bootsect.exe.mui
boot\fonts\chs_boot.ttf
boot\fonts\cht_boot.ttf
boot\fonts\jpn_boot.ttf
boot\fonts\kor_boot.ttf
boot\fonts\wgl4_boot.ttf
sources\boot.wim

Пути в этом файле указываются относительно корневой директории с образом, поэтому подстраивать пути на ваши фактические не требуется.

Tip & Trick #4. Если install.wim имеет размер больше 4700Mb, то инсталлятор вылетит с ошибкой «Windows cannot open the required file D:\sources\install.wim. Error code: 0x8007000D».

Нас учили что жизнь — это бой, поэтому разделим исходный install.wim на два командой

dism /split-Image /imagefile:D:\WS2012R2\ISO\sources\install.wim /swmfile:D:\WS2012R2\ISO\sources\install.swm /filesize:4096

Оригинальный файл install.wim можно удалить.

Tip & Trick #5. Вообще Microsoft говорит, что

пить

так делать нельзя.

In Windows 8.1 and Windows 8, Windows Setup does not support installing a split .wim file.

Мы говорим, что будем! Инсталлятор прекрасно подхватывает swm-файл. Проблем с установкой не будет.

Собираем образ командой:

oscdimg -m -n -yoD:\WS2012R2\bootorder.txt -bD:\WS2012R2\ISO\BOOT\etfsboot.com -lIR5_SSS_X64FREV_EN-US_DV9 D:\WS2012R2\ISO en_windows_server_2012R2_August_2016.iso

Уважаемый ildarz подсказывает, что для создания образа, одинаково хорошо работающего с BIOS и EFI, следует руководствоваться KB947024 и создавать образ так:

oscdimg -m -u2 -udfver102 -yoD:\WS2012R2\bootorder.txt -bootdata:2#p0,e,bD:\WS2012R2\ISO\BOOT\Etfsboot.com#pEF,e,bD:\WS2012R2\ISO\EFI\microsoft\BOOT\efisys.bin -lIR5_SSS_X64FREV_EN-US_DV9 D:\WS2012R2\ISO en_windows_server_2012R2_August_2016.iso

Работоспособность проверена в ESXi с любым типом загрузки (BIOS/EFI).

Все получилось? Поздравляю!

Но решена ли проблема полностью? Для идеала необходимо интегрировать еще сотню «опциональных» и «рекомендованных» обновлений, но с этим не будем торопиться. Дадим Microsoft шанс самим разобраться в том бардаке, который они устроили с обновлениями.

PS. Зачем мы все это делали? Для того, чтобы освежить память, сделать работу чуть удобнее и получить несколько простых командных файлов, при помощи которых в дальнейшем можно практически автоматизированно интегрировать обновления в серверный дистрибутив, экономя время ввода сервера в эксплуатацию. Тем более есть надежда, что начиная с октября интегрировать обновления станет гораздо проще.

Точно так же вы сможете интегрировать Windows 7 convenience rollup и не наступить на грабли распаковки обновлений, невозможности загрузки из образа, превышения размера install.wim.

Спасибо за внимание и до новых встреч, друзья.

Если есть возможность поделиться опытом — жду вас в комментариях.

Over time, as your Windows Server runs longer, more and more disk space is eaten. Simply gone! Investigating the disk usage leaves you clueless; there are no large log files, crash dumps, or there is no software to be removed. Where did that space go?

The answer: Windows Updates, Service Pack, and hotfix installations.

The Windows disk cleanup utility cleanmgr is not available in Windows Server 2012 if the Desktop Experience-feature is not installed. This makes cleaning up used disk space a bit harder. You can utilize your cmd.exe or PowerShell command-line, and use Deployment Image Servicing and Management (DISM) to clean up the Windows Component Store (WinSxS) in Windows Server 2012 and up.

This post also shows you how to move the Windows Server SoftwareDistribution folder and user’s Documents folder to a different partition.

WinSxS cleanup in Windows Server – using DISM and PowerShell

The WinSxS folder is located in the Windows folder, for example C:\Windows\WinSxS. It’s the location for Windows Component Store files.

The Windows Component Store contains all the files that are required for a Windows installation. And, any updates to those files are also held within the component store as the updates are installed (source: KB 2795190 – and do read Manage the Component Store). The WinSxS folder will become large…

Let’s clean up WinSxS!

Regain used disk space with
Deployment Image Servicing and Management (DISM)

Clean-up rituals after the parade

Clean-up rituals after the parade. Image via Flickr by Pabak Sarkar

Dism disk cleanup: Deployment Image Servicing and Management (DISM) is a command-line tool that allows you to install, uninstall, configure, and update Windows features, packages, drivers, and international settings. The /Cleanup-Image parameter of dism.exe provides advanced users more options to further reduce the size of the WinSxS folder.

The Dism.exe /Online /Cleanup-Image has a few extra parameters (or switches):

  • /AnalyzeComponentStore
  • /StartComponentCleanup
  • /ResetBase with /StartComponentCleanup
  • /SPSuperseded

Throughout this article, I assume you’ll read help options, just add /?, like: dism.exe /Online /Cleanup-Image /?.

If you enjoyed this, you might also enjoy the following post summing up 5 extra ways to clean up disk space in Windows Server!

Analyze WinSxS folder (Component Store) with /AnalyzeComponentStore

First you can use the /AnalyzeComponentStore parameter. This analyzes the size of the Component Store in Windows. The AnalyzeComponentStore option is available in Windows 8.1 Windows Server 2012 R2, and it’ll notify you whether a Component Store Cleanup is recommended or not.

dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

dism.exe /online /Cleanup-Image /AnalyzeComponentStore

dism.exe /online /Cleanup-Image /AnalyzeComponentStore

In the above image, AnalyzeComponentStore recommends a Component Store Cleanup. Let’s do so.

/StartComponentCleanup parameter

Dism.exe removes superseded and unused system files from a system with the /StartComponentCleanup parameter.

dism.exe /Online /Cleanup-Image /StartComponentCleanup
dism.exe /online /Cleanup-Image /StartComponentCleanup
dism.exe /online /Cleanup-Image /StartComponentCleanup

There is also a registered scheduled task called StartComponentCleanup. You can start this task from the command line:

schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

The /StartComponentCleanup parameter is supported on Windows 8, Windows Server 2012 and up.

Using the /StartComponentCleanup parameter of Dism.exe on Windows 10 gives you similar results to running the StartComponentCleanup task in Task Scheduler, except previous versions of updated components will be immediately deleted (without a 30 day grace period) and you will not have a 1-hour timeout limitation.

From an elevated command prompt, type the following:

Dism.exe /online /Cleanup-Image /StartComponentCleanup

/ResetBase switch with /StartComponentCleanup parameter

Using the /ResetBase switch with the /StartComponentCleanup parameter of dism.exe, all superseded versions of every component in the component store is removed.

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

All existing service packs and updates cannot be uninstalled after this command is completed. This will not block the uninstallation of future service packs or updates.

The /ResetBase parameter is supported on Windows 8.1 and Windows Server 2012 R2.

/SPSuperseded parameter

The /SPSuperseded parameter removes any backup components needed for de-installation of a service pack. The service pack cannot be uninstalled after this command is completed.

Dism.exe /Online /Cleanup-Image /SPSuperseded

The Service Pack cannot be uninstalled after this command is completed.

The /SPSuperseded parameter is supported on Windows 7 or Windows Server 2008 R2 Service Pack 1, 2012, 2012 R2.

The /AnalyzeComponentStore option is available in Windows 8.1 and Windows Server 2012 R2. Use this to analyze the size of the Component Store (WinSxS folder) in Windows.

Disk Cleanup Tool is available on Windows Server 2012 but not Windows Server 2012 R2

As said at the beginning of this article, the Disk Cleanup Tool is available in Windows Server 2012, if you install the Desktop Experience-feature.

In some versions of Windows Server, you can simply copy cleanmgr.exe and cleanmgr.exe.mui to C:\Windows\system32 and C:\Windows\system32\en-Us from an old Windows 2008 R2 server, if you don’t want to install the Desktop Experience feature.

The following steps to install (copy) cleanmgr may not work on all versions of Windows Server. Try for yourself.

Disk Cleanup Wizard addon on Windows Server 2008 R2
Microsoft KB2852386 adds a Disk Cleanup option on Windows Server 2008 R2, similar to the Windows 7 update. I’ve tested this on Windows Server 2012. It may not clean up everything, but at least a lot.

Here’s how to make cleanmgr.exe available on Windows Server 2012 Standard (Windows version 6.2.9200), without installing the Desktop Experience feature:

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

PS C:\Users\jan> $osversion = [System.Environment]::OSVersion.Version
PS C:\Users\jan> write-host $osversion
6.2.9200.0

C:\Windows\System32>cd ..

C:\Windows>copy WinSxS\amd64_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.2.9200.16384_en-us_b6a01752226afbb3\cleanmgr.exe.mui \Windows\system32\en-US
        1 file(s) copied.

C:\Windows>copy WinSxS\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.2.9200.16384_none_c60dddc5e750072a\cleanmgr.exe \Windows\system32
        1 file(s) copied.

C:\Windows>system32\cleanmgr.exe

C:\Windows>

Unfortunately, this no longer works on Windows Server 2012 R2 (6.3.9600), probably due to KB2821895. As Aaron pointed out in the comments, the above solution to copy over the cleanmgr.exe and cleanmgr.exe.mui files doesn’t always work well. Therefore I removed this information for Windows Server 2012 R2.

Fortunately, the Disk Cleanup functionality is back in Windows Server 2016 (at least TP5).

Disk Cleanup in Windows Server 2016 TP5
Disk Cleanup in Windows Server 2016 TP5

After cleaning up the disk, a server reboot is required. Don’t forget to reboot your computer – or server – afterwards! The actual cleanup of the WinSxs directory occurs during the next reboot.

Error 0x800f0906 with DISM /Online /Cleanup-Image, PowerShell Install-WindowsFeature and SFC /scannow

Some reports are available explaining Microsoft Security Bulletin MS14-046 broke DISM /Online /Cleanup-Image /RestoreHealth, PowerShell Install-WindowsFeature with -Source parameter, and SFC /scannow. Yes, it broke a lot…

An update is made available by Microsoft: KB3005628

Update for the .NET Framework 3.5 on Windows 8, Windows 8.1, Windows Server 2012, and Windows Server 2012 R2. This update resolves an issue that prevents the optional Microsoft .NET Framework 3.5 feature from being enabled after you install security update 2966827 or 2966828 (described in Microsoft Security Bulletin MS14-046) for the Microsoft .NET Framework 3.5.

Move Windows Server SoftwareDistribution folder

Over time, your Windows Updates SoftwareDistribution folder in c:\Windows\SoftwareDistribution can become quite large, for example when multiple updates were not installed successfully.

Windows Update files are downloaded to this folder and removed after successful installation. When you find yourself in a situation where your C: partition is rather small, and SoftwareDistribution folder eats up too much disk space, follow these steps to move the SoftwareDistribution folder to a different location.

All in a cmd.exe shell (Start > Run > cmd and press enter). In this example the new location is D:\Windows-SoftwareDistribution.

  1. Stop the Windows Update service: net stop wuauserv
  2. Rename the folder c:\Windows\SoftwareDistribution to c:\Windows\SoftwareDistribution.old: rename c:\windows\SoftwareDistribution SoftwareDistribution.old
  3. Create a link using Windows Sysinternals Junction, or Windows mklink
    • Create the new directory:
      mkdir D:\Windows-SoftwareDistribution
    • Create the Junction:
      c:\>junction C:\Windows\SoftwareDistribution "D:\Windows-SoftwareDistribution", or:
      c:\>mklink /J C:\Windows\SoftwareDistribution "D:\Windows-SoftwareDistribution"
  4. Restart the Windows Update Service: net start wuauserv

When, after a while, everything seems to run and update fine, you can delete your SoftwareDistribution.old folder safely.

Move User Documents folder

Another way for you to gain some extra free space is to move the User Documents folder (and others, like Downloads), for instance from C:\Users\$USER$\Documents to D:\User\$USER$\Documents (substitute $USER$ with the username whose Documents folder you want to move). Here are the steps for you to follow (screenshots taken from Windows Server 2016 TP5):

  1. Open Explorer and right click on the Documents folder and then Properties
  2. Choose Location
  3. Change the location where files are stored
  4. When the destination does not exist, Windows asks to create the folder for you
  5. After completion, files are moved to their new location.
Move a Windows User Documents Folder, step 01
Move a Windows User Documents Folder, step 01
Move a Windows User Documents Folder, step 02
Move a Windows User Documents Folder, step 02
Move a Windows User Documents Folder, step 03
Move a Windows User Documents Folder, step 03

Conclusion

Yes, the Windows component store (WinSxS folder) can become large, very large. But fortunately, Microsoft provides us the tools to monitor, manage and clean up the WinSxS folder to regain that used disk space.

If you are comfortable with installing the Desktop Experience Windows feature on your system, you can have the Disk Cleanup utility on your system. Otherwise, you can use the DISM (Deployment Image Servicing and Management) command for various clean up tasks.

To gain some extra free space, you can also move the Windows SoftwareDistribution folder to a different partition.

WinSxS Dism.exe Windows Component CleanupТолько что установленная Windows Server 2012 R2 Standard EN после установки всех обновлений, доступных в службе Windows Update занимает почти 22GB. В случае, если система готовится в качестве шаблона, с которого в дальнейшем планируется выполнять клонирование серверов, или же мы стали испытывать нехватку свободного места на системном диске уже функционирующего сервера, нам потребуется найти пути оптимизации используемого дискового пространства. Одним из возможных вариантов штатной оптимизации, заложенной в Windows Server, является операция обслуживания так называемого хранилища компонент в каталоге %windir%\WinSxS.

Перед нами показатель заполненности системного диска на только что установленном и обновлённом виртуальном сервере с ОС Windows Server 2012 R2 Standard.

Fresh installed Windows Server 2012 R2 System Disk

Анализ текущего состояния хранилища компонент Windows и его последующую очистку мы можем провести с помощью утилиты, входящей в состав ОС – Dism.exe (сокращение от Deployment Image Servicing and Management).

Запускается анализ следующей командой (требуются права Администратора):

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

WinSxS Dism.exe Windows Component Analyze

По окончании выполнения команды, изучим её вывод и обратим внимание на показатель «Number of Reclaimable Packages«, который определяет число пакетов, заменённых в процессе обновления системы через Windows Update. То есть, это те пакеты, которые могут быть безболезненно вычищены из хранилища.

Значение «Yes» в строке «Component Store Cleanup Recommended» говорит о том, что, по данным проведённого анализа, очистка возможна и рекомендуема.

Прежде, чем запускать нижеуказанную команду, нужно иметь ввиду, что в ходе её выполнения длительное время может быть ощутимо нагружен процессор. Поэтому планировать такую процедуру для уже работающих систем Windows лучше на время, когда не требуется продуктивная работа с системой.

Запуск процедуры очистки хранилища компонент Windows выполняется командой:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

В нашем примере на только что установленной Windows Server 2012 R2 (с выполненной последующей доустановкой ~200 обновлений) время выполнения процедуры очистки заняло более двух часов.

WinSxS Dism.exe Windows Component Cleanup

Дождавшись успешного завершения, посмотрим, как изменилась ситуация на диске.

Fresh installed Windows Server 2012 R2 System Disk after Dism.exe Windows Component Cleanup

Как видим, вместо ранее имеющейся величины свободного места в 7,43 GB, теперь мы имеем 16,6 GB, то есть операция очистки высвободила в нашем случае 9,17 GB. Результат очень даже ощутимый.

Однако в системе по-прежнему остаются файлы, которые могут использоваться для отката установленных обновлений, поддерживающих процедуру деинсталляции. Это хорошо видно, если в оснастке управления установки/удаления программ appwiz.cpl перейти в режим отображения информации об обновлениях. Здесь на большинстве обновлений мы увидим возможность удаления, то есть фактического отката заменяемых обновлениями файлов на их ранние версии.

Uninstall Windows Update

Если мы считаем, что система работает стабильно и имеем уверенность в том, что нам не потребуется выполнять удаление каких-либо обновлений, то мы можем выполнить дополнительную процедуру удаления предыдущих версий для всех компонент, которые были изменены установленными обновлениями. Нужно понимать, что тем самым мы лишим себя возможности отката установленных обновлений. В таком случае, ранее используемую команду выполняем с дополнительной опцией /ResetBase:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Dism Online Cleanup-Image Start Component Cleanup ResetBase

Снова посмотрим, как изменилась ситуация на диске.

Fresh installed Windows Server 2012 R2 System Disk after Dism.exe Windows Component Cleanup and ResetBase

Как видим, на этот раз мы смогли высвободить ещё 1 GB ёмкости дискового тома.

И теперь, если мы снова заглянем в оснастку управления установки/удаления программ appwiz.cpl в режиме отображения информации об обновлениях, то увидим, что при выборе любого из обновлений кнопка Uninstall более нам недоступна.

Unable to uninstall Windows Updates after Dism.exe Windows Component Cleanup and ResetBase

Таким образом, если мы решили прибегнуть к описанной выше процедуре очистки хранилища компонент Windows в каталоге WinSxS, то сначала лучше использовать более щадящую команду очистки, то есть без ключа /ResetBase, так как результат такой очистки в большинстве случаев даёт нам вполне удовлетворительный размер освобождаемого места, оставляя при этом больше «шансов для манёвра» в случае проблем с уже установленными обновлениями. То есть команду очистки с ключом /ResetBase предлагается использовать только в крайних исключительных случаях.

Дополнительные источники информации:

  • Вадим Стеркин — Как работает и сколько места экономит оптимизация папки WinSxS в Windows 10, 8.1 и 8
  • Вадим Стеркин — Как грамотно уменьшить размер папки WinSxS в Windows 10, 8.1 и 8

After writing yesterday’s post I wondered what switches DISM would have to install a new feature from a specified source. I played around a bit with DISM and realized that the version (6.2.9200.16384) in Server 2012 has more features compared to the version (6.1.7600.16385) in Server 2008. I haven’t obviously explored them all out, but as and when I do I’ll make subsequent posts to document them.

An interesting new feature that stands out for me is the fact that the /enable-feature switch now supports an /all switch that automatically installs all the needed dependency features.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

C:\Users\Administrator.CONTOSO>dism /online /enablefeature /featurename:NetFx3

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Image Version: 6.2.9200.16384

Enabling feature(s)

[==========================100.0%==========================]

Error: 50

The operation is complete but NetFx3 feature was not enabled.

A required parent feature may not be enabled. You can use the /enablefeature /all option to automatically enable each parent feature from the following list. If the parent feature(s) are already enabled, refer to the log file for further diagnostics.

NetFx3ServerFeatures

The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

Unfortunately the /disable-feature doesn’t have a corresponding switch to remove all the automatically installed dependencies so be sure to keep track of these.

The /disable-feature does have a /remove switch though which can be used to disable a package and remove all its binaries. This is one step ahead of what the /disable-feature in the previous DISM version offers. There you could only disable the feature but the binaries (the installed files) would still be on the system; now you have an option to remove them too.

Features whose binaries are thus removed (or were never installed in the first place) are marked differently when you use /get-features:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

C:\Users\Administrator.CONTOSO>dism /online /getfeatures |more

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Image Version: 6.2.9200.16384

Features listing for package : MicrosoftWindowsServerCorePackage~31bf3856ad364e35~amd64~~6.2.9200.16384

Feature Name : NetFx3ServerFeatures

State : Disabled

Feature Name : NetFx3

State : Disabled with Payload Removed

...

Feature Name : AdminUI

State : Disabled with Payload Removed

...

Note the “Disabled with Payload Removed” status.

If you are trying to install a feature whose binaries (the payload) are not present /enable-features complains about that. You can use the /Source switch to specify a source for these binaries.

C:\Users\Administrator.CONTOSO>dism /online /enablefeature /featurename:AdminUI

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Image Version: 6.2.9200.16384

Enabling feature(s)

[===========================61.5%===                       ]

Error: 0x800f0906

The source files could not be downloaded.

Use the «source» option to specify the location of the files that are required to restore the feature. For more information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077.

The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

The /Source switch must point to a path similar to the one required by the -Source switch of the Add-WindowsFeature (see my previous blog post or this TechNet article). It must be the C:\Windows folder in a WIM file image or on a running Windows installation anywhere else on the network.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

C:\Users\Administrator.CONTOSO>dism /getwiminfo /wimfile:z:\sources\install.wim

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Details for image : z:\sources\install.wim

Index : 1

Name : Windows Server 2012 SERVERSTANDARDCORE

Description : Windows Server 2012 SERVERSTANDARDCORE

Size : 7,195,580,708 bytes

Index : 2

Name : Windows Server 2012 SERVERSTANDARD

Description : Windows Server 2012 SERVERSTANDARD

Size : 11,999,848,937 bytes

Index : 3

Name : Windows Server 2012 SERVERDATACENTERCORE

Description : Windows Server 2012 SERVERDATACENTERCORE

Size : 7,176,243,455 bytes

Index : 4

Name : Windows Server 2012 SERVERDATACENTER

Description : Windows Server 2012 SERVERDATACENTER

Size : 11,995,224,677 bytes

The operation completed successfully.

C:\Users\Administrator.CONTOSO>dism /mountwim /wimfile:z:\sources\install.wim /index:2 /mountdir:c:\offline /readonly

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Mounting image

[==========================100.0%==========================]

The operation completed successfully.

C:\Users\Administrator.CONTOSO>dism /online /enablefeature /featurename:AdminUI /source:c:\offline\windows

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Image Version: 6.2.9200.16384

Enabling feature(s)

[==========================100.0%==========================]

The operation completed successfully.

Restart Windows to complete this operation.

Do you want to restart the computer now? (Y/N)

And that’s it, the feature is installed!

I think I’ll stick to DISM instead of PowerShell for a while while managing features. PowerShell has a DISM module now and hence a subset of the DISM commands, but it’s easier working with DISM exclusively for these sort of tasks as DISM has more features and eventually you will need to depend on DISM for some of these features (managing WIM images, for instance) and so I feel sticking with it exclusively will help breed more familiarity with DISM.

DISM mounted images are persistent across reboots so be sure to /unmount-wim them. You can get a list of mounted WIM images via the /get-mountedwiminfo switch.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

C:\Users\Administrator.CONTOSO>dism /getmountedwiminfo

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Mounted images:

Mount Dir : c:\Offline

Image File : z:\sources\install.wim

Image Index : 2

Mounted Read/Write : No

Status : Needs Remount

The operation completed successfully.

C:\Users\Administrator.CONTOSO>dism /unmountwim /mountdir:c:\offline /discard

Deployment Image Servicing and Management tool

Version: 6.2.9200.16384

Image File : z:\sources\install.wim

Image Index : 2

Unmounting image

[==========================100.0%==========================]

The operation completed successfully.

The /discard switch is required while un-mounting to tell DISM it doesn’t need to save any changes (not that we made any changes in this case, but one could potentially make changes and save them using DISM). If you wanted to save changes instead use the /commit switch.

That’s all for now!

Over time, as your Windows Server runs longer and longer, more and more disk space (on system partiotion) is eaten. Simply gone. Investigating the disk usage leaves you clueless: there are no large log files, crash dumps, or there is no software to be removed. Where did that space go?
The answer as always is simple: Windows Updates, Service Pack, and hotfix installations.
On Windows Server, the Windows component store (C:\Windows\WinSxS) contains all the files that are required for a Windows installation. And, any updates to those files are also held within the component store as the updates are installed (source: KB2795190 and do read Manage the Component Store). The WinSxS folder will become larger and larger…
Deployment Image Servicing and Management (DISM) is a command-line tool that allows you to install, uninstall, configure, and update Windows features, packages, drivers, and international settings. The /Cleanup-Image parameter of dism.exe provides advanced users more options to further reduce the size of the WinSxS folder.
Here are the parameters most useful for clean up WinSxS folder:
1. Use the /AnalyzeComponentStore to analyze the size of the Component Store (WinSxS folder) in Windows. The AnalyzeComponentStore option is available in Windows 8.1 and Windows Server 2012R2.

dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

2. Dism.exe removes superseded and unused system files from a system with the /StartComponentCleanup parameter (parameter is supported on Windows 8 and Windows Server 2012).

dism.exe /Online /Cleanup-Image /StartComponentCleanup

3. Using the /ResetBase switch with the /StartComponentCleanup parameter of dism.exe, all superseded versions of every component in the component store is removed (parameter is supported on Windows 8.1 and Windows Server 2012R2).

dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

All existing service packs and updates cannot be uninstalled after this command is completed. This will not block the uninstallation of future service packs or updates.
4.The /SPSuperseded parameter removes any backup components needed for de-installation of a service pack (parameter is supported on Windows 7, Windows Server 2008R2 SP 1, Windows Server 2012, Windows Server 2012R2). The service pack cannot be uninstalled after this command is completed.

dism.exe /Online /Cleanup-Image /SPSuperseded

After cleaning up the disk, a server reboot is required – the actual cleanup of the WinSxS directory occurs during the next reboot.

  • Dism exe online cleanup image restorehealth source c repairsource windows limitaccess
  • Dism windows 10 не загружается
  • Dism does not support servicing windows pe with the online option
  • Dism 0x800f081f windows 10 решение
  • Dism windows 10 как использовать