SSD уже стали обычным делом, и борьба за скорость загрузки отошла на второй план, а на первый вышла схватка за след системы на диске. Microsoft представила сжатие системных файлов в Windows 8.1 Update, и в Windows 10 идея получила интересное развитие.
В прошлой статье я ведь не случайно рассказывал, как правильно измерить место на диске ;)
[+] Сегодня в большой программе
- История вопроса
- Windows Vista
- Windows 7
- Windows 8 — сжатие NTFS
- Windows 8.1 — разностное сжатие
- Windows 8.1 Update — WimBoot
- Сжатие Windows 10 (Compact OS)
- Как выяснить статус сжатия
- Как выполнить сжатие
- В работающей системе
- В момент установки или обновления
- С помощью файла ответов
- В момент применения образа в среде Windows PE
- В MDT и ConfigMgr
- Как работает и сколько экономит сжатие
- Какое сжатие применяется
- Что именно сжимается
- Сравнение подходов к уменьшению следа системы на диске
- Вопросы и ответы
- На каких типах устройств работает Compact OS?
- Как Windows определяет, дает ли сжатие преимущество конкретному ПК?
- Как сжатие влияет на производительность? Есть ли противопоказания?
- Почему разжимается намного меньше файлов, чем сжимается?
- Как сочетается Compact OS и сжатие компонентов в папке WinSxS?
- Литература
- Дискуссия
История вопроса
Давайте посмотрим, что происходило с размером Windows в последнее десятилетие.
Windows Vista
В 2006 году Windows переходит на новую компонентную систему обслуживания, а развертывание ОС происходит путем применения к диску файлов из образа install.wim.
WIM — новый формат, поддерживающий несжатое состояние и два типа сжатия. Благодаря файловому формату, систему можно распаковать в папку, применить обновления и захватить обратно в сжатый WIM-образ.
Windows 7
Система уверенно набирает популярность, и папка WinSxS становится объектом пристального внимания пограничных служб диска Цэ. У них обретают актуальность различные средства кастрации, но в массы это варварство не идет.
Впрочем, появляются и более осмысленные руководства, освобождающие место на диске средствами ОС за счет сжатия:
- всего диска путем установки флажка в его свойствах
- только системных файлов утилитой compact.exe
В усилиях энтузиастов все неплохо кроме одного – работа сжатой Windows не поддерживается.
Сама Microsoft рассуждает на тему производительности сжатия NTFS в KB251186, относящейся к диапазону Windows 2000 — Windows 7. А в KB307987 замораживает на отметке Windows XP явные инструкции по установке сжимающего флажка в свойствах диска. Я также помню, что Джозеф Конвей, сотрудник Microsoft и источник ТЗ по CBS, писал в форуме TechNet или своем блоге, что сжатие папки Windows не поддерживается.
Windows 8 — сжатие NTFS
Windows теперь должна работать и на планшетах, а у них с дисковым пространством негусто. В Windows 8 под пресс сжатия NTFS ложатся отключенные компоненты, манифесты и предыдущие версии системных файлов, замененные обновлениями Windows Update, но необходимые для отката (остальные удаляются).
В Windows 8.1 добавляется /ResetBase, но он фактически удаляет уже сжатое. Внезапно, уже после выхода Windows 8.1 RTM, Microsoft привносит в утилиту очистки диска Windows 7 возможности удаления старых версий файлов, но без /ResetBase и без сжатия.
Windows 8.1 — разностное сжатие
В первой статье про очистку папки WinSxS я упоминаю разностное сжатие (delta compression), но технические подробности остаются тайной за семью печатями. Спустя полгода в блоге Ask the Core Team появляется серия статей, которая наконец-то срывает покровы с изменений в системе обслуживания Windows 8.1.
Вместо отдельного рассказа я ограничился обновлением уже опубликованной записи блога (анонса не было, так что рекомендую к прочтению).
Внедрив разностное сжатие в Windows 8.1, Microsoft переносит его задним числом в Windows 8, выпуская обновление стека обслуживания KB2821895.
Заметьте, что текущие версии файлов ОС остаются в несжатом виде, т.е. Microsoft все еще не поддерживает сжатие Windows официально.
Windows 8.1 Update — WimBoot
Наконец, в Windows 8.1 Update на свет появляется WimBoot. Эта технология, видимо, родилась в рамках программы под кодовым названием «усилие 116» — 1GB RAM + 16GB SSD. На столь крохотном диске планшета наряду с ОС приходилось размещать образ восстановления, что не оставляло места под пользовательские файлы.
В конфигурации WimBoot ОС запускается и работает, используя файлы из сжатого образа восстановления, чему способствует небольшой набор служебных файлов-указателей на разделе с Windows.
Таким образом, в Windows 8.1 Update впервые стала официально поддерживаться работа сжатой Windows.
Сжатие Windows 10 (Compact OS)
Задолго до официального выхода Windows 10 в блоге Windows появился на редкость расплывчатый пост об оптимизации дискового пространства новой ОС. В нем декларировались интересные улучшения, но технические подробности отсутствовали. Их и сейчас немного, впрочем.
На картинке два направления экономии:
- 4-12GB благодаря отказу от образа восстановления (на практике и больше бывает)
- 2.6GB за счет сжатия (в х86 – 1.5GB)
Про восстановление будет следующая статья серии, а сейчас речь пойдет о механизме сжатия системных файлов под названием Compact OS .
Как выяснить статус сжатия
Windows может автоматически применять сжатие, поэтому для начала проверьте текущее состояние системы командой:
compact.exe /CompactOS:query
Наряду со статусом, в результатах также отображается рекомендация – сжимать или не сжимать.
Как выполнить сжатие
Перейти к работе с компактной ОС можно массой различных способов.
В работающей системе
Пожалуйста, сначала проверьте текущее состояние↑ и, если ОС не сжата, измерьте дисковое пространство и сообщите в комментариях подробности1
В командной строке от имени администратора:
compact.exe /CompactOS:always
Заметьте, что точкой входа в новую технологию стала хорошо знакомая утилита compact.exe! Выполнение команды займет некоторое время.
Отмена сжатия реализована так же просто:
compact.exe /CompactOS:never
В момент установки или обновления
Недавно я рассказывал про новый ключ программы установки /Compat для проверки ПК на совместимость с Windows 10. Еще одной новинкой стал ключ /Compact OS:
setup /CompactOS enable
С помощью файла ответов
И у файла ответов есть новый параметр Compact.
Microsoft-Windows-Setup\ImageInstall\OSImage\Compact
В MSDN есть интересное примечание, что установку необходимо запускать из среды Windows 10 или ее версии Windows PE (в более старые PE можно вручную добавить драйвер). Вероятно, это также применимо к ключу /Compact OS программы установки.
В момент применения образа в среде Windows PE
У DISM тоже появился новый ключ /Compact.
DISM.EXE /Apply-Image /ImageFile:INSTALL.WIM /Index:1 /ApplyDir:C:\ /Compact:ON
В MDT и ConfigMgr
Смотрите тут.
Как работает и сколько экономит сжатие
Подробной документации я не нашел, поэтому свожу в одну статью все известные мне сведения на данный момент.
Какое сжатие применяется
Для компрессии отдельных файлов утилита compact.exe может использовать разные алгоритмы сжатия (по умолчанию — 4K XPRESS, см. справку к утилите). Такие файлы получают атрибут «Сжатый» и отображаются в проводнике синим цветом, как и в случае сжатия NTFS (алгоритм LZNT1). Можно подумать, что при сжатии ОС утилита точно так же проходит по всем системным файлам, которые имеет смысл сжимать. Однако Compact OS работает иначе.
Compact OS – это эволюция технологии WimBoot. Подлежащие оптимизации файлы помещаются в скрытый контейнер (фактически WIM-файл) и сжимаются.
С точки зрения компрессии, Compact OS аналогична образу WimBoot или любому образу WIM с обычным сжатием, поскольку во всех этих случаях применяется алгоритм 4K XPRESS Huffman (для максимального сжатия WIM задействуют LZX).
Поэтому, в отличие от сжатия NTFS, файлы Compact OS не получают атрибут «Сжатый» и не помечаются другим цветом в проводнике или сторонних программах. Любопытно, что утилита TreeSize все-таки подсвечивает синим папки, в которых файлы подверглись сжатию.
Что именно сжимается
Отчет о сжатии выглядит примерно так.
Completed Compressing OS binaries. 37953 files within 17349 directories were compressed. 6 670 708 067 total bytes of data are stored in 3 953 427 362 bytes. The compression ratio is 1,7 to 1.
Сжимаются файлы в папках Windows и Program Files, а также магазинные приложения. Системные файлы обеспечивают львиную долю сэкономленного места. Это хорошо видно из отчета DISM о хранилище компонентов.
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Ниже сведения из чистой установке Windows 10 Pro x64 RU. Напоминаю, что реальный размер хранилища складывается из первых трех строк таблицы.
Аспект | До сжатия | После сжатия | Экономия |
---|---|---|---|
Общие с Windows файлы | 5.24GB | 3.12GB | 2.12GB (40%) |
Резервные копии Отключенные компоненты |
1.61GB | 1.02GB | 0.59GB (37%) |
Кэш и временные файлы | 0.19GB | 0.19GB | — |
Реальный размер хранилища | 7.05GB | 4.34GB | 2.71GB (38%) |
Занятое место на всем диске | 13.50GB | 10.65GB | 2.85GB (21%) |
Общая экономия в гигабайтах вполне совпадает с цифрами из официального блога, но еще лучше она выглядит в процентном отношении.
Сравнение подходов к уменьшению следа системы на диске
Технология WimBoot позволяла без проблем установить Windows на планшет с 16GB, и у пользователя даже оставалось место для файлов. Однако была одна неприятная проблема. С каждой порцией установленных обновлений образ WimBoot становился все дальше и дальше от текущего состояния операционной системы, постепенно превращаясь в мертвый груз.
Compact OS предлагает более сбалансированный подход к экономии дискового пространства.
Аспект |
Обычная установка |
WimBoot |
Compact OS |
---|---|---|---|
Алгоритм сжатия |
Нет |
4K XPRESS Huffman |
4K XPRESS Huffman |
Исходная экономия дискового пространства |
Нет |
Высокая |
Умеренная |
Увеличение размера ОС со временем |
Минимальное |
Значительное |
Минимальное |
Вопросы и ответы
Я постарался предвосхитить ваши основные вопросы.
На каких типах устройств работает Compact OS?
Поддерживаются устройства с UEFI и BIOS.
Как Windows определяет, дает ли сжатие преимущество конкретному ПК?
Точно неизвестно. В блоге Windows на первые два места поставили объем RAM и скорость CPU. Емкость диска не упоминали, но очевидно, что технология ориентирована в первую очередь на маленькие диски.
Предположу, что сжатие не выполняется автоматически и не предлагается на системах с емкостью физического диска (а не системного раздела) свыше 128GB. Надеюсь, ваши отчеты в комментариях помогут прояснить расклад.
Upd. 19-Nov-15. Отчеты читателей не опровергли мое предположение, но и не позволили вывести некую формулу зависимости сжатия от размера жесткого диска. Однако читатель Максим Донников установил, что если система не использует сжатие, но сообщает, что может перейти в сжатое состояние при необходимости, то компрессия автоматически выполняется в фоне спустя некоторое время после того, как на диске образуется недостаток свободного пространства.
Как сжатие влияет на производительность? Есть ли противопоказания?
В блоге Windows расплывчатые формулировки сводятся к «все ОК», но они относятся к ситуациям, когда сжатие без вашего вмешательства реализует изготовитель ПК или сама Windows.
Я не рекомендую применять Compact OS:
- Жестких дисках. Целевым устройством Compact OS является ПК с маленьким твердотельным накопителем. На современных жестких дисках нет проблем со свободным пространством, если только не стрелять себе в ногу. WimBoot в Windows 8.1 не поддерживалась на жестких дисках именно ввиду их недостаточной производительности. Официально Compact OS в Windows 10 годится для любых накопителей, но Microsoft советует применять ее только на SSD. У них высокая скорость последовательных трансферов, поэтому влияние на скорость запуска ОС и программ минимально.
- ПК с зашифрованным системным диском (BitLocker). Шифрование само по себе снижает производительность, и дополнительное сжатие может только ухудшить ситуацию. Microsoft советовала избегать шифрования на системах с WimBoot, и я не вижу причин к отмене этой рекомендации для Compact OS.
Очевидно, я рассматриваю ситуацию с точки зрения оптимальной производительности в условиях значительной нагрузки на диск. Я уверен, что найдется масса людей, которые сожмут ОС на HDD или SSD с BitLocker и не заметят никаких замедлений.
Почему разжимается намного меньше файлов, чем сжимается?
Если сразу после сжатия вернуться к исходному состоянию, будет примерно такая картина
23256 files within 17349 directories were uncompressed.
По сравнению с отчетом о сжатии 2 папок обработано столько же, а файлов разжато в примерно в 1.5 раза меньше, чем сжималось ранее.
Точной причины такого поведения я не знаю. Возможно, в отчет сжатия попадают все обработанные файлы, в т.ч. с фактором 1:1, а при декомпрессии они не считаются разжатыми.
Как сочетается Compact OS и сжатие компонентов в папке WinSxS?
Технологии работают параллельно. Состояние Compact OS вы можете контролировать сами, а разностное сжатие компонентов выполняется без вашего участия и необратимо.
Продолжение следует…
Литература
В процессе подготовки статьи мне пригодились следующие материалы:
- How Windows 10 achieves its compact footprint (блог Windows)
- Windows 10: Reducing the disk footprint (Michael Niehaus, Microsoft)
- Compact OS, single-instancing, and image optimization (MSDN)
- Push-button reset frequently-asked questions (FAQ) (MSDN)
- [MS-XCA]: Xpress Compression Algorithm — Microsoft
- Windows Image File Boot (WIMBoot) Overview
(TechNet)
Дискуссия
Сокращение размеров и стоимости ПК ставит перед создателями Windows интересные задачи, и они не только придумывают решения, но и продолжают совершенствовать их. K еще одной стороне технологии Compact OS я вернусь чуть позже, а в следующей статье я расскажу, что еще изобрели разработчики для уменьшения следа системы на диске.
Однако в контексте дискового пространства далеко не все ПО Microsoft находится на одном уровне технологического развития. Так, Microsoft Office в этом плане выглядит неутешительно – у традиционного пакета стали нормой ежемесячные обновления весом в 500-600MB, оседающие в папке Installer, а обновления Office 2016 Click-to-Run могут отъедать гигабайты в папке ProgramData.
В комментариях напишите:
- исходный статус сжатия Windows 10
- модель устройства, емкость диска, марку CPU и объем RAM
- способ текущей установки Windows 10 (обновление / чистая)
- объем освободившегося дискового пространства после сжатия
Дмитрий
# Система не была сжата.
# Core i7 четырёхъядерный, Plextor M5Pro 128GB (1.05 прошивка), 8 GB оперативной памяти
# Windows 10 enterprise, чистая установка. Файл подкачки, восстановление и гибернцая полностью выключены (у меня нога в бронежилете)
# 11.6GB -> 9.6GB
В компьютере используется один SSD с единственным системным разделом во всю длину и ширину диска.
Acinonyx Jubatus
SSD 120 GB
Раздел с ОС ~93 GB
ОС build 10586, чистая установка
compact /CompactOs:query
Система не сжата, но может перейти в это состояние при необходимости
compact /CompactOs:always (экономия около 3 GB)
compact /CompactOs:query
Система в состоянии сжатия. Текущее состояние может изменить только администратор
compact /CompactOs:never
compact /CompactOs:query
Система не сжата. Текущее состояние может изменить только администратор
Теперь суть вопроса:
после этих экспериментов, система перейдет в сотояние сжатия при необходимости, или нужен перевод только вручную? Как вернуть первоначальную настройку, чтобы было вот так
compact /CompactOs:query
Система не сжата, но может перейти в это состояние при необходимости
Vadim Sterkin
Видимо, никак, раз вы уже влезли туда. Да и не нужно это, раз вы знаете все и можете изменить в любой момент.
nett00n
Исходное состояние:
VM на Hyper-V с HDD на 25 ГБ, Windows Server 2016 Standard Eng build14393
Original Install Date: 13.10.2016, 17:00:07;
8.89 GB of 25.4 GB Free https://i.imgur.com/hdHQdbT.png
После включения CompactOS:
9.13 GB of 25.4 GB Free https://i.imgur.com/mAaghWg.png
nett00n
Замерил ещё раз на другой VM Hyper-V Windows 2016 с диском в 50GB с более точными данными
OS Name: Microsoft Windows Server 2016 Standard
OS Version: 10.0.14393 N/A Build 14393
Original Install Date: 14.10.2016, 13:41:10
Before:
Windir size: 17 994 76 704
Free space: 21 813 227 520
After:
Windir size: 12 887 498 752
Free space: 24 309 497 856
https://imgur.com/a/uIpCf
Vadim Sterkin
Спасибо за отчет!
Root1953
Уважаемый автор блога писал: «Целевым устройством Compact OS является ПК с маленьким твердотельным накопителем.»
В данный момент у меня на столе 2 компа с загрузочными SSD. В первом ssd имеет размер чуть менее 30гб, а во втором чуть менее 256гб. Загадка в том, что в начисто установленных на обоих win10x64 Pro в первом CompactOS НЕ АКТИВИРОВАНА, а во втором, напротив, Активирована! При необходимости вышлю любую доп. инфу по кэйсу.
Vadim Sterkin
Возможно, 30GB — слишком маленький диск. Крошечные SSD менее производительные из-за физических ограничений, и сжатие может лишь ухудшить ситуацию. Никакая доп. инфо мне не поможет — технические подробности алгоритма Microsoft все равно не раскрывает.