1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /171, 1996 г./ | Бонус | Поиск  

На своей шкуре

Вам диск ломтиками или прессованный?

Анатолий Вассерман


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

Шкура в этой заметке не моя личная. Несколько лет отдел общесистемного обеспечения всесоюзного НИИ «Пищепромав-томатика» (г. Одесса) исследовал и сравнивал варианты структурирования жёстких дисков IBM PC. Рекомендации, выработанные на основании этого анализа, я вкратце излагаю. Естественно, рекомендации эти касаются прежде всего дисков с файловой системой FAT, принятой в MS-DOS. Однако мне кажется, что и знатоки других систем найдут здесь кое-что полезное. Тем более что FAT по сей день остаётся единственным форматом, доступным всем операционным системам для IBM PC, и поэтому употребляется как общий язык.

Резать или не резать – в от в чём вопрос!

Идея разделения физического магнитного диска на множество логических появилась, как и большинство программистских полезных идей, задолго до персональных компьютеров. Например, в автоматизированной системе управления технологическими процессами (АСУГП) сахарного завода в Ракитном под Киевом основной магнитный диск (ёмкостью аж 2,4 Мбайт!) был разбит на 5 (!) логических дисков. Размеры их я подбирал раз десять. И это окупилось – изменяемые в ходе работы фрагменты АСУТП были полностью отделены от постоянной информации, а время поиска файлов в каталогах дисков (очень ощутимое при времени позиционирования порядка 100 миллисекунд)сокращено до минимума...

Неудивительно, что и винчестеры персоналок стали резать на мелкие ломтики. Тем более что оснований для такой нарезки нашлось множество.

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

блокировкой вирусные атаки. А часть ломтей вообще предоставлять пользователю в зависимости от пароля.

2. Не MS-DOS единой жив IBM PC. Кто посерьёзнее – давно работает в Unix, хотя для этого чаще всего нужен компьютер, далеко выходящий по цене за привычные персоналыцикам масштабы. Кто хочет совместить надёжную многозадачность с привычным Windows-интерфейсом – пользуется Windows NT или, если машина не столь мощная, OS/2. А остальные в большинстве своём борются с Windows 95.

Перейти на новую операционную систему (ОС) всегда боязно – вдруг что-нибудь не пойдёт? А иногда и просто не получается: для каждой ОС есть свои удачные программы и свои несовместимости – например, DOS-версию Doom в OS/2 заставить работать тяжко. Поэтому на винчестере зачастую скапливаются три-четыре ОС.

Но загрузчик, запускающий систему с винчестера, в нынешних персоналках слабоват. Грузит лишь то, что находится в строго определённом месте диска. Жуткий регресс по сравнению, например, с малой управляющей ЭВМ СМ-2, на которой я работал с 1979-го по 1991-и. Там на одном диске можно было хранить до 64 операционок в файлах, именуемых «OCNN, где NN – восьмеричный номер. И загружать любую из них, указав её номер на клавиатуре инженерной панели.

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

3. Только в версии 4.00 MS-DOS научилась работать с дисками ёмкостью более 32 Мбайт. До того винчестер большего объёма приходилось разбивать на разделы.

Да и сейчас работа с большими дисками стоит дорого. Размер полей для номеров секторов во всех информационных таблицах MS-DOS ограничен и составляет 16 битов. То есть номер не превышает 65535. Поэтому, чтобы при увеличении объёма диска не ломать структуру этих таблиц, приходится делить дисковое пространство не на отдельные секторы, а на их блоки – кластеры. Минимальный для винчестера размер кластера равен четырём секторам (2048 байт), максимальный практически неограничен. Вроде бы выход нашёлся. Но...

Размеры файлов почти никогда не кратны кластерам. Часть последнего занятого файлом кластера остаётся пустой. В среднем теряется полкластера на один файл. Чем больше диск, тем больше кластеры. И соответственно больше потери. Не только абсолютные: с ними при нынешнем росте ёмкости винчестеров можно было бы примириться. Растут и потери относительные: информация в каждом файле прежняя, а объём пустых хвостов больше.

Кстати, и с новыми версиями MS-DOS не всякий винчестер работает. При ёмкости более 504 Мбайт (528482304 байта) требуется ещё и поддержка со стороны базовой системы ввода-вывода (BIOS) в ПЗУ на системной плате. Некоторые изготовители плат разработали соответствующие виды BIOS лишь недавно. А кое-кто до сих пор поставляет платы, с которыми современные большие винчестеры толком «не дышат».

Итак, основания для резки винчестеров серьёзные. Но по ходу работы обнаружились и столь же серьёзные причины действовать иначе.

1. Средства защиты информации в современных операционных системах распространяются не только на целые диски (хотя бы логические), но и на отдельные каталоги. А антивирусную защиту современные средства (в «Пищепромавтоматике» чаще всего покупают ревизор ADInf и реставратор ADInf Ext) обеспечивают на целом диске надёжнее, чем на разделённом: они используют для проверки доступ к диску на самых низких уровнях. Разделители дисков – лишний барьер между диском и ревизором.

2. Если система загружается только с определённого места диска -запишем в этом месте более совершенный загрузчик. И уже он, запустившись, спросит вас, какую систему вызвать. Найдёт её, загрузит, запустит и уступит ей место.

Такие средства есть во многих нынешних операционных системах. А, например, фирма «ФизТехСофт» недавно пустила в продажу компонент своей PTS DOS, загружающий то, что было на диске до установки этой системы.

Так что сейчас любой набор ОС можно держать на цельном винчестере. Лишь бы каждая понимала файлы других.

3. Все ОС, пришедшие на IBM PC после MS-DOS, могут работать не только с её файловой системой (ФС), но и со своими собственными: Unix, High Performance File System (HPFS) OS/2, New Technology File System (NTFS)Windows NT... Все эти системы способны распределять дисковое пространство не только большими кластерами, но и отдельными секторами. Поэтому потери пространства в хвостах файлов сводятся к минимуму.

Кстати, эти ФС строят работу с диском так, чтобы доступ к файлам заметно ускорялся по сравнению с MS-DOS – отсюда и их гордые названия: High Performance (высокая производительность), New Technology (новая технология). Так что если используешь новую ОС – целесообразно использовать и новую ФС. Тем более что программы MS-DOS, работающие с файлами через ОС, а не с диском на физическом уровне (то есть все, кроме ремонтных), всеми новыми комбинациями ОС и ФС поддерживаются.

Невидимое сжатие

Для экономии дискового пространства в стандартной MS-DOS есть вполне эффективное средство, о котором стоит поговорить подробнее. Это программы динамического сжатия информации на дисках.

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

Первыми такие программы создали независимые разработчики. А когда они стали популярны, их стали включать в комплект поставки операционных систем. Digital Research для своей DR DOS купила лицензию на Superstore, IBM включила в PC DOS 7 лицензионный Stacker 4 (кстати, он умеет работать и в OS/2). MS-DOS и Windows 95 (Microsoft), а также PTS DOS оснащены программами сжатия дисков собственной разработки.

Увы, эти системы пользуются скверной репутацией. Мол, и медленные они, и ненадёжные, и потерять всю информацию в одночасье можно...

На деле скорость при использовании современных систем динамического сжатия снижается малоощутимо. Если процессор достаточно быстрый, получается даже некоторое ускорение, так как уменьшается объём информации, считываемой с диска (устройства механического, а потому медленного) и записываемой на него. А часть сэкономленного времени можно потратить на упаковку и распаковку.

Надёжность систем сжатия оценить трудно. Конечно, программа, работающая с диском на физическом уровне, взаимодействовать с незнакомой структурой информации не может. Поэтому, например, программы ремонта дисков специально дорабатываются для работы со сжатыми дисками. Но всё, что общается с диском только на уровне файлов и использует стандартные средства операционной системы, проблем со сжатыми дисками не испытывает. А объёмы разрушений файловой системы при сбоях и сложность её ремонта на обычных и сжатых дисках практически не отличаются. Современные системы динамического сжатия комплектуются ремонтными программами не менее эффективными (хотя куда менее эффектными), чем привычные Norton Utilities.

Потерять информацию сжатого диска несложно. Только и диск не сжатый от этого ничуть не застрахован. Сколько есть на свете, к примеру, вирусов, разрушающих корневой каталог винчестера! Последствия тут похуже, чем при случайном удалении файла, содержащего информацию о сжатии диска, – его-то восстановить можно, как любой другой файл, обычными программами типа Norton Unerase.

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

И всё же, всесторонне испытав работу с обычными и сжатыми дисками, наш институт пришёл к выводу: сжимать диски вполне полезно и безопасно.

А выигрыш получается солидный. Даже если основную часть содержимого диска составляют практически несжимаемые файлы – вроде изображений в форматах GIF, JPEG, MPEG (все они хранятся уже упакованными). Дело в том, что все нынешние системы сжатия дисков распределяют физическое пространство не кластерами, а отдельными секторами. И потери в хвостах файлов сводятся к минимуму. AStacker, начиная с версии4.00, умеет даже помещать в один сектор информацию нескольких файлов. Тут уж потерь вообще не бывает.

Смотри в корень!

Типовая структура содержимого винчестера – это не только его разбиение (по нашим рекомендациям – неразбиение) на разделы. Это ещё и дерево каталогов.

Во-первых, в корневом каталоге должно быть поменьше наименований, чтобы его легко было обозреть. В идеале весь корень должен быть виден в одном окне Norton Commander'a. А для этого большинство каталогов должны быть размещены не в корне, а на следующих уровнях дерева.

Во-вторых, не следует слишком удлинять оператор path в autoexec, bat. Все пути автоматического доступа к программам, упомянутые в этом операторе, записываются в область системного окружения – environment. A она, если не принимать специальных мер, имеет длину всего 256 байт. Причём хранятся в ней не только пути доступа к программам, но и множество другой информации. И вообще желательно, чтобы path занимал одну строку – для обозримости. Так что те каталоги, которые содержат программы, часто вызываемые из командной строки, и поэтому упоминаются в path, есть смысл помещать в корневом каталоге.

Структуру, выработанную в «Пищепромавтоматике», мне проще всего показать, пройдясь по винчестеру того компьютера, с которым работаю постоянно.

Винчестер содержит только один раздел – основной диск С:. На нём всего четыре каталога и тринадцать отдельных файлов.

Начнём с каталогов.

DISKSAVE – антивирусные средства фирмы «Диалог-Наука»: Aidstest, Doctor Web, ADInf, ADInfExt. Все они по рекомендации фирмы переименованы: сейчас развелось немало вирусов, целенаправленно уничтожающих файлы с известными антивирусными именами. Располагаясь на несжатом диске, эти антивирусы могут проверять сами себя на физическом уровне, а потому в их работе можно быть уверенным.

NU – Norton Utilities 8.00 можно использовать при ремонтных операциях на сжатом диске. Поэтому сами они должны храниться на диске реальном.

QEMM – лучший, на мой взгляд, диспетчер памяти. Драйвер сжатого диска я располагаю в верхних областях памяти, поэтому диспетчер этих областей на сжатом диске держать нельзя: он должен загрузиться до драйвера.

ST – Stacker 3.00. Конечно, версия 4.00 куда эффективнее, но её (так же, кстати, как и DrvSpace из MS-DOS 6.22) NU 8.00 не понимают. А я постоянно отлаживаю программы. Некоторые из них работают с диском и могут по ошибке многое испортить. Приходится постоянно работать с программами ремонта файловой структуры. NU удобнее и нагляднее штатных инструментов Stacker'a. Так что я смирился с меньшей эффективностью сжатого диска ради скорости отладки.

Теперь отдельные файлы.

lo.sys, msdos.sys – без этих двух системных файлов вообще ничего работать не будет. Command.com можно было бы держать и на сжатом диске, но тогда в случае его разрушения ремонт затруднится.

Conf ig. sys тоже нужен на несжатом диске – ведь именно он содержит команду загрузки драйвера сжатого. А вынесение на сжатый диск autoexec.bat затруднило бы работу оптимизатора распределения памяти, входящего в комплект QEMM. Конечно, если использовать систему сжатия дисков DrvSpace из комплекта MS-DOS 6.22, то и config.sys, и autoexec.bat можно держать на сжатом диске – драйвер DrvSpace загружается в память самим io.sys. Но Stacker заметно эффективнее.

Три таблицы, используемые ADInf и ADInfExt, размещаются именно на том диске, к которому относятся. Да оно и к лучшему – их в антивирусных целях тоже лучше читать на физическом уровне.

Sd.ini можно было бы и вообще не хранить – упорядочивать несжатый диск Norton Speedisk'ом мне было необходимо только при первоначальном конфигурировании компьютера. Но люблю порядок...

Stacker.log – протокол основных действий, выполняемых Stacker'ом: создание новых дисков, сжатие существующих... Казалось бы, хранить его незачем. Один раз создал сжатый диск – вот и весь протокол. Но в этот же файл записываются и сообщения о сбоях, например, при упорядочении файлов на сжатом диске. Так что лучше файл не уничтожать. Тем более что в отсутствие сбоев объём его обычно меньше одного килобайта.

Wina20.386 нужен Windows для работы в расширенном режиме, чтобы использовать все возможности процессора Intel 80386. Ксожалению, размещение этого драйвера в корневом каталоге диска С: встроено в систему, и перенастройка не допускается.

386spart.par – файл свопинга Windows. Система категорически не желает размещать его на сжатом диске. Ей виднее... Хотя Windows 95 спокойно занимается свопингом на сжатом диске, но ощутимо медленнее, чем на обычном: файл свопинга содержит меньше повторов, чем обычные файлы данных, поэтому сжимается плохо. Кстати, размер файла у меня не вдвое больше, чем ОЗУ (как рекомендует сама система), а вчетверо -чтобы работать в Windows со столькими программами одновременно, сколько реально понадобится: например, пакет Mathcad советует устанавливать размер файла виртуальной памяти равным утроенной оперативной плюс 4 Мбайт, а в будущем может ещё что-нибудь появиться.

Почти всё остальное пространство занимаетStacvol.000 – файл с информацией логического диска D:. Именно сэтим файлом взаимодействует драйвер и все утилиты Stacker'a. Именно на нём хранится всё, с чем я работаю, включая каталоги DOS и NC.

На винчестере оставлено около 5 Мбайт свободного пространства. Четыре – на нужды QEMM: институтский специалист, первым освоивший диспетчер, заподозрил, что он умеет использовать диск для организации виртуальной памяти при обслуживании режима DPMI; пока опровержения не поступало, пусть будет резерв. И ещё один мегабайт – на перспективу: антивирусные системы нынче растут быстро.

Корневой каталог диска D: по заполнению ненамного сложнее С:.

APPLICAT – в подкаталогах этого каталога хранятся все те программы, которые редко вызываются из командной строки. Часть этих программ запускают командные файлы, где всегда можно указать полный путь от корневого каталога до нужной программы. Для вызова других желательно делать их каталог текущим – заходить в него, например, Norton Commander'ом. В любом случае часто набирать имена этих программ и пути к ним пользователю не требуется. Таковы, в частности, резидентные словари, справочники, электронные карты...

APPUWIN – в его подкаталогах находятся все приложения для Windows. Из командной строки DOS они не вызываются, a Windows всё равно хранит полный путь к каждому правильно инсталлированному приложению.

ARC – всевозможные средства архивирования и сжатия файлов. Сами мы пользуемся в работе только одним из них, самым эффективным в данный момент. На сегодня это RAR Евгения Рошаля. Но извне к нам попадают архивы, сделанные практически всеми существующими средствами. Приходится все эти средства держать для распаковки. И обратите внимание на короткое имя каталога – место в path надо экономить!

DISKSAVE – этот каталог уже встречался на диске С:. Там в нём хранятся антивирусные средства и краткие текстовые пояснения к ним. А тёзка на D: содержит полную текстовую документацию антивирусов. Нужна она не при работе, а только при настройке программ. Поэтому расходовать на неё дефицитное несжатое пространство нерентабельно. Да и на D: место этому каталогу не в корне, а в каталоге APPLICAT. Это мы, системщики, часто лазим туда за справками и ленимся пройти Norton Commander'ом лишний уровень каталога. А пользователю – если он, конечно, соблюдает основные правила гигиены – документация, хранимая в DISKSAVE, нужна разве что при смене версий антивирусов.

DOS – утилиты и справочники операционной системы. В процессе загрузки не используются. Поэтому место им на сжатом диске.

DRV – драйверы всевозможных устройств компьютера. Внутри, естественно, подкаталоги. CYRKEYSC – кириллизатор клавиатуры и экрана (у нас – keyrus Дмитрия Александровича Гуртяка). DISKETTE – набор утилит (у нас – Юрия Ивановича Панкова) для работы с дискетами: драйвер нестандартных форматов (ри 1700), верификатор записи (pu_wrcfd) и т. д. MOUSE – драйвер мыши... Вообще-то весь каталог DRV можно поместить внутрь APPLICAT – ведь из командной строки драйверы и прилагаемые к ним утилиты не вызываются практически никогда. Но системщики манипулируют с драйверами довольно часто. Поэтому вынесли их в корневой каталог для собственного удобства. Рядовому же пользователю рекомендую убрать DRV в APPLICAT и вспоминать о нём пореже.

GAMES – и этот каталог можно бы убрать в APPLICAT. Но когда захочется поиграть, не хватает терпения проходить ещё один уровень дерева каталогов.

ME – самый популярный у наших программистов текстовый редактор MultiEdit. Вызывается обычно из командной строки – почему и попал в корневой каталог. Обучен двум десяткам языков программирования. Автоматически формирует отступы строк в соответствии со структурой программы, выделяет разными цветами синтаксически значимые элементы текста и делает множество других полезных вещей. Да и обычный текст в нём набирать и редактировать куда легче и удобнее, чем в Lexicon и даже Word. Правда, оформительских возможностей в MultiEdit минимум.

NC – многие пользователи полагают, что Norton Commander давно пора записывать в ПЗУ как часть BIOS. Увы, пока на него тратится место на диске.

NU – и этот каталог уже встречался на С:. Там он содержал утилиты, необходимые для ремонта диска: Disk Doctor, Disk Editor... Даже если сжатый диск недоступен из-за сбоев, они остаются под рукой и помогают его восстановить. А всё остальное, используемое для наведения порядка на нормально работающем диске, естественно поместить на сжатый. Здесь же Нортоновы утилиты, работающие под Windows – ведь и сама Windows хранится у нас на сжатом диске.

TEMP – рабочий каталог. В autoexec.bat есть оператор «SET TEMP=D:\TEMP». В каталог, описанный таким образом, практически все программы помещают свои рабочие файлы. А в корневой каталог он вынесен не только для экономии места в environment, куда помещается всё описанное в операторах set (включая оператор path – сокращённую форму для set path=). Но и для того, чтобы почаще в TEMP заглядывать. Ведь при аварийных завершениях программ мусор – неудалённые рабочие файлы -скапливается именнотам, и выметать его приходится вручную.

USERS – здесь имеет свой персональный подкаталог каждый, кому доступен этот компьютер. Даже если работаешь в одиночку, заводить каталог USERS всё равно приходится. Сколь часто получаешь файлы от других или готовишь для других...

UT – утилиты самого разного происхождения и назначения. У нас, например, скопилось множество различных утилит дублирования дискет на физическом уровне. Очень уж много поступает со стороны файлов с образами дискет, которые умеют строить почти все эти утилиты. И каждая – в своём формате.

WIN – не «WINDOWS» опять же для экономии длины path.

DISTRIBUTE – сюда записываются дистрибутивы перединсталляцией. Повторять её зачастую приходится многократно, пробуя различные настройки. Поэтому лучше один раз потратить время на копирование с дискет или даже CD-ROM, зато потом инсталлировать со скоростью винчестера.

NEWS.TMP – каталог, в который записываются свежепоступившие программы и данные для предварительного анализа и испытания. Даже если программа сбоит, разрушения, скорее всего, этим каталогом и ограничатся. Обратите внимание на расширение имени каталога. У нас принято задавать Norton Commander'у упорядочение не по именам, а по расширениям файлов. И редко используемые каталоги, получив расширения, оказываются в конце экрана, не мешая ходить по всем остальным.

Вслед за этими каталогами на экране Commander'a видны три файла с таблицами антивирусного комплекса ADInf-ADInfExt.

Больше ничего в корневом каталоге диска D: хранить не полагается. Если найдётся – значит, с диском работал кто-то, не знакомый с принятыми в нашем отделе соглашениями. Могу ему только посочувствовать – информацию, размещённую не по соглашениям, вправе уничтожить любой сотрудник отдела.

И вовсе не в наказание. А потому, что наша работа предполагает частые испытания и перенастройки программ. Поэтому всё размещённое нестандартным образом скорее всего быстро потеряет связи, задуманные владельцем.

Один пример, наблюдавшийся неоднократно.

Пользователь готовит файлы в MS Word 2.00 for Windows. Сохраняет их, «не целясь» – там, где предлагает по умолчанию сам Word. Затем заменяет версию 2.00 на версию 6.00. Затем прибегает ко мне в панике: «Где все мои документы?!»

А документы в каталоге с самим Word 2.00 – именно это место и предлагалось по умолчанию. А каталог удалён перед инсталляцией новой версии – на две сразу места на винчестере не хватило. А за документами надо обращаться не ко мне, а уже непосредственно к господу богу – покойники в его ведении...

Кстати, место сохранения документов по умолчанию Word'y можно указать. В версии 6.00 – в пункте меню Tools/Options/File Locations/Documents (Сервис /Опции/Размещение документов). Очень советую начинать работу с WinWord с такой настройки. Но это уже другая история...


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /171, 1996 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru