Изменить и показать сжатие файлов в ntfs. Влияние ntfs-сжатия на скорость чтения файлов

Еще одной довольно интересной и перспективной, но почему-то слабо афишированной, возможностью Windows 10, является поддержка алгоритма сжатия данных LZX на уровне файловой системы NTFS . По сравнению с уже знакомым нам , степень сжатия LZX в Windows 10 гораздо выше (уровень сжатия практически на уровне zip). Достигается степень сжатия в среднем 40-60% .

Сжатие файлов с помощью алгоритма LZX в Widnows 10 выполняется только вручную с помощью уже знакомой нам утилиты compact (мы рассматривали ее в статье о ). При обращении к сжатым файлам их распаковка в памяти происходит полностью прозрачно для пользователя.

Недостатки использования LZX сжатия:

  • Сжатие выполняется вручную, и при перезаписи/обновлении/изменении сжатого файла, компрессию нужно выполнять заново. Таким образом, этот вид сжатия нецелесообразен для постоянно изменяемых файлов и временных папок.
  • На распаковку сжатых файлов в памяти расходуются дополнительные ресурсы CPU и памяти. Это, в общем-то, не критично для современных многоядерных процессоров.
  • Сжатые файлы никак не выделяются в проводнике (файлы, сжатые стандартной NTFS компрессией выделяются синим цветом)

Важно . Файлы, сжатые в Windows 10 с помощью алгоритма LZX нельзя открыть в предыдущих версиях Windows.

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

К примеру, при сжатии каталога с установленной игрой Far Cry 4 размер каталога уменьшился с 27 до 17 Гб. Для Counter-Strike: GO экономия места на диске оказалась скромнее: 10 против 7,5 Гб.

Примечание . Естественно, сживать мультимедийные файлы (фото, видео, музыка) и архивы смысла нет, т.к. они уже сжаты с помощью собственных алгоритмов.

Операция сжатия производится только из командной строки, запущенной с правами администратора. К примеру, чтобы сжать один файл , воспользуемся командой:

compact /c /a /exe:lzx "C:\Program Files (x86)\mirkes.de\Tiny Hexer\mpth.exe"

Размер, занимаемый на диске данным исполняемым файлов уменьшился с 1,54 Мб до 0,7 Мб.

Сожмем содержимое всех файлов и подкаталогов в определенной директории:

compact /c /s /a /i /exe:lzx "C:\Program Files (x86)\*"


В нашем примере, размер каталога C:\Program Files (x86)\ на диске уменьшился почти в два раза.

Важно! Ни в коем случае не стоит сжимать целиком системный диск или каталог C:\Windows. Система может просто перестать загружаться (кейс со сжатием загрузчика разбирался в статье ).

Как правило, безопасно можно сжать следующие системные папки:

  • C:\Windows\Installer
  • C:\Windows\assembly
  • C:\Windows\Microsoft.NET
  • C:\Windows\Fonts
  • C:\Windows\Inf
  • C:\Windows\infused apps

Чтобы распаковать сжатые файлы, воспользуйтесь командами:

compact /u /a /exe “C:\Program Files (x86)\mirkes.de\Tiny Hexer\mpth.exe"
compact /u /a /s /exe "C:\Program Files (x86)\*"

Несмотря на постоянный рост емкостей носителей, проблемы с исчерпанием свободного места остаются все так же актуальными, особенно часто эта проблема встает перед владельцами SSD дисков, стоимость Гб места на которых пока достаточно высока. Использование LZX сжатия файлов в Windows 10 поможет сэкономить место на диске за счет небольшой потери производительности (практически не заметна на современных системах). Есть еще один нюанс: на медленных дисках за счет использования сжатия можно уменьшить время чтения больших файлов, т.к. распаковка файлов в памяти будет занимать меньше времени, чем чтение большого файла с диска.

Больше ёмкости с помощью NTFS-сжатия

Как энтузиасты, мы часто сталкиваемся с различными препятствиями на пути поддержания баланса между производительностью и затратами. Новые процессоры, видеокарты, наборы памяти, источники питания и производительность накопителя потенциально являются узким местом в этом балансе. К счастью ёмкость - не такая большая проблема. Даже жёсткие диски 2.5" предлагают более 750 Гбайт, что для большинства пользователей более чем достаточно. Несмотря на попытки Microsoft увеличить размер установки Windows, у вас всё равно остаётся масса свободного места для музыки, фильмов, игр и фотографий. Конечно, если говорить о разрушении барьеров, то всегда можно использовать приводы 3.5", ёмкость которых сегодня может достигать нескольких терабайт.

До недавнего наводнения в Таиланде, которое сильно повлияло на поставки жёстких дисков, можно было приобрести их объёмом 2 Тбайт по цене около $80 (в зависимости от модели и производителя). Обычным пользователям такой объём может показаться излишним, хотя те, у кого есть большая коллекция фильмов, заполнят его довольно быстро. Как бы то ни было, вопрос нехватки места у пользователей с большими накопителями возникает редко.

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

Маленькие SSD объёмом меньше 60 Гбайт заполняются практически сразу после установки Windows, набора Office и важных программ. Проблема малой ёмкости осложняется тем, что алгоритм "выравнивания" износа работает не так эффективно, когда привод полностью заполнен. Вот почему мы часто рекомендуем использовать SSD для чувствительной к производительности информации и жёсткие диски для остальных данных.

Сегодня наше внимание будет обращено на плюсы и минусы решения, которое Microsoft предлагает в своей ОС: функция сжатия файловой системы NTFS. Для работы её нужно только включить, что довольно удобно. Но что ещё стоит знать об этой функции?

Наша тестовая лаборатория постарается ответить на следующие вопросы: как включить сжатие данных, что конкретно сжимается и каким образом данная функция влияет на производительность SSD?

Системе NTFS 19 лет

Вместо ранее используемой системы FAT (FileAllocationTable), разработчик представил файловую систему NT, которая имело несколько заметных преимуществ. Например, компания Microsoft подняла предел количества символов в имени файла 8+3, оставшийся со времен DOS. В отличие от FAT, который позволял вводить только латинские символы для названий файлов, NTFS позволял вводить до 256 знаков набора Unicode. Это также поддерживалось системой FAT32, которая сменила FAT и была представлена в Windows 95b в 1997 году. Однако, обновлению тоже было тяжело конкурировать с NTFS.

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

Сжатие NTFS

NTFS использует алгоритм LZNT1 (версия LZ77) для сжатия данных без потерь и кластеры по 4096 байт для хранения данных. Система сжимает выходные данные блоками по 16 кластеров с шагом 64 кбайт. Если система не может сжать выходные данные из 16 кластеров в меньший размер, NTFS оставляет их неизменными. Если алгоритм LZNT1 может сжать блок данных 64 кбайт в 60 кбайт или меньше, освобождая при этом хотя бы один кластер, этот освобождённый кластер рассматривается как "разреженный" файл. NTFS игнорирует те части файла, которые не содержат информации или имеют объём 0 байт. Следовательно сжатый файл может состоять из сжатых и несжатых кластеров, а также из "разреженных" кластеров.

В схему сжатия включаются любые файлы, но как и любые другие типы сжатия файлов, алгоритм LZNT1 не эффективен при сжатие файлов, которые уже сжаты, типа JPG, AVI и ZIP. Сжатие производится на уровне файловой системы, поэтому оно не видно на уровне приложений. Чем дольше работает Windows и его приложения, тем меньше разница между сжатыми и не сжатыми файлами.

Преимущества: очевидно, что наибольшее преимущество NTFS-сжатия – это экономия свободного места. Владельцы небольших SSD будут особенно рады каждому дополнительному мегабайту. Увеличение сжатия и уменьшение размера фала должно увеличить скорость чтения и записи (по крайней мере в теории, так как меньше данных записывается и читается).

Недостатки: согласно Microsoft, NTFS-сжатие сильно нагружает CPU, и не рекомендуется для использования в серверах, содержащих большие тома для чтения и записи. Есть запреты даже для домашнего использования. Сжатие стоит использовать для папок с относительно редкой записью и чтением. Что ещё более важно, не сжимайте системную папку Windows. Также, в теории, операции копирования должны происходить медленнее, потому как файловая система сначала распаковывает нужный файл, копирует или перемещает его и затем снова сжимает. Если послать такие файлы по сети, они тоже сначала распакуются и как следствие не сэкономят трафик.

Стоит отметить ещё один фактор: NTFS-сжатие сегментами по 64 кбайт сильно фрагментирует данные, особенно легко сжимаемые файлы, так как они будут связаны с "разреженными" кластерами. Это легко показать на примере: по данным Microsoft, в среднем, NTFS-сжатие блоками данных по 64 кбайт генерирует один "разреженный" кластер. Деление файловой системы объёмом 20 Гбайт на сегменты по 64 кбайт генерирует 327 680 "разреженных" кластеров. Это особенно актуально для жёстких дисков, твердотельные накопители страдают меньше, потому что их время доступа настолько низкое, что фрагментация не является для них большой проблемой.

Конфигурация и тесты

Как сильно NTFS-сжатие влияет на производительность системы, оснащённой SSD? Мы уже знаем, что технология SandForce использует сжатие, чтобы получить высокие результаты, поэтому мы хотим опробовать привод, который не опирается на сжатие. Мы взяли один из новых приводов Samsung 830 серии и сравнили его производительность при включенном и выключенном сжатии.


Тестовая конфигурация
CPU Intel Core i5-2500K (32-нм, Sandy Bridge, D2), 4C/4T, 3.3 ГГц, кэш L2 4 x 256 кбайт, 6 Мбайт общего кэша L3, w/ HD Graphics 3000, 95 Вт TDP, 3.7 ГГц max. Turbo Boost
Материнская плата (LGA 1155) Gigabyte Z68X-UD7-B3, ревизия: 1.0, чипсет Intel Z68, BIOS: F9C
Память 2 x 4 Гбайт DDR3-1333, Kingston KHX1600C9D3K2/8GX
Системный SSD Samsung SSD 830, 256 Гбайт, SATA 6 Гбит/с
Контроллер Intel PCH Z68 SATA 6 Гбит/с
Блок питания Seasonic X-760 760 Вт, SS-760KM
Тесты
Измерение производительности SYSmark 2012
PCMark 7 1.0.4
ПО и драйверы
Операционная система Windows 7 x64 Ultimate SP1
Intel Rapid Storage 10.6.0.1002
Intel Inf 9.2.0.1030
AMD Catalyst 11.8

NTFS-сжатие на практике

NTFS-сжатие включается всего несколькими кликами. В Windows Explorer откройте контекстное меню для любого привода или папки, выберите свойства и в следующем окне выберите опцию "сжать этот диск для экономии места" ("Compress this drive to save disk space") или "сжимать содержимое для экономии места на диске" ("Compress contents to save disk space"). Всё можно вернуть просто отменив опцию.

После выбора тома или папки, процесс сжатия начнётся автоматически в фоновом режиме. Windows доложит об ошибке, когда файл нельзя сжать. Затем вам надо будет выбрать: попытаться снова сжать файл (что снова приведёт к той же ошибке), отменить либо проигнорировать сообщение. Из-за большого количества ошибок при сжатии раздела, мы решили выбрать четвёртый вариант: игнорировать все последующие ошибки. Частота таких сообщений зависит от выбранной папки. Для папки Windows и её подпапок они возникают очень часто, показывая, что системные файлы не подвергаются NTFS-сжатию.

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

Несжатые приложения, установленные на наш тестовый SSD занимали 70.9 Гбайт дискового пространства. Вместо того, чтобы выбрать отдельные папки, мы сжали сразу целый раздел, таким образом, занимаемое пространство сократилось до 58.4 Гбайт (минус 17.8%), освободив 12.5 Гбайт всего за пару кликов мышкой.

Если сравнивать плотность NTFS-сжатия с другими инструментами, то она оказывается довольно низкой, что, в свою очередь, положительно влияет на нагрузку процессора. Такие инструменты, как 7-Zip ведут себя более агрессивно, чтобы достичь высокого коэффициента сжатия. Для примера, в таблице ниже показана степень сжатия трёх папок с помощью 7-Zip.

Инструмент сжатия Папка Первоначальный размер Размер после сжатия Разница в процентах
7-Zip Program Files (x86) 17.4 Гбайт 10.2 Гбайт 40.30%
7-Zip Program Files 8.5 Гбайт 3.1 Гбайт 63.50%
7-Zip Windows 15.1 Гбайт 3.2 Гбайт 78.80%
NTFS-сжатие Весь привод 70.9 Гбайт 58.4 Гбайт 17.60%

Результаты тестов

Последовательная чтение/запись (CrystalDiskMark)

С включенным NTFS-сжатием производительность привода Samsung в последовательном чтении данных немного ухудшается. Однако, потеря в записи очевидна. В результате фрагментация во время сжатия из-за "разреженных" кластеров не сильно повлияла на производительность, хотя разница заметна.


Случайное чтение/запись по 4 кбайт (CrystalDiskMark)

Переключение на NTFS-сжатие никак не влияет на данный процесс.




Случайное чтение/запись по 512 кбайт (CrystalDiskMark)

NTFS-сжатие обеспечивает существенное увеличение производительности при случайной записи блоков по 512 кбайт. Однако, в операциях чтения улучшение едва заметно.


Запуск приложений, старт и выключение Windows

В среднем, NTFS-сжатие добавляет одну секунду к времени запуска программ.


PCMark 7

PCMark 7 подтверждает, что включение NTFS-сжатия ведёт к увеличению скорости работы в играх и при загрузке приложений, но почти во всех остальных дисциплинах лидерство либо мало, по сравнению с не сжатым системным приводом, либо результаты ниже. Следовательно, общий результат не даёт полной картины.














SYSmark 2012

Тестовый набор приложений BAPCo SYSmark 2012 также показывает нейтральный эффект NTFS-сжатия, хотя результаты указывают немного в пользу конфигурации без сжатия.







Стоит ли сжимать данные на вашем SSD?

Активация NTFS-сжатия даёт результат на высокопроизводительных компьютерах с быстрым многоядерным процессором, потому что так можно выжать больше пространства на SSD без значительной потери производительности. Сравнение с мощными инструментами, типа 7-Zip показало, что NTFS-сжатие ведёт себя менее агрессивно и исключает важные системные файлы Windows. Таким образом, оно не спроектировано для того, чтобы максимально сжать любую доступную информацию.

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

У инструментов восстановления не должно возникнуть проблем со сжатием, поскольку функция имеется в NTFS уже более десяти лет и следовательно хорошо известна разработчикам программ. Мы не можем дать вам всеобъемлющую информацию, но мы без проблем запустили бэкап сжатых разделов с помощью Acronis TrueImage Home 2011.

Несмотря на умеренные темпы, NTFS-сжатие действительно высвобождает немного свободного пространства, так необходимого на SSD. На нашей тестовой системе оно подарило нам целых 12.5 Гбайт. А это немало, особенно для небольших SSD. Если говорить только об SSD на 60 и 100 Гбайт, 10 Гбайт – это много. Владельцы объёмных SSD тоже следует задуматься об NTFS-сжатии. Тем более, если у вас достаточно быстрый процессор, нет причин не включить её.

Количество высвобождаемого места зависит от типа данных, которые вы сжимаете. Большинство медиафайлов уже сжаты, так что многого вы от них не получите. Однако, сжатие таких файлов как журналы серверов и файлы Excel освободит немало пространства на приводе.

Стоит отметить ещё кое-что. Информация, сжимаемая на лету, требует больше циклов записи на SSD, чем не сжатая. Это может негативно повлиять на долговечность привода. Мы не говорим о больших SSD, напротив, модели с меньшим объёмом памяти имеют более низкий уровень долговечности. Таким образом, NTFS-сжатие может значительно повлиять на их срок службы.

В этой статье хотелось бы поговорить о функции Windows, позволяющей существенно сэкономить место на жестком диске – функции сжатия. Впервые встроенная функции сжатия появилась в ОС Windows XP, в последующих версиях Windows эта функция неизменно присутствует. Поддерживаются два типа сжатия:

  • NTFS сжатие на уровне файловой системы
  • Сжатые ZIP-папки (Compressed Folders)

Сжатие NTFS – это архивирование на уровне файловой системы NTFS, выполняется оно прозрачно драйвером файловой системы. NTFS сжатие может применяться к файлам, папкам и дискам целиком. Для этого каждому сжатому объекту присваивается специальный атрибут сжатия (compression state), который указывает сжат файл или нет. У этого типа сжатия есть свои особенности:

  • Сжатие NTFS возможно только на разделах с файловой системы NTFS
  • При доступе к сжатому файлу или папке осуществляется прозрачная декомпрессия, т.е. пользователь не видит различий между сжатыми и обычными файлами в Windows, и спокойно может копировать, добавлять или удалять файлы в сжатой папке.
  • Для отображения объектов, сжатых на NTFS, применяется специальная цветовая схема (по умолчанию, в проводнике имена сжатые файлов отображаются синим цветом)
  • Скорость доступа к сжатому файлу ниже, т.к. систем требуется некоторое время на его распаковку (для современных систем такая операция сложностей не создает, так что задержка практически не видна невооруженным взглядом).
  • Сжатие более слабое, чем при использовании ZIP-папок или других архиваторов, но скорость его выполнения гораздо выше

Сжатые ZIP-папки подразумевают архивацию файлов встроенной в систему функцией создания zip архивов. Сжатые папки очень похожи на обычные, иногда даже можно забыть, что на самом деле работаешь с ZIP-архивом. Особенности ZIP-папок в Windows:

  • Сжатые ZIP-папки можно создавать как на томах NTFS, так и на томах FAT.
  • Из сжатой Zip-папки можно открывать файлы и даже запускать некоторые приложения
  • Zip-папку можно передать на другой компьютер, где ее можно распаковать любой другой программой сжатия.
  • Для сжатия файла нужно просто переместить его в сжатую Zip-папку. Когда файл перемещается их такой Zip-папки в обычную, он автоматически распаковывается.

Как сжать папку в Windows

Чтобы включить NTFS сжатие на каталоге, необходимо в проводнике Windows Explorer щелкнуть по нему правой кнопкой мыши и выбрать свойства.

Затем нажать на кнопку Advanced (Другие) и отметить опцию Compress contents to save disk space (Сжимать содержимое для экономии места для диске ) и нажать дважды OK.

Система может спросить: хотите ли вы применить изменения только на папку или также и на все подкаталоги (обычно выбирается 2 пункт, Apply changes to this folder, subfolders and files )

В результате имя сжатого каталога и его содержимое будет отображаться в проводнике синим цветом, что означает – к объекту применено NTFS сжатие.

Сравним степень сжатия встроенными средствами Windows

Сравним уровень сжатия различными инструментами, для чего из одной и той же папки (в моем случаем папка содержит документы Excel и Word)сначала создадим zip-архив (правой кнопкой мыши по каталогу Send to->Compressed(zipped) folder), затем на том же каталоге включим NTFS компрессию.

Оригинальный размер папки – 145 М б

Размер zip-папки 27,4 Мб

Размер папки со включенным NTFS сжатием – 51 Мб (значение поля Size on disk в свойствах сжатой папки)

Т.е. в моем случае сжатие в папку ZIP наиболее эффективно и уменьшило размер каталога, занимаемый им на диске на 81% (в то время, как NTFS сжатие всего на 65% ).

Однако со сжатием нужно быть осторожным, оно может привести к ошибке, описанной в статье . Кроме того, если включить сжатие на каталоге с большим (очень большим) количеством файлов, то проверка такого диска (chkdsk) может занять ОЧЕНЬ большой период времени, а если , то держитесь, рабочий стол появится не скоро..

Перед тем как начинать процесс сжатия файла или папки, очень важно понять все получаемые от этого выгоды, и разобрать сами доступные в Windows 7 методы сжатия:

  • NTFS сжатие файла
  • Сжатие (zip) папки.

Сжатие данных уменьшает размер файла, минимизируя его избыточные данные. В текстовом файле избыточными данными часто бывают определенные знаки, например, символ пробела или общие гласные (e и a), а также строки символов. Сжатие данных создает сжатую версию файла, минимизируя эти избыточные данные.

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


Файловая система NTFS поддерживает сжатие файлов на основе отдельного файла. Алгоритмом сжатия файла здесь является алгоритм сжатия без потерь, это означает, что при сжатии и распаковке файла данные не теряются. В других алгоритмах при сжатии и последующей декомпрессии часть данных теряется.

Сжатие NTFS, доступное на использующих файловую систему NTFS жестких дисках, имеет следующие ограничения и особенности:

  • Сжатие - атрибут для файла или папки.
  • Папки и файлы на томе NTFS, либо сжаты, либо нет.
  • Новые файлы, созданные в сжатой папке сжимаются по умолчанию.
  • Состояние сжатой папки не обязательно отражает состояние сжатия файлов в этой папке. Например, папки могут быть сжаты без сжатия его содержания, и некоторые или все файлы в сжатой папке можно распаковать.
  • Работа с NTFS-сжатыми файлами без их распаковки, так как они распаковываются и снова сжимаются без вмешательства пользователя.
  • Если сжатый файл открыт, система автоматически его распаковывает.
  • При закрытии файла Windows снова его сжимает.
  • Для упрощения распознавания, NTFS сжатые имена файлов и папок отображаются в другом цвете.
  • NTFS-сжатые файлы и папки остаются в сжатом виде, только на NTFS томе.
  • NTFS сжатые файлы не могут быть зашифрованы.
  • Сжатые байты файла недоступны для приложений; они видят только несжатые данные.
  • Приложения, открывающие сжатые файлы могут работать с ними, как с не сжатыми.
  • Сжатые файлы не могут быть скопированы в другой файловой системе.

Примечание: для управления сжатием NTFS можно использовать компактный инструмент командной строки.

Перемещение и копирование сжатых файлов и папок.


Перемещенные или скопированные сжатые файлы и папки могут изменить свое состояние сжатия. Ниже приводиться пять ситуаций, в которых рассматривается влияние копирования и перемещения на сжатые файлы и папки.

Копирование внутри раздела раздела NTFS.

Как изменяется состояние сжатого файла или папки, если вы его копируете внутри раздела NTFS? При копировании файла или папки внутри файловой системы NTFS раздел, файл или папка наследует состояние сжатия целевой папки. Например, если скопировать сжатый файл или папку в распакованную папку, файл или папка будут автоматически распакованы.

Перемещение внутри NTFS раздела.

Что происходит с состоянием сжатия файла или папки при перемещении в пределах раздела NTFS?

При перемещении файла или папки внутри раздела NTFS, файл или папка сохраняет свое первоначальное состояние сжатия. Например, при перемещении сжатого файла или папки в несжатом папку, файл остается сжатым.

Копирование или перемещение между NTFS разделами.

Что происходит с сжатыми файлом или папкой при копировании или перемещении его между разделами NTFS?

При перемещении файла или папки между разделами NTFS, файл или папка наследует состояние сжатия целевой папки. Поскольку Windows 7 рассматривает движение между разделами как копирование с последующей операцией удаления, файлы наследуют состояние сжатия целевой папки.

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

Копирование или перемещение между FAT и NTFS томами.

Что происходит с сжатием файла, который копируется или перемещается между FAT и NTFS томами?

Сжатые файлы, скопированные в раздел FAT становятся не сжатыми, так как FAT тома не поддерживают сжатие. Однако, если вы копируете или перемещаете файлы из раздела FAT в раздел NTFS, они наследуют атрибут сжатия папки, в которую вы их копируете.

При копировании файлов, файловая система NTFS вычисляет дисковое пространство, основанное на размере несжатого файла. Это важно, потому что файлы во время процесса копирования не сжаты, и система должна гарантировать достаточное пространство. Если Вы пытаетесь копировать сжатый файл в раздел NTFS, а у него нет свободного места для несжатого файла, перед вами появиться сообщение об ошибке, которое вас уведомит о недостаточности дискового пространства для файла.

Сжимать, или не сжимать, вот в чем вопрос. ” – к таким отнюдь не праздным размышлениям в стиле шекспировского “Гамлета” приходит в конце концов наверно каждый, кто исчерпал все иные способы освобождения места на жестком диске.

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

В очередной раз я обратился к ntfs сжатию когда переносил операционную систему Windows 7 на твердотельный накопитель небольшого размера. В своем исходном виде загрузочный раздел Windows категорически не мог поместиться на маленьком 60 (55,8) гигабайтном SSD.

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

Одной из системных папок, которая занимает достаточно много места на диске, является WinSxS. Оказалось, что в силу ее специфики ни удалить часть файлов из этой папки, ни перенести ее целиком на второй диск не представлялось возможным.

Забегая вперед, так как статья на эту тему еще только готовится к публикации, скажу, что вслед за Windows 8 и Windows 8.1 в Windows 7 буквально два дня назад наконец появились средства для обслуживания содержимого WinSxS. Следите за публикациями блога. Для этого достаточно .

Тогда для уменьшения размера WinSxS было принято решение сделать ntfs-сжатие уникальных файлов в этой папке. Описание технологии такого выборочного сжатия и готовый скрипт можно найти в .

Сжатие файлов в папке WinSxS позволило высвободить больше 2 ГБ дискового пространства. Вместе с этим захотелось оценить как повлияла компрессия на скорость дисковых операций. Тем более, что твердотельный накопитель, ради которого все это делалось, уже и так использует встроенное сжатие данных (Intel SSD 520 Series).

Методика измерения скорости чтения диска

Найти в Интернет заслуживающую доверия информацию о влиянии ntfs-сжатия на скорость дисковых операций не получилось. Материалов на удивление мало и часто информация в них носит чисто умозрительный характер — если процессор быстрый, а диск медленный, то будет хорошо, если наоборот, то будет плохо .

В этой статье представлена попытка количественной оценки скоростных характеристик сжатых и не сжатых носителей с помощью теста CristalDiskMark . Однако, описанные в ней результаты, отличающиеся в пределах погрешности измерений, вызывают сомнения. Логика и практический опыт подсказывают, что тут что-то не так.

Как будет показано чуть ниже на примере тестирования с помощью CristalDiskMark диска RAMDisk , сомнения были обоснованными.

Почему CristalDiskMark намеряет в этом случае практически одинаковые показатели сказать трудно, но для того, чтобы получить более “жизненные” результаты, была использована следующая методика.

Идея ее чрезвычайно проста – измерить время считывания с носителя некого заданного набора данных. Далее, зная объем считанных данных, несложно вычислить среднюю скорость чтения.

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

Первоначальная идея копировать файлы на фиктивное устройство «nul » после первых же измерений показала свою полную несостоятельность.

Для оценки скорости чтения данных с механического HDD в качестве целевого диска в принципе можно было бы использовать твердотельный накопитель. Но как измерить скорость чтения с самого SSD?

В конечном счете для того, чтобы создать очень быстрое устройство на которое можно копировать файлы, была использована программа Dataram RAMDisk . Эта замечательная программа позволяет создавать диски в свободной оперативной памяти компьютера. В ее бесплатном варианте объемом до 4 ГБ. Для наших целей этого более чем достаточно.

В повседневной практике Dataram RAMDisk может с успехом использоваться в компьютерах с большой оперативной памятью и 32-разрядной операционной системой Windows. Если в незадействованной операционной системой части RAM создать такой быстрый диск и перенести на него некоторые критичные для скорости чтения/записи файлы, то поведение компьютера можно заметно оживить.

После создания RAM-диска, для измерения времени считывания (копирования) файлов из некоторой заданной папки, можно воспользоваться, например, командой:

robocopy X:\Testfiles\ R:\Testfiles\ /E /XJ X: – буква исследуемого диска;
R: – буква, присвоенная RAM-диску;
Testfiles – папка с тестовыми файлами.

Команда robocopy самостоятельно подсчитает объем данных V files , затраченное время T read и среднюю скорость операций копирования C read .

Для сравнения использовались команды copy и xcopy :

@echo off
format R: /FS:NTFS /Q
@echo %time%
for /R "X:\Testfiles" %%i in (*) do (
copy /Y %%i "R:\"
rem xcopy %%i R:\ /Y
@echo %time%
pause>nul

Зная общий объем файлов V files в тестовой папке вычислялась скорость чтения данных с диска:

C read = V files / T read

Все достаточно очевидно. Кроме того можно отметить, что результаты, полученные при использовании разных команд, оказались одинаковыми.

Тестовое оборудование, тестируемые накопители, наборы данных

Компьютер

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

Процессор: Intel I7 950, 3,07 GHz
Системная плата: Intel DX58SO
Системная память: 6 Gb (3 x 2 Gb DDR3-1080 MHz)
Видеоадаптер: AMD ATI Radeon HD 5700 Series (1024 Мb)
Операционная система: Microsoft Windows 7 Корпоративная SP1

Тестируемые накопители

Всего в тестах участвовали четыре жестких диска: два полноразмерных (3,5”) диска Seagate Barracuda, быстрый диск для ноутбука (2,5”) Seagate Momentus и твердотельный накопитель Intel 520 Series. Основные параметры дисков представлены в следующей таблице:

Модель / параметры

ST3500418AS Seagate Barracuda 7200.12

ST31000528AS Seagate Barracuda 7200.12

ST9250410AS Seagate Momentus 7200.4

SSDSC2CW060A Intel 520 Series

N
Скорость вращения шпинделя 7200 7200 7200
Объем накопителя, Гб 500 1000 250 60
Формат накопителя 3,5” 3,5” 2,5” 2,5”
Буфер, Мб 16 16 16
Интерфейс SATA-II 3 Гб/с SATA-II 3 Гб/с SATA-II 3 Гб/с SATA-III 6 Гб/с
Поддержка NCQ Есть Есть Есть Есть

Тестовые наборы данных

Для того, чтобы максимально приблизить условия тестирования к реальным и оценить как ntfs-сжатие влияет на скорость чтения различных типов данных, были созданы четыре набора разнотипных файлов:

Данные / характеристики

N
Количество файлов 616 399 3684 1
Несжатый объем, Мб 166 642 616 691
Сжатый объем, Мб 121 640 428 686
Коэффициент сжатия 1,37 1 1,44 1

Как видно из представленной таблицы, половина из выбранных для тестирования данных практически не меняет свой размер после ntfs-компрессии. К ним относятся форматы файлов со сжатием, такие как фотографии в форматах jpg и raw (nef ) и образ диска iso .

Надо сказать, что найти на компьютере в необходимом количестве реальные данные с большим коэффициентом ntfs-сжатия оказалось очень сложно. К таковым можно было бы смело отнести все чисто текстовые форматы, но по объему их крайне мало. А документы, например, Microsoft Office изначально имеют сжатый формат. Электронные книги так же часто представлены с сжатом виде.

Данные, обозначенные как WinSxS , представляют собой файлы, произвольно выбранные в папке C:\Windows\winsxs . Как понятно из предисловия к статье, выбор содержимого этой папки для тестирования совершенно не случаен.

Результаты измерения скорости чтения ntfs-сжатых данных

Еще несколько слов о процедуре тестирования.

Выбранные для тестирования данные размещались в четырех соответствующих папках на испытуемом носителе, после чего выполнялась его дефрагментация штатным дефрагментатором Windows (defrag).

Для того, чтобы максимально исключить влияние кеширования дисковых операций системой, диск в памяти создавался максимально возможного размера, то есть около 4 Гб.

Все измерения повторялись 5 раз. Опять же для исключения влияния кеша, во всех последовательных измерениях использовались разные данные.

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

Dataram RAMDisk

Предварительно была сделана попытка оценить скорость чтения/записи сжатых и несжатых данных на диске RAMDisk с помощью уже упомянутого в начале статьи популярного теста CristalDiskMark . Однако результаты измерений в обоих случаях оказались практически идентичными. То есть, если верить этому тесту, то получается, что ntfs-сжатие диска не оказывает никакого влияния на его скоростные характеристики. А это совершенно не верно.

На первой диаграмме представлены скоростные характеристики RAMDisk. Считываемые данные записывались на этот же диск в отдельную папку. Так как отдельно подсчитать скорость чтения и записи в этом случае не представлялось возможным, условно было принято, что для несжатых данных они равны. Время считывания ntfs-сжатых данных рассчитывалось как разность общего времени операции и половины времени операции чтения/записи несжатых файлов.

При измерении таким способом влияние ntfs-сжатия оказалось весьма существенным и отличающимся для разных типов данных. Наибольшая деградация скорости чтения (40% и 54% от первоначальной) получилась, соответственно, для файлов электронных книг и фалов из папки winsxs. То есть для «сжимающихся» в результате ntfs-компрессии файлов.

Никакого особого практического смысла данные измерения RAM-диска не несут. Однако, они показывают, что для всех типов файлов RAM-диск пригоден в качестве целевого накопителя.

ST3500418AS Seagate Barracuda 7200.12 (500 Гб)

По сравнению с другими механическими дисками, участвовавшими в тестировании, 500 гигабайтный однодисковый Seagate Barracuda ST3500418AS неожиданно показал удивительные результаты в смысле его отношения к ntfs-сжатым данным. Падение скорости чтения компрессированных данных имело место лишь при копировании файлов фотографий (64% от первоначальной).

К сожалению, если впоследствии дело дойдет до тестирования скорости записи, то этот накопитель участвовать в нем уже не будет. К нему в полной мере можно отнести выражение “Сгорел на работе”. Некоторое время назад без каких бы то ни было предупреждений этот HDD умер в момент раскрутки шпинделя. Наверное его сгубила его же шустрость.

ST31000528AS Seagate Barracuda 7200.12 (1 Тб)

Следующим протестированным представителем семейства Seagate Barracuda явился вдвое более “толстый” ST31000528AS . Особенностью этого диска явилось то, что он очень хорошо справился с несжимаемыми файлами (“photo”, “iso”), однако “провалился” на сжимаемых (“books”, “winsxs”).

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

ST9250410AS Seagate Momentus

Третьим номером был протестирован быстрый HDD для ноутбуков Seagate Momentus ST9250410AS (250 Гб). Главной особенностью этого диска является скорость вращения шпинделя 7200 об/мин. Этот накопитель продемонстрировал удивительно ровное, за исключение “photo” (как и в случае с ST3500418AS), отношение к сжатым данным.

Учитывая, что на практике вряд ли кто-то будет размещать фотографии в ntfs-сжатой папке, владельцам этого жесткого диска можно смело порекомендовать использовать сжатие файлов в случае необходимости освободить дисковое пространство.

Еще одной совершенно необъяснимой особенностью всех полученных результатов явилось увеличение скорости чтения несжимаемого файла большого размера (“iso”) у всех механических дисков. Возможно, что в данном случае имеет место некое несовершенство принятой методики измерения, но найти его я не смог. Буду крайне признателен, если кто-то предложит свое объяснение этого феномена.

SSDSC2CW060A Intel 520 Series

Последним протестированным жестким диском, который на самом деле и инициировал проведение тестирования, явился твердотельный накопитель Intel 520 Series SSDSC2CW060A .

Особенностью этого накопителя является то, что установленный в нем контроллер SandForce SF-2281 уже использует сжатие данных и можно предположить, что этот диск должен хуже всех остальных справиться с ntfs-сжатием.

Как видно из полученных результатов, чтение плохо сжимаемых данных (“photo”, “iso”) действительно осуществляется медленнее (соответственно 80% и 66% от скорости чтения несжатых файлов). А вот сжимаемые ntfs-сжатые файлы (“books”, “winsxs”) вопреки ожиданиям читаются даже быстрее. Учитывая, что на практике именно последние, как мы уже говорили, скорее всего будут подвергнуты ntfs-компрессии, это обстоятельство не может не радовать.

Выводы

Так сжимать, или не сжимать? Можно ли на основании полученных данных дать однозначный ответ на этот вопрос? Однозначный, видимо, не получится.

Во-первых, тестирование проводилось на одном единственном компьютере с достаточно быстрым процессором.

Если эта тема окажется интересной читателям, то тестирование можно продолжить для других типов компьютеров.

Во-вторых, как неожиданно оказалось, очень много в этом случае зависит как от типа данных, так и непосредственно от жесткого диска.

На основе полученных на данный момент времени результатов можно сказать следующее.

Три из четырех протестированных накопителей, включая и SSD, продемонстрировали очень хорошие результаты при чтении ntfs-компрессированных сжимаемых данные, представленных наборами “books” и “winsxs”. Имело место или незначительное снижение скорости чтения или даже ее увеличение.

Как это ни странно, хуже всех с этой задачей справился накопитель большой емкости ST31000528AS Seagate Barracuda 7200.12 (1 Тб). С другой стороны, включать ntfs-сжатие на жестком диске такой емкости вряд ли кому-то потребуется, так как в этом случае справится с проблемой нехватки свободного места на загрузочном разделе Windows можно другими способами. Например, простым увеличением размера соответствующего раздела.

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

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

Дело в том, что так как ntfs-сжатие осуществляется сегментами по 64 килобайта, оно заметно фрагментирует данные. В сжимаемых файлах появятся «разреженные» кластеры. По данным самой Microsoft ntfs-сжатие создает в среднем один «разреженный» кластер на каждые 64 кБ. Нетрудно подсчитать, что после ntfs-сжатия на каждый гигабайт будет приходиться 16384 «разреженных» кластера.

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