Перенос базы WSUS и очистка базы обновлений

Перенос базы WSUS и очистка базы обновлений

Windows Server Update Services (WSUS) — серверное ПО которое отвечает за обновления для ОС и ПО от Microsoft в локальной сети. WSUS скачивает с сайта Microsoft обновления для заранее указанных ОС и продуктов от Microsoft. Это экономит трафик, нет необходимости каждому компьютеру качать через интернет одни и те же обновления. Также при помощи WSUS  можно централизованно управлять обновлениями, контролировать процесс и наблюдать статистику. Рано или поздно все скачанные обновления для множества разных версий ОС и ПО начинают занимать достаточно много дискового пространства. В таких случаях можно столкнутся с двумя проблемами:

  • Не хватает дискового пространства
  • Бекапы становятся слишком большими, особенно если нет возможности исключить из резервных копий ту или иную папку (как в Windows 2008, имеется в виду не Windows 2008 R2)

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

Перенос базы WSUS на другой диск

Оказывается это достаточно простая задача:

  • Создаем папку WSUS там, куда вы хотите перенести файлы обновлений. Например я создал папку на диске F: - F:\Wsus\
  • Запускаем командную строку под правами администратора
  • Переходим в папку с утилитой wsusutil командой:
cd C:\Program Files\Update Services\Tools
  • Запускаем команду, которая начнет перенос файлов обновлений:
wsusutil.exe movecontent F:\WSUS F:\WSUS\wsus.log

Если Вы не хотите чтобы перемещались сами файлы обновлений (не хотите ждать пока они скопируются) тогда добавляем -skipcopy:

wsusutil.exe movecontent F:\WSUS F:\WSUS\wsus.log -skipcopy

Где "F:\WSUS\wsus.log" - расположение лог-файла процесса переноса. Когда перенос закончится удаляем по старому адресу папки WSUS (кроме UpdateServicesDbFiles). У меня файлы обновлений WSUS хранились по адресу D:\WSUS. В этой папке есть три подпапки:

  • UpdateServicesDbFiles - эту папку НЕ удаляем, она не переносится вышеописанной командой. В ней хранятся файлы баз данных которые содержат информацию о компьютерах, обновлениях, их статусах и настройках WSUS-сервера. Как раз то, что нужно включать в резервную копию
  • WsusContent - удаляем, она переносится. Именно эта папка самая большая, в ней хранятся все скачанные обновления вашим WSUS-сервером. Эту папку не обязательно включать в бекап. В случае утери папки нужно выполнить команду "wsusutil.exe reset", это запустит процес проверки соответствия обновлений в базе данных обновлениям на жестком диске. В случае, если обновления повреждены, WSUS скачивает их повторно.
  • UpdateServicesPackages - тоже удаляем. В ней хранятся опубликованные Вами пакеты, если вы ничего не публиковали она будет пустая.

Очистка базы данных WSUS

Почистить базу данных WSUS можно двумя способами:

  • Server Cleanup Wizard
  • Powershell скриптом

Отмена замененных обновлений

Первым делом рекомендую отменить все утвержденные для установки обновления, которые были заменены более новыми обновлениями. Таким образом Вы освободите больше всего места.

Если во Wsus просматривать такие обновления, то в информации о нем будете видеть сообщение:

This update is superseded by another update we recommend that you verify it is no longer needed by any other computer To do so first approve the superseding Update

Или  на русском:

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

Хорошей практикой считается такой порядок действий при отмене замещенного обновления:

  • разрешить более новое (замещающее) обновление
  • убедиться, что все системы его установили (где требуется)
  • убедиться, что все системы сообщают о замещаемом обновлении, как неприменимом
  • теперь можно безопасно удалить замещенное обновление

Для того, чтобы отфильтровать обновления по замещению:

  • нужно перейти в WSUS во "Обновления" - "Все обновления"
  • в выпадающем списке "утверждение" выбрать "утверждено"
  • в выпадающем списке "состояние" выбрать "любой"
  • кликнуть правой кнопкой мышки по заголовку таблицы и поставить галочку напротив "замена" (supersedence). Также рекомендую сразу же добавить столбец "Число необходимых установок", чтобы видеть что это обновление нужно на 0 компьютерах и значит можно его отменять.
  • далее сортируйте по столбцу "замена" и отменяйте не нужные замененные обновления
  • после всех этих действий нужно очистить wsus одним из двух способов описанных ниже.

Чистка базы WSUS через Server Cleanup Wizard

  • Запускаем оснастку "Windows Server Update Services"
  • Переходим в "Имя WSUS Сервера" - "Computers" - "Options" - "Server Cleanup Wizard"
  • Выставляем галочки возле тех вариантов очистки которые подходят и жмем "Next"
  • Ждем 1-12, а может и больше часов, зависит от размера Вашей базы обновлений

Чистка базы WSUS через Powershell скрипт

Плюс скрипта в том, что можно настроить его периодический запуск - то есть автоматизируем очистку базы данных. Скрипт можно найти на сайте microsoft:

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")`
| out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
#$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);

Расшифруем значение параметров:

  • DeclineSupersededUpdates - отклонить обновления, которые заменены более новыми версиями или же включены в пакеты обновлений. Также, отклоняются обновления, которые не были подтверждены в течение 30 и более дней, и не востребованы ни одним клиентом.
  • DeclineExpiredUpdates - отклонить просроченные обновления. Как правило, Microsoft выпускает новые обновления взамен просроченным, а просроченные - удаляет со своих потоковых серверов загрузки.
  • CleanupObsoleteUpdates - удаляем неиспользуемые и устаревшие обновления, включая все их ревизии. Удаляются те обновления и ревизии, которые не были подтверждены в течение 30 и более дней.
  • CompressUpdates - удаляем устаревшие ревизии обновлений.
  • CleanupObsoleteComputers - удаляет устаревшие компьютеры, которые не контактировали с сервером 30 и более дней.
  • CleanupUnneededContentFiles - удаляем ненужные файлы обновлений. Включение этой опции позволяет освободить максимальный объем места на диске.

Напоследок дам ссылку на еще один более мудреный скрипт: expressit.ru/?p=709

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Перенос базы WSUS и очистка базы обновлений”

  1. Yaromax says:

    Доброго времени суток.
    Папка WSUS на Windows 2008R2 распухла до 324 Гб, чистка встроенным средством WSUS и скриптами PowerShell не удаляет отклоненные обновления, в итоге размер растет. В базе WSUS примерно 7800 обновлений, из них примерно 4800 отклонены, но мастер очистки их в упор не хочет убирать с диска.

    Возможно ли сделать следующее:
    — перенести место расположения без копирования файлов в другую папку;
    — запустить wsusutil.exe reset и дождаться завершения обновления.

    Кстати, папки UpdateServicesDbFiles я не нашел.

  2. Владимир Демянович (elims.org.ua) says:

    Да, можете это сделать командой wsusutil.exe movecontent F:\WSUS F:\WSUS\wsus.log -skipcopy

Обсудить