Файлы NTFS имеют один довольно полезныйатрибут - "сжатый". Дело в том, что NTFSимеет встроенную поддержку сжатия дисков -то, для чего раньше приходилосьиспользовать Stacker или DoubleSpace. Любой файл иликаталог в индивидуальном порядке можетхранится на диске в сжатом виде - этотпроцесс совершенно прозрачен дляприложений. Сжатие файлов имеет оченьвысокую скорость и только одно большоеотрицательное свойство - огромнаявиртуальная фрагментация сжатых файлов,которая, правда, никому особо не мешает.Сжатие осуществляется блоками по 16кластеров и использует так называемые "виртуальныекластеры" - опять же предельно гибкоерешение, позволяющее добиться интересныхэффектов - например, половина файла можетбыть сжата, а половина - нет. Это достигаетсяблагодаря тому, что хранение информации окомпрессированности определенныхфрагментов очень похоже на обычнуюфрагментацию файлов: например, типичнаязапись физической раскладки для реального,несжатого, файла:
кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го
...
Физическая раскладка типичного сжатогофайла:
кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 10 по 16-й нигде не хранятся
кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го
кластеры файла с 19 по 36-й нигде не хранятся
....
Видно, что сжатый файл имеет "виртуальные"кластеры, реальной информации в которых нет.Как только система видит такие виртуальныекластеры, она тут же понимает, что данныепредыдущего блока, кратного 16-ти, должныбыть разжаты, а получившиеся данные как раззаполнят виртуальные кластеры - вот, по сути,и весь алгоритм.