Утилиты сжатия жесткого диска
Сжатие диска - технология, увеличивающая эффективную емкость жестких дисков благодаря хранению информации в сжатом виде и последующему восстановлению и повторному сжатию данных при необходимости. Обработка происходит невидимо для пользователя. Время, затрачиваемое на сжатие и распаковку данных, может снизить производительность, но потери невелики и в целом незаметны. Хотя риск потери данных минимален, сжатие диска увеличивает вероятность аварий. Лучшие утилиты обеспечивают максимальный коэффициент сжатия данных в сочетании с наименьшими потерями производительности и наделены функциями и средствами резервирования для предотвращения потери данных.
Средства сжатия дисков, впервые появившиеся в составе DOS 6.0, стали причиной судебной тяжбы между корпорацией Microsoft и фирмой Stac Electronics, создателем утилиты сжатия дисков Stacker. Microsoft приобрела лицензию на программу DoubleDisk у компании Vertisoft и заменила математический алгоритм сжатия процедурой, похожей на применяемую в утилите Stacker. Фирма Stac считает, что при этом были нарушены ее авторские права. Stac получила компенсацию за понесенные убытки, а утилита Microsoft DoubleSpace была изъята из DOS и заменена в версии 6.22 программой DriveSpace. Первая реализация DriveSpace выполняла сжатие не столь хорошо, как Stacker. Новые версии, DriveSpace 2 и DriveSpace 3, поставляемые с Windows 95, были переработаны, с тем чтобы повысить их производительность до конкурентоспособного уровня. Единственным независимым поставщиком средств сжатия для Windows 95 в момент подготовки этого отчета была фирма Stac.
Все версии Windows 95 поставляются с утилитой DriveSpace 2, которая может сжимать диски емкостью не более 256 Мбайт до эффективного размера 512 Мбайт. Если вы купите пакет Microsoft Plus, то получите утилиту DriveSpace 3, которая может создавать сжатые диски емкостью до 2 Гбайт и обеспечивает более высокий коэффициент сжатия.
Как происходит сжатие диска
Утилиты сжатия диска упаковывают все данные из раздела жесткого диска и хранят их в большом файле, именуемом файлом сжатого диска (compressed volume file, CVF). CVF обычно хранится на отдельном виртуальном диске, который называется хост-диском (host drive). Драйвер, загружаемый до начала выполнения CONFIG.SYS, заставляет операционную систему воспринимать CVF в качестве жесткого диска.
Утилиты сжатия диска, как правило, используют метод сжатия LZW, в котором используется однопроходный алгоритм, пригодный для функционирования в реальном времени. Сжатие осуществляется путем кодирования информации таким образом, что файлы наиболее распространенных типов, встречающихся на жестком диске, удается разместить в меньшем пространстве. В процессе как сжатия, так и восстановления данных LZW динамически создает кодировочный справочник и корректирует свой алгоритм в процессе его выполнения, добиваясь максимального коэффициента сжатия.
На дисках, не подвергавшихся сжатию, минимальным выделяемым блоком является кластер. Размер кластера - число входящих в него 512-байт секторов - зависит от объема жесткого диска. Чем больше емкость жесткого диска, тем больше должен быть размер кластера. Это объясняется тем, что таблица распределения файлов (FAT) может содержать лишь 65 536 элементов, каждому из которых соответствует один кластер. 4-Кбайт кластер состоит из восьми секторов и может адресовать дисковое пространство, равное произведению чисел 4096 (4 Кбайт) и 65 536, или 256 Мбайт. Таким образом, для диска объемом до 512 Мбайт требуются 8-Кбайт кластеры; для 1-Гбайт диска - 16-Кбайт кластеры; а для 2-Гбайт диска - 32-Кбайт кластеры. Даже если файл не заполняет весь последний кластер, выделяется целый кластер, а незанятое пространство пропадает впустую.
Другой способ, применяемый в утилитах сжатия для уплотнения данных на диске, состоит в распределении дискового пространства не кластерами, а секторами или более мелкими блоками. Благодаря этому уменьшается объем неиспользуемого дискового пространства между файлами. В программе Stacker используются 16-байт блоки, в DriveSpace 2 - секторы (512-байт элементы), в DriveSpace 3 - 32-Кбайт кластеры. В дополнение к таблице распределения файлов CVF имеет некоторые специальные структуры для адресации блоков выделения, имеющих меньшие размеры, нежели кластеры.
Будьте осторожны
Поскольку для сжатия и хранения данных используются не такие, как обычно, методы, вероятность ошибок возрастает. По этой причине утилиты для сжатия дисков относятся к наиболее тщательно проверяемым из всех программных средств, поставляемых на рынок, и наделяются средствами самопроверки и резервирования, способными исправить почти любую ошибку.
Периодически выполняя дефрагментацию CVF, вы сможете сохранить высокий коэффициент сжатия и освободить много места на жестком диске. Размер свободного пространства, сообщаемый по команде DIR, вычисляется на основе оценки коэффициента сжатия для данного диска. Со временем, по мере того как CVF становится фрагментированным, реальное значение коэффициента сжатия может отличаться от теоретического. Чтобы получить точное представление об имеющемся в вашем распоряжении дисковом пространстве, следует периодически приводить теоретический коэффициент сжатия в соответствие с его реальным значением. После выполнения дефрагментации диска всегда следует заново определить теоретическое значение коэффициента сжатия.
Если вы используете сжатые диски, то для управления ими вам понадобятся инструменты, учитывающие особенности организации сжатых дисков. Стандартные программы-дефрагментаторы имеют дело с кластерами, а фрагментация сжатых дисков происходит на уровне минимальных выделяемых блоков. Убедитесь в том, что ваши дисковые утилиты совместимы с программами сжатия, установленными в вашей системе. Трудности возникают также при создании резервных копий сжатых дисков. Для резервирования необходимо использовать программное обеспечение, которое копирует данные на файловом уровне, а не создает образ диска.
Поскольку обе версии утилиты DriveSpace так похожи (за исключением показателей производительности), им в нашем обзоре посвящается одна статья.
DriveSpace 3
Microsoft Corp.
Стандартная версия Microsoft Windows 95 поставляется вместе с утилитой сжатия диска DriveSpace 2, в которой используется умеренно эффективный метод сжатия и могут создаваться сжатые диски объемом до 512 Мбайт. В состав пакета Microsoft Plus входит более совершенная версия программы, DriveSpace 3, которая способна сжимать диски емкостью до 2 Гбайт и обеспечивает более высокий коэффициент сжатия. Интерфейс обеих утилит в общих чертах совпадает. Во время инсталляции пакета Microsoft Plus утилита DriveSpace 2 удаляется.
Так как обе версии DriveSpace для Windows 95 представляют собой 32-разрядные программы, способные распознавать длинные имена файлов, то они обладают преимуществом перед утилитой Stacker 4.1, которая остается 16-разрядной программой, использующей в своих внутренних операциях короткие имена файлов. DriveSpace 3 также показала в наших тестах более высокий коэффициент сжатия, чем Stacker 4.1.
Читайте документацию
Если Stacker в чем-то превосходит DriveSpace, то в качестве документации. В руководстве по Windows 95 имеется короткое упоминание об утилите, пять страниц посвящены ей в руководстве по Microsoft Plus, но наиболее подробно DriveSpace документирована в Help-файле вспомогательного модуля. Однако даже там описано не все. Например, отсутствует раздел, в котором объяснялось бы, как разрешать проблемы, время от времени возникающие со сжатыми дисками.
Чем выше коэффициент сжатия диска, тем более сложная обработка требуется для поддержания уровня сжатия. В зависимости от вашей потребности в объеме памяти и скорости компьютера вы можете выбрать малый коэффициент сжатия и высокое быстродействие - либо, наоборот, предпочесть большой коэффициент сжатия в ущерб быстродействию.
DriveSpace 3, как и Stacker, предусматривает настраиваемый коэффициент сжатия, и вы можете подобрать его значение в соответствии со своими нуждами. Имеются три уровня сжатия: Standard (стандартный), HiPack (плотной упаковки) и UltraPack (сверхплотной упаковки). Динамическое сжатие файлов осуществляется с помощью методов Standard или HiPack, по вашему выбору. UltraPack, требующий больше времени для упаковки и восстановления данных, оказывается полезен для редко используемых файлов. Однако он не может работать в оперативном режиме без прерывания основной работы. Единственный способ воспользоваться методом сжатия UltraPack - запустить агент сжатия (Compression Agent) утилиты DriveSpace 3, который восстанавливает файлы, когда компьютер не используется.
Для загрузки, удаления и настройки версий 2 и 3 утилиты DriveSpace предусмотрен специальный графический модуль; средства DOS-режима не используются. Нам удалось просто и без осложнений создать сжатые диски с помощью обеих версий. Мы не столкнулись с проблемой нехватки памяти и прочими неудобствами, обнаружившимися при использовании утилиты Stacker.
Утилита DriveSpace не столь хорошо документирована, как Stacker, что причиняет неудобства некоторым пользователям. Однако во время тестирования мы не встретили никаких проблем. DriveSpace 3 обеспечивает превосходные производительность, коэффициенты сжатия, надежность и по сравнению с утилитой Stacker представляет собой лучшее средство для сжатия дисков в среде Windows 95.
DriveSpace 2
Цена: бесплатно (поставляется в комплекте с Windows 95).
Требуемые ресурсы: ПК на базе процессора 386 или более мощного, 4-Мбайт ОЗУ (рекомендуется 8 Мбайт), 40 Мбайт на жестком диске.
DriveSpace 3
Цена: 49 долл. (поставляется в составе пакета Microsoft Plus).
Требуемые ресурсы: ПК на базе процессора 386 или более мощного, 8-Мбайт ОЗУ, 25 Мбайт на жестком диске.
Microsoft Corp., Redmond, WA; 800-426-9400; fax, 206-635-6100.
Stacker 4.1
Stac Electronics
Утилита Stacker, версия 4.1, - новая, рассчитанная на применение с Windows 95 редакция утилиты Stacker, версия 4.0, где сохранились совместимость с DOS и Windows 3.1. В отличие от DriveSpace она представляет собой 16-разрядную прикладную программу. 32-разрядная версия Stacker пока не была анонсирована, и фирма Stac Electronics дала уклончивый ответ на наш запрос о ее дальнейших планах.
Для перехода на Windows 95 утилиту Stacker нужно было изменить в двух направлениях: в ней должны были появиться средства для работы с длинными именами файлов и изменен способ идентификации имен каталогов, чтобы не подвергать их сжатию. (Сжатие каталогов приводит к резкому снижению производительности.) Обработка длинных имен файлов производится автономной утилитой под названием SAVELFN, которая обеспечивает преобразование длинных имен файлов в короткие и сохраняет длинные имена в специальном файле. Программа Stacker, которая использует в своих внутренних операциях только короткие имена файлов, часто - хотя и незаметно для пользователя - обращается к этой утилите.
Что вам дает Stacker
Stacker не может соперничать с утилитой DriveSpace по показателям производительности, так как это 16-разрядная программа, и, кроме того, требуется необходимо выполнять дополнительную обработку длинных имен файлов. Производительность диска, сжатого с помощью утилиты Stacker, снижалась на 15-20%, в то время как для дисков, сжатых с помощью DriveSpace, снижение производительности составляло около 5%.
Превосходство Stacker, однако, заключается в более высоком, чем у DriveSpace, коэффициенте сжатия. Малый размер выделяемых блоков (16 байт вместо 512 байт) и другие усовершенствованные методы дают утилите Stacker преимущество, принесшее ей нашу награду за техническое совершенство (в конце 1994 г.). Номинальное среднее значение коэффициента сжатия Stacker составляет 2,5:1 или выше. В наших тестах были получены более низкие показатели, но это, возможно, объясняется конкретными особенностями сжимаемых файлов. Проводя сравнительную оценку, мы обнаружили, что Stacker имеет небольшое преимущество перед DriveSpace 2 и немного уступает DriveSpace 3.
Несмотря на надежное функционирование Stacker в среде Windows 95, вам следует быть осторожными при сжатии и восстановлении дисков с помощью этой утилиты. Наиболее уязвимая часть процедуры - стадия дефрагментации, целиком протекающая в нижней памяти. Если размер обычной памяти окажется недостаточным, то на экран выводится пугающего вида красный прямоугольник с сообщением "Fatal Error" (Необратимая ошибка) и выполнение программы прекращается. Когда мы перезапустили процесс, выделив ему дополнительную нижнюю память и выполнив утилиты восстановления, следуя инструкциям, содержащимся в сообщении об ошибке, программа Stacker смогла довести обработку диска до конца без потери данных. Предупреждение: не принимайте предложение Stacker временно удалить резидентные программы, чтобы автоматически расширить память. В среде Windows 95 этот прием не срабатывает. В действительности размер доступной памяти уменьшится, что повлечет за собой необратимый отказ.
Stacker сжимает диски в процессе инсталляции, и наиболее надежный способ произвести сжатие - выполнить утилиту в среде DOS. Для инсталляции Stacker инициализируйте систему в режиме DOS и запустите процедуру Setup из командной строки. Перед тем как попытаться сжать или восстановить диск, убедитесь, что располагаете по меньшей мере 600 Кбайт нижней памяти. (Вы можете изменить строку buffer = x в файле CONFIG.SYS, чтобы уменьшить требуемый размер нижней памяти до 256 Кбайт.) Если вы не можете освободить достаточное пространство в нижней памяти, удалив драйверы и резидентные программы, то есть смысл временно передать в распоряжение диспетчера памяти адресное пространство видеопамяти VGA, занимающее область A000 - AFFF. При условии что вы загружаетесь в режиме командной строки, этот прием предоставит в ваше распоряжение обширное пространство в нижней памяти, не вызывая конфликтов. Завершив процедуру сжатия диска, вы можете заново перезапустить утилиту Setup в среде Windows, чтобы разместить инструменты Stacker на вашем "рабочем столе".
Утилита Stacker надежно функционирует в среде Windows 95 и располагает более широким набором инструментов, нежели DriveSpace, но работает медленнее, а процедура начальной установки может заставить вас поволноваться.
Stacker, версия 4.1
Прогнозируемая реальная розничная цена: 50 долл.
Требуемые ресурсы: 3 Мбайт на жестком диске; от 256 до 600 Кбайт нижней памяти во время сжатия и восстановления дисков; DOS 3.2 или более поздняя версия; Microsoft Windows 3.0 или 3.1 либо Windows 95.
Stac Electronics, San Diego, CA; 800-522-7822, 619-794-4300; fax, 619-794-3717.
Программы сжатия диска. Лабораторные испытания
Что означают цифры
Мы предполагали, что выполняемая в защищенном режиме 32-разрядная утилита Microsoft DriveSpace 2, поставляемая в составе Windows 95, покажет более высокое быстродействие, чем 16-разрядная утилита реального режима Stacker, Version 4.1. Мы также ожидали, что поскольку утилита DriveSpace 3 (входящая в пакет Microsoft Plus) проделывает более объемную работу, чем DriveSpace 2, то она окажется медленнее. В этом отношении сюрпризов не произошло. Однако мы были удивлены тем, насколько мало быстродействие продуктов отличалось от скоростей несжатого диска. Утилита DriveSpace 2 при стандартном коэффициенте сжатия (измеренный показатель составил около 1,4:1) показала на процессоре Pentium самое быстрое время, всего лишь на 3% больше, чем у несжатого диска. На компьютере Compaq 486 с 16-Мбайт ОЗУ ухудшение показателей составило 5%. На процессоре Pentium утилита Stacker проиграла 19% в сравнении с несжатым диском и уступила чуть меньше, 15%, на 16-Мбайт ПК Compaq 486. (Наши тесты Winstone не работали, когда программа Stacker была установлена на 8-Мбайт машине Compaq 486.)
Вычисленные нами коэффициенты сжатия постоянно оказывались ниже объявленных поставщиками утилит. Разница объясняется тем, что мы руководствовались действительным числом байт, сообщаемым командой DIR, а не числом секторов на файл, вбирающим в себя избыточность, связанную с размером сектора или кластера.
Как DriveSpace 3, так и Stacker позволяют пользователю регулировать коэффициент сжатия. Самый высокий показатель сжатия имела утилита DriveSpace 3 - вычисленный нами результат составил 1,8:1. Расчетный коэффициент для Stacker составил 1,7:1. Одна оговорка: коэффициенты сжатия и производительность сильно зависят от типа файлов.
Как проводились испытания
Для тестирования программ сжатия мы использовали три установки: Compaq Deskpro 486/66m с ОЗУ объемом 8 Мбайт, Compaq Deskpro 486/66m с 16 Мбайт ОЗУ и Hewlett-Packard Vectra XU 5/90 Pentium с ОЗУ емкостью 16 Мбайт. Для определения производительности мы использовали тест Winstone 95 лаборатории PC Labs. Winstone 95 представляет собой набор тестов, в котором с помощью 13 наиболее распространенных прикладных программ имитируются процедуры, выполняемые реальными пользователями. Для испытаний утилит DriveSpace 2 и DriveSpace 3 мы инсталлировали Windows 95, выбрали параметры сжатия и затем произвели сжатие диска C:. В ходе первой инсталляции утилиты Stacker мы установили на машине систему Windows for WorkGroups, затем инсталлировали Stacker и произвели сжатие диска C:. Перейдя на Windows 95, мы обнаружили, что при этом некоторые файлы были испорчены и система зависла. После обращения в службу технического обслуживания фирмы Stac мы очистили диск и провели инсталляцию заново, получив работоспособную систему. Мы также обнаружили, что при восстановлении сжатого жесткого диска большой емкости (540 Мбайт) утилита Stacker выдавала сообщение о нехватке памяти и оказывалась не в состоянии продолжить свою работу. Специалисты фирмы Stac подтвердили существование такой проблемы (над устранением которой они работают) и заявили, что ее причина кроется в том, что Stacker использует обычную (640 Кбайт) память для хранения информации при выполнении восстановления после сжатия, и ее оказывается недостаточно для больших жестких дисков. В ходе дальнейшего тестирования мы начинали работать с чистой системой Windows 95 и затем инсталлировали Stacker, что не вызывало никаких проблем. Все испытания производительности были выполнены с параметрами, принимаемыми по умолчанию.
Для проверки коэффициента сжатия мы использовали ту же самую систему, но создали отдельный 70-Мбайт раздел (физический размер) в каждой системе. Для имитации комплекта прикладных программ, имеющегося на системе типичного пользователя, мы инсталлировали на диске тестовый набор Winstone 94. Winstone 94 в отличие от Winstone 95 в ходе полной инсталляции устанавливает на диске несжатые прикладные программы. Установив Winstone 94, мы запустили программу заполнения диска, которая создавала подкаталоги и копировала в них набор файлов с восстановленного после сжатия диска. В наборе были представлены файлы EXE, DLL, растровые (BMP, ICO, TIFF), DOC, WAV (звуковые), векторные графические (DWG) и ZIP. Программа продолжает создавать подкаталоги и копировать файлы до тех пор, пока не заполнит все свободное пространство. При инсталляции с параметрами по умолчанию программа заполнения прекратила свою работу, когда на диске все еще оставался 1 Мбайт свободного пространства - ситуация, знакомая многим пользователям. После того как диск оказывался фактически заполненным, мы вычисляли действительный коэффициент сжатия по формуле:
Число + Число + Скрытый
скопи- байт, размер
рованных занима- файла
байт емых (если
элемен- таковой
тами ка- имеется)
талогов,
коэффициент = ----------------------------------
сжатия Физический размер файла (раздела)
сжатия
Чтобы выяснить максимальный коэффициент сжатия, которого способны достичь продукты, мы активизировали функцию максимального сжатия и провели один сеанс переупаковки. Переупаковка файлов утилитой DriveSpace 3 была проведена по варианту UltraPack с помощью агента сжатия Compression Agent, а в процессе последующей эксплуатации был установлен флаг HiPack. В случае утилиты Stacker мы использовали MaxSpace и провели оптимизацию. В обоих случаях доступное пространство в разделе увеличилось, и мы повторяли нашу программу заполнения диска несколько раз подряд, пока не получили результат 0 свободных байт на диске.
КОЭФФИЦИЕНТЫ СЖАТИЯ
Объявленный
коэффициент (x:1)
Вычисленный
коэффициент (x:1)
Compaq Deskpro 486/66 (8-Мбайт ОЗУ)
DriveSpace 2
1,6
1,5
DriveSpace 3
2,1
1,5
Stacker 4.1
1,6
1,5
Compaq Deskpro 486/66 (16-Мбайт ОЗУ)
DriveSpace 2
1,6
1,4
DriveSpace 3
2,1
1,5
Stacker 4.1
1,6
1,5
HP Vectra Pentium/90(16 Мбайт ОЗУ)
DriveSpace 2
1,6
1,4
DriveSpace 3
2,1
1,5
Stacker 4.1
1,7
1,5
Максимальный коэффициент сжатия (HP Vectra Pentium/90)
DriveSpace 3
2,6
1,8
Stacker 4.1
1,8
1,7
Чем больше цифры, тем лучше результат.
WINSTONE 95
Оценка
DriveSpace 2
DriveSpace 3
Stacker 4.1
Несжатый жесткий
диск
HP Vectra Pentium/90
(16-Мбайт)
116
116
97
119
Compaq Deskpro 486/66
(16-Мбайт)
66
66
59
69
Compaq Deskpro 486/66
(8-Мбайт)
48
49
N/A
55
Чем больше цифры, тем лучше результат.
N/A - неприменимо. Данный продукт не выполнил этот набор тестов.
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.nodevice.ru/