3

В Windows 8.1 имеется новая запланированная задача (Servicing\StartComponentCleanup), которая автоматически удаляет или сжимает замененные и неиспользуемые файлы из хранилища «Бок о бок», «DriverStore» и папки драйверов.

Мне было интересно, если кто-нибудь знает, возможно ли сохранить компонент в чистоте, но пропустить сжатие, все без отключения сжатия NTFS или запланированной задачи?

Обратите внимание, что если некоторые из драйверов / файлов начинают загружаться / использоваться, Windows, похоже, не распаковывает их после сжатия. Чтобы распаковать их, вы должны вручную запустить "compact / U" в качестве службы TrustedInstaller.

3 ответа3

4

Как вы оцениваете экономию сжатия? Что-то не так в ваших числах, потому что образ RTM 8.1 сэкономит около 114 МБ от сжатия NTFS только встроенных драйверов (на x64). Просто используйте проводник, чтобы получить размер c:\windows\system32\driverstore, и вы увидите, что разница между "Размером" и "Размером на диске" составляет около 114 МБ. /startcomponentcleanup не выполняет заново выполненную работу, поэтому для его запуска в будущем потребуется только сжатие новых драйверов, файлов резервных копий или замененных файлов.

С образом RTM 8.1 в категории резервных копий очень мало нуждающихся в сжатии, и в заменяемой категории не должно быть ничего. Замененная категория - это единственное сжатие, которое пропускается при использовании /startcomponentcleanup /resetbase вместо обычного /startcomponentcleanup. Итак, я не уверен, какое преимущество вы видите, используя его в отношении производительности сжатия. Сжатие замененных битов (если они у вас есть) действительно занимает некоторое время, но оно сохраняет вашу способность удалять КБ, сохраняя при этом> 90% пространства.

Чтобы увидеть точные значения эффектов /startcomponentcleanup или /startcomponentcleanup /resetbase на winsxs, запустите dism /online /cleanup-image / analysiscomponentstore до и после запуска /startcomponentcleanup ... Посмотрите конкретно на цифры "Резервное копирование и отключенные функции". Вы заметите, что после выполнения команды есть существенная разница. Кроме того, если вы перезапустите /startcomponentcleanup, вы должны увидеть, что он завершается довольно быстро во 2-й раз, потому что ему нечего делать.

Редактировать - некоторые реальные цифры для сравнения

Например, на компьютере с X64, который я только что обновил январскими обновлениями во вторник (включая необязательные обновления), вот как происходит сжатие, глядя на изменения, произошедшие из-за патча от Jan.

Примечание. Приведенная ниже экономия достигается за счет сжатия, которое не является сжатием NTFS, и поэтому сжатые файлы не отображаются как сжатые в проводнике. Сжатие NTFS используется только /startcomponentcleanup для сжатия драйверов входящих сообщений (которое не включено ниже и обеспечивает экономию около 114 МБ для хранилища драйверов)

Фактические числа с использованием /startcomponentcleanup

+354.25 MB added for January updates
- 34.14 MB saved by superseded package removal
- 67.84 MB saved for Backups (99.86 MB compressed to 32.02 MB) 
-203.36 MB saved for Superseded Components (220.25 MB compressed to 16.89 MB) 
 ---------
  48.91 MB growth due to January updates after /startcomponentcleanup

Фактические числа с использованием /startcomponentcleanup /resetbase

Если вы используете «/startcomponentcleanup /resetbase» вместо просто «/startcomponentcleanup», вы экономите дополнительные 16,89 МБ, но теперь вы не можете удалить оставшиеся обновления и можете заметить, что все те же сжатия выполняются, как указано выше, за исключением "Замененных компонентов".

  48.91 MB growth due to January updates after /startcomponentcleanup
- 16.89 MB savings due to /resetbase
 ---------
 32.02 MB growth due to January updates after /resetbase

Пример использования / analysiscomponentstore

Вот результаты запуска / analysiscomponentstore после применения январских обновлений и после запуска / startcomponentcleanup. Обратите внимание на номер "Резервные копии и отключенные компоненты", поскольку он указывает на временное хранилище, необходимое для хранилища компонентов (winsxs).

После применения январских обновлений

Windows Explorer Reported Size of Component Store : 5.75 GB

Actual Size of Component Store : 5.51 GB

    Shared with Windows : 4.49 GB
    **Backups and Disabled Features : 884.98 MB**
    Cache and Temporary Data : 161.29 MB

Date of Last Cleanup : 2014-01-14 10:04:32

Number of Reclaimable Packages : 3
Component Store Cleanup Recommended : Yes

После запуска /startcomponentcleanup

Windows Explorer Reported Size of Component Store : 5.33 GB

Actual Size of Component Store : 5.21 GB

    Shared with Windows : 4.49 GB
    **Backups and Disabled Features : 595.02 MB**
    Cache and Temporary Data : 139.23 MB

Date of Last Cleanup : 2014-01-14 10:38:59

Number of Reclaimable Packages : 0
Component Store Cleanup Recommended : No
3

Не существует открытого механизма для отключения части сжатия задачи обслуживания обслуживания.

Какое служебное сжатие хотите отключить и почему? Задача обслуживания сжимает резервные копии и другие дубликаты файлов, а также заменяет обновления. Как вы заметили, он также сжимает входящие драйверы, используя сжатие NTFS. Это просто NTFS-сжатие входящих драйверов, которые вы хотели бы отключить, и почему?

2

После некоторых экспериментов с виртуальной машиной кажется, что запуск DISM с добавленным переключателем "/ResetBase" не будет сжимать какие-либо файлы, в то время как все еще производится очистка замененных компонентов. Однако есть одна загвоздка: запуск ResetBase удалит возможность удаления обновлений.

Полное решение:

  • Изменить задачу очистки компонента
    1. Откройте taskschd.msc и перейдите в \Microsoft \Windows \Servicing \
    2. Дважды щелкните StartComponentCleanup
    3. Удалите пользовательский обработчик на вкладке Действия
    4. Добавьте новое действие, указав «C: \Windows \System32 \Dism.exe» в качестве программы и «/Online /Cleanup-Image /StartComponentCleanup /ResetBase» в качестве аргументов


  • Распакуйте \Windows \WinSxS \, \Windows \System32 \drivers \ and \Windows \System32 \ DriverStore \
    1. Откройте повышенную (администратор) командную строку
    2. Перейдите к базовой папке, которую вы хотите распаковать (например: Windows \WinSxS)
    3. Введите «Компакт /U /S /A /I /Q» и дождитесь его завершения
    4. Тип "PSExec -hsi cmd"
    5. Перейдите к базовой папке, которую вы хотите распаковать
    6. Введите «Компакт /U /S /A /I /Q» и дождитесь его завершения
    7. Тип "Выход"
    8. Типа "net start TrustedInstaller"
    9. Тип "runassystem_x64.exe" runfromtoken_x64.exerustinstaller.exe 1 cmd ""
    10. Перейдите к базовой папке, которую вы хотите распаковать
    11. Введите «Компакт /U /S /A /I /Q» и дождитесь его завершения
    12. Тип "Выход"
    13. Типа "чистый стоп TrustedInstaller"

Примечание. Вы работаете с Compact 3 раза из-за разных списков ACL для файлов (один раз от имени администратора, один раз от имени локальной системы и один раз от службы TrustedInstaller.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .