Допустим, мы знаем, что на диске должны быть определенные файлы, и открываем его через Проводник Windows. Из таблицы разделов система выясняет расположение разделов диска. ОС обращается к блокам, в которых должна располагаться файловая система, берет оттуда сведения о местонахождении блоков с содержимым файлов, отображает список файлов и папок, а далее может открыть и содержимое файлов.
Если ОС не смогла обнаружить разделы, файловые системы на них, в файловой системе отсутствуют или искажены записи о файлах, либо эти записи ссылаются на несуществующие блоки — мы думаем о потере информации. Понятно, что сама информация с диска никуда не делась, просто утрачены или некорректны ссылки на нее. Проблема на любом из уровней логической иерархии делает данные недоступными через обычные средства ОС, и не более того!
Причины и механизмы повреждения логической структуры
Любую многоуровневую систему испортить очень легко — достаточно «выбить из нее любой кирпич». Механизмы повреждения логической структуры могут быть различными:
— физический дефект секторов, хранивших записи таблицы разделов или составляющих файловой системы;
— аппаратные сбои в процессе записи данных:
1. одна из типичных причин — броски и «провалы» питания, которые влияют на работу и дисков, и контроллеров ATA;
2. извлечение USB-дисков, когда на них проводится запись, — еще одна типичная ситуация;
3. прожиг лазерных дисков никак не контролируется в реальном времени, и ошибки при их записи/перезаписи — обычное дело;
4. сбои оперативной памяти — запись на диск кешируется, и ошибки в кеше закономерно приводят к ошибкам на диске;
— системные ошибки при выполнении операций с диском:
1. особенно уязвимы логические структуры в процессе дефрагментации дисков, когда перенос блоков данных чередуется с обновлением записей ФС;
2. автоматическое исправление ошибок на дисках при их проверке порой усугубляет появившиеся проблемы;
3. принудительное завершение процессов, ведущих запись на диск;
— «жесткое» выключение или перезагрузка компьютера в процессе записи;
— опрометчивые действия пользователей. Дисковые утилиты на рабочем компьютере «чайника» — примерно то же, что заряженный пистолет в руках ребенка. Не меньший риск представляют и попытки установить несколько систем, различные менеджеры загрузки, всевозможные «оптимизаторы дисков», словом, все, что так или иначе может затронуть MBR или файловые системы;
— действия вредоносных программ (вирусов), искажающих или уничтожающих записи файловой системы. Хотя на первое место сегодня вышли программы-шпионы и прочая «нечисть», ориентированная на Интернет, традиционные файловые вирусы никуда не исчезли! Забавный пример недавнего времени — Trojan:Win32/Bumat!rts (Win32.HLLW.Lime), который присваивает папкам на диске атрибут «скрытый» и создает исполняемые файлы точно с теми же именами.
Обо всех возможных вариантах повреждения логической структуры данных легко догадаться, четко представляя уровни этой структуры. Кое-что возможно лишь чисто теоретически, другие нарушения на практике встречаются довольно часто.
При обычной загрузке операционная система не проводит проверку целостности дисков и томов на них. Скажем так — она безоговорочно верит записям таблиц разделов и файловых систем! К сожалению, при искажении логических структур такое доверие вполне может «выйти боком».
Есть лишь один механизм самопроверки, который срабатывает далеко не всегда. При загрузке ОС для каждого смонтированного тома устанавливается так называемый «грязный бит» (VolumeDirty, или Dirty Bit). При корректном завершении работы системы этот флаг снимается. Если работа была завершена аварийно, например, отключением питания, «грязный бит» остается на томе.
При каждой загрузке ОС ядро вызывает программу %WinDir%System32 autochk.exe, которая проверяет, заданы ли «грязные биты» томов. Если «грязный бит» присутствует, программа autochk немедленно запускает команду chkdsk /f для этого тома. Команда chkdsk /f проверяет целостность файловой системы и пытается устранить все возможные неисправности тома.
Чтобы проверить наличие «грязного бита» на томе, необходимо ввести команду fsutil dirty query C:, где C: — буква диска. Для установки «грязного бита» вручную введите команду fsutil dirty set C:, где C: — буква диска. При следующей загрузке системы диск будет проверен автоматически. Снять «грязный бит» вручную нельзя, остается только перезагрузить систему и дождаться завершения автоматической проверки.
Уничтожение или повреждение главной загрузочной записи приводит к тому, что ОС считает диск непроинициализированным и, естественно, сразу же предлагает его инициализировать. При инициализации MBR или GPT переписываются заново, существовавшие разделы в любом случае исчезают.
Таблица разделов может повреждаться по-разному. Искажением таблицы разделов порой «грешат» программы для «неразрушающего переразбиения дисков» наподобие Partition Magic.
Некорректное изменение ссылки на первый сектор раздела заставляет ОС искать загрузчик и начало таблицы размещения файлов там, где их нет — диск становится якобы неотформатированным. Если отформатировать такой раздел, как предлагает ОС, будет создана новая ФС, начиная с начального сектора раздела согласно таблице разделов. Пока еще абсолютно целы, хотя и недоступны, и записи старой ФС, и все блоки данных. Когда на томе начинает производиться запись, возникают реальные проблемы:
— вновь записываемые блоки данных, скорее всего, сначала затрут секторы с записями старой файловой системы;
— по мере заполнения диска будут последовательно затерты кластеры со старыми данными — восстановить их станет невозможно.
Известная категория ошибок — перекрестные ссылки. Они могут появляться на любом уровне логической структуры. Обычно такие ошибки являются следствием несогласованной записи на диск, а иногда происходят по вине программ для манипуляций с разделами и ФС.
Например, в одной из записей таблицы разделов неправильно указан размер раздела. Получается, что конец предыдущего раздела «наползает» на начало следующего.
Очередной файл вполне может быть помещен в тот кластер, в котором располагались записи файловой системы следующего раздела. В результате запись на один диск в какой-то момент приведет к исчезновению следующего логического диска!
Чаще перекрестные ошибки возникают внутри файловой системы одного раздела. Две записи ФС ссылаются на один и тот же кластер. Скорее всего, валидным окажется тот файл, который был записан последним. Файл, на который ссылается более ранняя запись, в таком случае будет обрезан и безнадежно испорчен.
Файловые системы FAT подвержены возникновению перекрестных записей и «битых» файлов в большей мере, чем NTFS. В NTFS работает механизм контроля транзакций, и он чаще всего предупреждает появление неоднозначных ссылок.
Ошибки в файловой
системе появляются скорее из-за
программных, нежели из-за аппаратных
сбоев (например, при неверном завершении
работы Windows).
Потерянные кластеры.
Это наиболее распространенная ошибка
файловой системы, при которой кластеры
в FAT помечаются как используемые, хотя
на самом деле таковыми не являются. Эти
потерянные кластеры появляются при
неверном завершении работы приложения
или крахе системы. Программы восстановления
диска могут обнаружить эти кластеры и
восстановить их.
Программы
восстановления диска просматривают
диск и создают копию FAT в оперативной
памяти. Затем эта копия сравнивается с
«настоящей» FAT и таким образом
выявляются потерянные кластеры, т.е. не
принадлежащие ни одному из существующих
файлов. Практически все программы
восстановления могут сохранять информацию
из потерянных кластеров в файл, а затем
обнулять их.
Например, программа
Chkdsk из цепочек потерянных кластеров
создает файлы с именами FILE0001.CHK,
FILE0002.CHK и т.д.
Пересекающиеся файлы.
Такие файлы появляются, когда две записи
каталога неправильно указывают на один
кластер. В результате кластер «содержит»
данные из нескольких файлов, что,
естественно, недопустимо.
Чаще всего один из
пересекающихся файлов поврежден.
Программы восстановления данных обычно
решают проблему пересекающихся файлов
следующим образом: файлы копируются с
новыми именами в свободное место диска,
а пересекающаяся область обоих файлов
(и их остальные части) удаляется. Обратите
внимание, что удаляются оба файла, т.е.
устранение подобной ошибки не порождает
новых проблем: например, запись в каталоге
указывает на несуществующий файл.
Просмотрев два восстановленных файла,
можно определить, какой из них поврежден.
Неверный файл или
каталог. Иногда информация в записи
каталога для
файла или подкаталога
не соответствует действительности:
запись содержит
кластер с неверной
датой или неправильным форматом.
Практически все программы восстановления
диска устраняют и эту проблему.
Команды Chkdsk, Recover и
Scandisk — это «реанимационная бригада»
DOS, занимающаяся восстановлением
поврежденных данных на диске. Эти команды
имеют очень простой и не слишком
дружественный интерфейс, их применение
зачастую оказывает значительное
воздействие на систему, но иногда только
они и могут помочь.
3.3 Файловая система ntfs
По сравнению с FAT или
FAT32, NTFS предоставляет пользователю целое
сочетание достоинств: эффективность,
надежность и совместимость. Файловая
система NTFS применяется в операционной
системе Windows NT/2000/XP.
Как и любая другая
система, NTFS делит все полезное место на
кластеры — блоки данных, используемые
единовременно. NTFS поддерживает почти
любые размеры кластеров — от 512 байт до
64 Кбайт, неким стандартом же считается
кластер размером 4 Кбайт
При установке NTFS, диск
разделяется на две неравные части:
первая отводиться под MFT (Master File Table —
общая таблица файлов), называется MFT —
зоной и занимает порядка 12% от общего
размера диска, вторую часть занимают
собственно ваши данные. Есть еще и третья
зона, но о ней позже. MFT лежит в начале
диска, каждая запись в MFT соответствует
какому-либо файлу и занимает около 1 Kb.
По своей сути это каталог всех файлов
находящихся на диске. Надо заметить,
что любой элемент данных в NTFS рассматривается
как файл, даже MFT.
MFT-зона всегда держится
пустой — это делается для того, чтобы
самый главный, служебный файл (MFT) не
фрагментировался при своем росте.
Остальные 88% диска представляют собой
обычное пространство для хранения
файлов.
Свободное место диска,
однако, включает в себя всё физически
свободное место — незаполненные куски
MFT-зоны туда тоже включаются. Механизм
использования MFT-зоны таков: когда файлы
уже нельзя записывать в обычное
пространство, MFT-зона просто сокращается
(в текущих версиях операционных систем
ровно в два раза), освобождая таким
образом место для записи файлов. При
освобождении места в обычной области
MFT зона может снова расширится.
Первые 16 файлов
(метафайлы) в MFT — зоне являются особой
кастой. В них содержится служебная
информация, они имеют фиксированное
положение и они недоступны даже
операционной системе. Кстати, первым
из этих 16 является сам MFT — файл. Существует
копия первых трех записей.
Третья зона, в свою
очередь, делит диск пополам. Это сделано
для надежности, в случае утери информации
в MFT — файле, всегда можно восстановить
информацию, а там уже дело техники, как
говориться. Все остальные файлы в MFT —
зоне могут располагаться произвольно.
Надо заметить, что в MFT — зоне теоретически
кроме служебных файлов ничего не
находиться. Но бывают случаи, когда
места на той части диска, что отведена
для пользователя не остается и тогда
MFT — зона уменьшается. Соответственно
появляется место во второй половине
диска для записи данных. Когда же в этой
зоне освобождается достаточное количество
свободного места, MFT — зона опять
расширяется. И вот тут то появляется
проблема. В MFT — зону попадают обычные
файлы и она начинает фрагментироваться.
Но вернемся к метафайлам. Каждый из них
отвечает за какую-либо область работы.
Начинаются они с символа имени $. Приведем
пример некоторых из них:
$MFT — не что иное как
сам MFT
$MFTmirr — та самая копия,
что по серединке диска
$LogFile — это файл
журналирования
$Boot — как видно из
названия, его величество загрузочный
сектор
$Bitmap — карта свободного
места раздела
Информация о метафайлах
находиться в MFT — файле. Такая система
придумана для увеличения надежности
NTFS и себя оправдывает. NTFS практически
не имеет ограничения на размеры диска
( во всяком случае при нынешних технологиях
производства жестких дисков). Размер
кластера может варьироваться от 512 b до
64 Kb, хотя обычный его размер равен 4 Kb.
Каталог NTFS. Это метафайл
с обозначением $. Он разделен на части,
в каждой из которых содержится имя
файла, его атрибуты и ссылка на MFT — файл.
А там уже есть вся остальная информация.
Каталог представляет собой бинарное
дерево, т.е. в каталоге информация о
данных на диске расположена таким
образом, что при поиске какого-либо
файла каталог разбивался на две части
и ответ заключался в том, в какой именно
части находиться искомое. Затем та же
самая операция повторяется в выбранной
половине. И так до тех пор, пока не будет
найден нужный файл.
Файлы. Их как таковых
нет, есть так называемые потоки. То есть,
любая единица информации представляет
собой несколько потоков. Один поток —
это сами данные, он является основным.
Другие потоки — атрибуты файла. К любому
файлу можно прикрепить любой другой
файл. Проще говоря, к потокам одних
данных можно прикрепить совершенно
новый поток и записать туда новые данные.
Вот только информация по объему файла
берется по объему основного потока.
Пустые или малоразмерные файлы на диске
отображены только в метафайлах. Сделано
это в целях экономии дискового
пространства. Вообще надо отметить, что
понятие файл намного глубже и шире и
все свойства описать довольно сложно.
Отмечу, что максимальная длина имени
файла может достигать 255 символов.
Ко всему прочему,
файлы NTFS имеют такой атрибут как сжатый.
Любой файл или даже каталог может быть
сжат. Сама операция сжатия происходит
незаметно, так как скорость ее довольно
высока. До кучи, используется так
называемое виртуальное сжатие т. е. одна
часть файла может быть сжата, а другая
нет. Сжатие осуществляется блоками.
Каждый блок равен 16 кластерам.
В NTFS используется
шифрование данных. Таким образом, если
вам пришлось по каким – либо причинам
переустановить систему заново, то
зашифрованные файлы без соответствующей
санкции прочитать не сможете.
Журналирование. NTFS —
отказоустойчивая система, которая
вполне может привести себя в корректное
состояние при практически любых реальных
сбоях. Любая современная файловая
система основана на таком понятии, как
транзакция — действие, совершаемое
целиком и корректно или не совершаемое
вообще. У NTFS просто не бывает промежуточных
(ошибочных или некорректных) состояний
— квант изменения данных не может быть
поделен на до и после сбоя, принося
разрушения и путаницу — он либо совершен,
либо отменен.
Пример: осуществляется
запись данных на диск. Вдруг выясняется,
что в то место, куда мы только что решили
записать очередную порцию данных, писать
не удалось — физическое повреждение
поверхности. Поведение NTFS в этом случае
довольно логично: транзакция записи
откатывается целиком — система осознает,
что запись не произведена. Место
помечается как сбойное, а данные
записываются в другое место — начинается
новая транзакция.
Таким образом,
журналирование – средство для
существенного сокращения числа ошибок
и сбоев системы. Вряд ли рядовой
пользователь NTFS хоть когда-нибудь
заметит ошибку системы или вынужден
будет запускать chkdsk — опыт показывает,
что NTFS восстанавливается в полностью
корректное состояние даже при сбоях в
очень загруженные дисковой активностью
моменты. Можно даже оптимизировать диск
и в самый разгар этого процесса нажать
reset — вероятность потерь данных даже в
этом случае будет очень низка. Важно
понимать, однако, что система восстановления
NTFS гарантирует корректность файловой
системы, а не ваших данных. Если вы
производили запись на диск и получили
аварию — ваши данные могут и не записаться.
3.4 Сравнительная
характеристика FAT 32 и NTFS. Достоинства и
недостатки
Достоинства NTFS:
1. Быстрая скорость
доступа к файлам малого размера;
2. Размер дискового
пространства на сегодняшний день
практически не ограничен;
3. Фрагментация файлов
не влияет на саму файловую систему;
4. Высокая надежность
сохранения данных и собственно самой
файловой структуры;
5. Высокая производительность
при работе с файлами большого размера;
Недостатки NTFS:
1. Более высокие
требования к объему оперативной памяти
по сравнению с FAT 32;
2. Работа с каталогами
средних размеров затруднена из-за их
фрагментации;
3. Более низкая скорость
работы по сравнению с FAT 32;
Достоинства FAT 32:
1. Высокая скорость
работы;
2. Низкое требование
к объему оперативной памяти;
3. Эффективная работа
с файлами средних и малых размеров;
4. Более низкий износ
дисков, вследствие меньшего количества
передвижений головок чтения/записи.
Недостатки FAT 32:
1. Низкая защита от
сбоев системы;
2. Не эффективная
работа с файлами больших размеров;
3. Ограничение по
максимальному объему раздела и файла;
4. Снижение быстродействия
при фрагментации;
5. Снижение быстродействия
при работе с каталогами, содержащими
большое количество файлов.
3.5 Файловые системы
Linux
Современная, мощная
и бесплатная операционная система Linux
предоставляет широкую территорию для
разработки современных систем и
пользовательского программного
обеспечения. Некоторые из наиболее
интересных разработок в недавних ядрах
Linux это новые, высоко производительные
технологии для управления хранением,
размещением и обновлением данных на
диске.
3.5.1 EXT 2 (The
Second Extended File System)
Ext2 — файловая система,
создаваемая в Linux по умолчанию. В
результате ее создания раздел дискового
накопителя будет состоять из множества
областей, — групп блоков, которые, в свою
очередь, подразделяются на меньшие
области.
Индексный дескриптор
— это указатель на файл, в котором
содержится информация относящаяся к
файлу: владелец, права доступа, дата
последнего изменения. Каждому файлу
соответствует один индексный дескриптор.
Количество индексных дескрипторов
постоянно и задается во время создания
файловой системы (по умолчанию на каждые
4096 байт — один дескриптор).
Суперблок — в
суперблоке храниться информация обо
всей файловой системе. Суперблок есть
в каждой группе блоков, он является
всего лишь резервной копией суперблока
из первой группы блоков.
Дескриптор группы
— здесь хранится информация о каждой
группе блоков. Здесь также находятся
указатели на таблицу индексных
дескрипторов.
Битовая карта блоков
— массив битов, указывающих на использованные
блоки.
Таблица индексных
дескрипторов — таблица реально выделенных
для данной группы блоков индексных
дескрипторов.
Блоки данных –
блоки, в которых непосредственно
находятся данные.
На рисунке 8 приведена
схема файловой системы Linux..
Рисунок 8 Файловая
система Ext2
3.5.2 EXT 3
Файловая система ext3
по сути является усовершенствованной
версией файловой системы ext2. Эти
усовершенствования предоставляют
следующие преимущества:
1)Доступность
В случае неожиданного
отключения питания или сбоя системы
(так называемого некорректного отключения
системы) каждую смонтированную файловую
систему ext2 необходимо проверять на
целостность с помощью программы e2fsck.
Это длительный процесс, который может
значительно замедлить загрузку системы,
особенно при больших дисках с большим
количеством файлов. И пока проверка не
закончится, данные на дисках будут
недоступны.
Журналирование,
выполняемое файловой системой ext3,
означает, что такая проверка файловой
системы после некорректного отключения
системы более не требуется. Проверка
целостности в ext3 выполняется только в
очень редких случаях, при отказе
оборудования, например, при сбое жёсткого
диска. Время восстановления файловой
системы ext3 после некорректного отключения
системы не зависит от размера файловой
системы или числа файлов, оно зависит
от размера журнала, используемого для
поддержки целостности. На восстановление
при стандартном размере журнала уходит
около секунды, в зависимости от скорости
компьютера.
2) Целостность данных
Файловая система ext3
надёжно обеспечивает целостность данных
в случае некорректного отключения
системы. Файловая система ext3 позволяет
вам выбрать тип и уровень защиты ваших
данных. По умолчанию тома ext3 обеспечивают
высокий уровень целостности данных с
учётом состояния файловой системы.
3) Скорость
Несмотря на то, что
некоторые данные записываются
неоднократно, в большинстве случаев
ext3 работает быстрее, чем ext2, так как
журналирование ext3 позволяет оптимизировать
перемещение головки жёсткого диска. Вы
можете оптимизировать скорость, выбирая
из трёх режимов журналирования, но
учтите, что это влияет на уровень
целостности данных.
4.Программы для работы
с жесткими дисками и файловыми системами
4.1 Acronis Disk Director Suite 10
Acronis Disk Director Suite 10
предоставляет такие возможности,как
управление жесткими дисками, деление
их на разделы без потери данных, перенос
операционной системы с диска на диск и
многое другое. Это профессиональная
программа для работы с жесткими дисками
в домашних условиях.
Для полноценного
использования Acronis Disk Director Suite необходимо
иметь в распоряжении:
Операционную
систему Microsoft Windows 98
SE/Me/NT4.0/Workstation SP 6/2000 Professional SP 4/XP SP 2;
Процессор с тактовой
частотой 300 МГц или более мощный;
256 Мб оперативной
памяти;
100 Мб свободного
пространства на жёстком диске;
Пишущий CD/DVD дисковод.
Установка программы
не вызывает проблем. Все интуитивно
понятно.
Интерфейс программы
предельно прост и понятен
Профессиональный
подход к работе организован с учетом
навыков обыкновенных пользователей. В
программу Acronis Disk Director Suite 10 включены
обновленные утилиты, ранее доступные
только по отдельности. Менеджер разделов
(Partition Expert) поможет скопировать, разделить,
переместить разделы жестко диска без
потери данных. Эта функция одна из самых
популярных и полезных. Можно перенести
свою операционную систему со всеми
файлами на новый жесткий диск, если
сломался старый. Это избавляет от
необходимости заново переустанавливать
операционную систему со всеми программами.
Или можно просто разделить жесткий диск
на разделы (локальные диски) для удобства
в работе. Разрезать диск на несколько
разделов без потери данных — проще
простого. Для этого понадобится сделать
всего несколько движений мышкой:
запустить программу, кликнуть на жестком
диске правой кнопкой, выбрать «Изменить
размер» и, передвигая визуальные границы
раздела, задать тот размер, который вам
нравится. И все. Да, еще один момент: для
завершения любой операции по отдельности
или всех сразу нажимайте «Финишный
флажок» (рисунок 9).
Рисунок 9: Изменение
размера раздела
Редактор дисков
выполняет специализированные операции
по работе с жестким диском: от проверки
до исправления ошибок. Можете запустить
автоматическую проверку жесткого диска
на наличие ошибок, если впервые обращаемся
к этой программе или даже воспользоваться
шестнадцатеричным редактором. Для
выполнения проверки достаточно выбрать
жесткий диск или раздел, нажав правой
клавишей мышки на нем, и выбрать
«Проверка». Утилита приведет жесткий
диск в порядок. Утилита восстановления
разделов (Recovery Expert) – профессиональный
инструмент по возвращению к жизни и
восстановлению утраченных или удаленных
разделов. Может случиться так, что
случайно удалится раздел жесткого диска
или это произойдет в результате
программной ошибки. Эта утилита может
восстановить с высокой точностью данные,
которые были удалены даже несколько
месяцев назад. Для вызова этой утилиты
необходимо кликнуть выкладку «Мастера»
и выбрать «Восстановление разделов».
В программе ведется
журнал событий, всегда можно просмотреть,
что происходило с жестким диском, какие
действия предпринимались самой
программой. Это будет полезно, если мы
забыли, как правильно совершить то или
иное действие над жестким диском или
выяснить последовательность шагов
выполнения операции. У программы все
ходы записаны (рисунок 10)!
Рисунок 10: Журнал
событий программы
И еще одна полезная
функция программы – создание загрузочного
диска. Если вдруг Windows «приказала долго
жить», а копию своих файлов мы так и не
успели сделать, не стоит думать, что
драгоценная информация утеряна навсегда.
Воспользуемся загрузочным диском: он
способен работать с жестким диском без
загрузки операционной системы. Мы сможем
полноценно работать с содержимым
жесткого диска, переносить файлы,
протестировать на наличие ошибок и
попробовать устранить неполадку с
загрузкой операционной системы. Функции
и внешний вид программы в этом случае
не будут отличаться от тех, которые
используются в Windows. Одно маленькое
«но»: сделать загрузочный диск нужно
заранее, лучше всего сразу после установки
программы (рисунок 11).
Рисунок 11 Создание
загрузочного диска
Создание загрузочного
диска занимает несколько минут и не
требует никаких навыков. Для этого
понадобится чистый диск CD-R. Выбераем
«Создание загрузочных дисков» на вкладке
«Сервис». Просто нужно нажать везде
«Далее» и дождаться записи диска. На
этом все. Теперь Acronis Disk Director Suite 10 будет
присутствовать на компакт-диске.
4.2. Power Quest Partition Magic 8.0
Программа Power Quest
Partition Magic 8.0 работает со всеми версиями
Windows, желает видеть не менее 32 Мб
оперативной памяти и процессор не ниже
Пентиум-150. Partition Magic 8.0 понимает файловые
системы FAT16, FAT32, NTFS, Linux Ext2/3, а также знает,
что такое раздел для Линуксового
своп-файла Linux Swap.
Посмотрим, что же нам
обещают разработчики по части умений
новой версии программы:
· Создание и
удаление разделов на жестком диске, а
также изменение размеров этих разделов
без потери данных. Как видите, FDISK
отдыхает.
· Слияние разделов
без потери данных (например, можно
соединить в одно целое основной раздел
и логический диск).
· Преобразование
файловых систем FAT32 в FAT16 и NTFS, а также
NTFS в FAT32.
· Изменение
размеров кластера для уменьшения потерь
дискового пространства.
· После изменения
буквы имени диска встроенная утилита
DriveMapper проверит пути к программам, и при
необходимости внесет изменения в реестр,
а также сделает соответствующие
исправления в системных ярлыках.
· Проверка жестких
дисков на наличие bad-секторов.
· Работа с
разделами до 160 Гб.
· Поддержка новых
устройств с протоколами обмена данными
USB2 и FireWire (IE 1394).
· Входящая в
комплект программы Partition Magic 8.0 утилита
Boot Magic 8.0 при необходимости создаст
удобное меню для выбора загрузки той
или иной операционной системы.
· Возможность
создания загрузочных дискет для внесения
изменений или исправлений в среде DOS.
Кстати, эти дискеты (2 штуки) можно создать
сразу в процессе установки программы,
а можно и после, выбрав в меню Старт >
Программы > PartitionMagic 8.0 Tools пункт Create
Rescue Diskettes. Не ленитесь выполнить эту
операцию, поскольку жизнь – штука
непредсказуемая.
Главное окно программы
сразу же наглядно покажет все разделы,
имеющиеся на жестких дисках вашего
компьютера (рисунок 12).
Рисунок 12: главное
окно «Partition Magic 8.0
Причем, каждый раздел
выделен особым цветом, которым Partition
Magic помечает файловые системы – ошибиться
будет трудно. Также ясно виден размер
свободного места в разделе (незанятое
пространство выделено белым цветом).
Команды для всех операций с разделами
доступны как в меню, так и в контекстном
меню. Итак, что мы имеем, глядя на рис.9?
Картинка говорит о том, что в системном
блоке ПК установлены два физических
жестких диска.
В новой версии появилась
Action Panel, которая располагается в левой
части главного окна. В разделе Pick a Task
представлен набор «Помощников» для
основных операций с разделами, которые
помогут начинающим пользователям
осуществить необходимые манипуляции
по созданию нового раздела, перераспределению
свободного места и установке новой
операционной системы. Каждый «Мастер»
состоит из цикла последовательных
шагов, которые выполнены в виде вполне
понятных окон.
Попробуем отказаться
от услуг этих «Мастеров», и сами сделаем
все основные операции. Для начала
рассмотрим ситуацию с единственным
основным разделом (где установлена
Windows), в котором нам нужно создать
логический диск.Разумеется, для
создаваемого дополнительного раздела
нам потребуется свободное место, которое
мы позаимствуем у раздела основного.
Правой кнопкой щелкаем по изображению
раздела в окне Partition Magic, и выбираем в
контекстном меню команду Resize/Move. В
одноименном окне можно сразу задать
размер дополнительного раздела в поле
New Size, а можно, потянув курсором движок,
выбрав нужный размер «на глазок» (рисунок
13).
Рисунок 13:
изменяем размер раздела
Программа сразу же
выдаст информацию и минимальном и
максимальном значениях для размера
нового раздела, что не даст нам попасть
пальцем в небо.
После процедуры
«честного отъема» дискового пространства
у основного раздела, свободное место
выделится безликим серым цветом –
Unallocated.
Вот на этой «непаханой
целине» мы и будем создавать дополнительный
раздел с логическим диском. Снова щелкаем
мышью, но уже на сером поле, после чего
в контекстном меню выбираем команду
Create (рисунок 14):
Рисунок 14
Коль скоро мы задались
целью создать именно логический диск,
то в поле Create as выберем параметр Logical, и
файловую систему FAT32, которую понимают
все системы от Microsoft.
Нужды в дополнительном
форматировании создаваемого раздела
нет, поскольку мы задали тип файловой
системы, но при желании отформатировать
логический диск, например, в NTFS, к нашим
услугам команда Format контекстного меню,
или та же команда в меню Partition главного
окна. По окончании вышеописанных
процедур, новый раздел вместе с новеньким
логическим диском D: явит нам свой чистый
лик (рисунок 15):
Рисунок 15: логический
диск почти готов
Как видим, программа
сама позаботилась о назначении буквы
новому диску. Осталось нажать кнопку
Apply в левом нижнем углу главного окна,
после чего изменения вступят в силу
непосредственно в среде Windows (рисунок
16):
Рисунок 16: процесс
пошел
Но и это еще не финал:
встроенная утилита Drive Mapper тут же попросит
разрешения отследить измененные пути
к программам, чтобы внести исправления
в реестр, понеже таковые найдутся –
ведь у нас появился новый диск с буквой
D:, а привод CD-ROM стал именоваться буквой
Е: (рисунок 17).
Рисунок 17
Последует перезагрузка
машины, запустится Drive Mapper, отследит
потенциальные изменения и, наконец-то,
в системе появится полноценный диск.
4.2.1 DOS-версия Partitin
Magiс
После загрузки
DOS-версии появится окно программы не
столь красивое, как в 32-разрядной
инкарнации, однако же, позволяющее
осуществить практически все операции,
подвластные пользователю из-под Windows.
Для изменения размера раздела и создания
раздела нового, достаточно щелкнуть
мышью в поле имеющегося раздела, и в
контекстном меню выбрать команду
Resize/Move (Изменить/Переместить) – рисунок
18.
Рисунок 18
Окно с движком изменения
размера нам уже знакомо по Windows-версии,
и не представляет никаких сложностей:
точно так же перетаскиваем движок до
нужного размера нового раздела, или
сразу вписываем необходимое количество
мега- или гигабайт для нового раздела
в поле Free Space After (рисунок 19).
Рисунок 19
Далее, в образовавшемся
поле серого цвета (новый раздел) снова
щелкаем правой кнопкой, и выбираем
команду Create (Создать) – рисунок 20.
Рисунок 20
В списке Create As выбираем
нужный параметр: Logical partiton для логического
диска, или Primary partiton при создании еще
одного первичного (основного) раздела.
В списке Partition Type отметим тип файловой
системы будущего раздела или логического
диска: FAT32, NTFS или на наше усмотрение
(рисунок 21).
Рисунок 21
После этих манипуляций
в окне программы появится ПРОЕКТ новой
структуры жесткого диска (рисунок 22).
Рисунок 22
Затем, чтобы сохранить
сделанные изменения, нажмем кнопку
Apply, и ответим Yes на извечный вопрос —
быть, али, к примеру, не быть (рисунок
23). По истечении небольшого времени
работы программы (рисунок 24) все изменения
вступят в силу.
Рисунок 23
Рисунок 24
Как уже говорилось,
Partition Magic умеет превращать основные
разделы в логические диски, и наоборот,
а также конвертировать FAT32 > NTFS и
обратно. DOS-версия делает то же самое:
при щелчке по нужному разделу следует
выбрать знакомую команду Convert, после
чего никакого окна не появится, а
откроется выпадающее меню с командами,
доступными для данного раздела. Например,
так выглядят команды для логического
диска с файловой системой NTFS: можно
превратить оный в основной раздел
(Logical to Primary) или преобразовать файловую
систему в FAT32 (NTFS to FAT32) – рисунок 25.
рисунок 25
А вот что можно сделать
с FAT32-разделом (рисунок 26): как видим,
доступно превращение основного раздела
в логический диск (Primary to Logical) и конвертация
файловой системы в…FAT (имеется в виду
система FAT16). Почему же недоступна команда
для конвертации в NTFS? Открою маленький
секрет: в этом разделе не было никаких
данных, а, следовательно, нечего было
терять, и для превращения файловой
системы раздела в NTFS следует выбрать
команду Format — только и всего.
Рисунок 26
Все команды контекстного
меню DOS-версии Partition Magic доступны в меню
Operations главного окна (рисунок 27).
Рисунок 27
Как видим, программа
Partition Magic 8.0 обладает массой возможностей
и вспомогательных программ, и сможет
решить практически все задачи, которые
пользователь собирается решить при
работе с дисковыми разделами.
Заключение
Файловая система с
точки зрения пользователя — это
«пространство», в котором размещаются
файлы. А как научный термин — это часть
операционной системы, назначение которой
состоит в том, чтобы обеспечить
пользователю удобный интерфейс при
работе с данными, хранящимися на диске,
и обеспечить совместное использование
файлов несколькими пользователями и
процессами.
В широком смысле
понятие «файловая система» включает:
· совокупность
всех файлов на диске,
· наборы структур
данных, используемых для управления
файлами, такие, например, как каталоги
файлов, дескрипторы файлов, таблицы
распределения свободного и занятого
пространства на диске,
· комплекс
системных программных средств, реализующих
управление файлами, в частности: создание,
уничтожение, чтение, запись, именование,
поиск и другие операции над файлами.
Наличие файловой
системы позволяет определить, как
называется файл, где он находится.
Поскольку на персональных компьютерах
информация хранится в основном на
дисках, то применяемые на них файловые
системы определяют организацию данных
именно на дисках (точнее, на логических
дисках). В данной работе рассмотрено
несколько видов файловых систем, их
сравнительная характеристика.
Список использованной
литературы
1. Гук М. Аппаратные
средства IBM PC: Бестселлер — 2-е изд.: Питер,
2005.
2. Фигурнов В.Э.
«IBM PC для пользователя» — 7е изд., перераб.
и доп. – М. ИНФА-М, 1998.
3. Организация
ЭВМ и систем
4. Орлов С.,
Цилькер Б. Организация ЭВМ и систем :
Питер, 2007, 672 с.
5. Мелехин В.Ф.,
Павловский Е. Г. Вычислительные машины,
системы и сети, 3-е изд.: М.: Издательский
центр «Академия», 2007, 560 с.
6. Гордеев А.В.
Операционные системы. Учебник для вузов.
2-е изд.: Питер, 2004, 416 с.
7. Таненбаум
Э.С. Перевод: А. Леонтьев Современные
операционные системы: Питер, 2002, 1040 с.
8. Гладкий А. А.
Windows XP для всех : Питер, 2005, 208 с.
Электронные ресурсы
1. Обзор файловых
систем FAT и NTFS http://support.microsoft.com/kb/100108
2. www.powerquest.com
3.
http://www.acronis.ru/homecomputing/products/diskdirector/
№ занятия: 8.
Тема: Организация файловой системы.
Занятие_8_Л6
Вопрос 1. Логическая организация файловой системы
Файл – это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные, а также собственно хранимые в этой области данные и набор атрибутов, позволяющих ОС манипулировать этими данными.
Долговременное и надежное хранение информации. Долговременность достигается за счет использования запоминающих устройств, не зависящих от питания, а высокая надежность определяется средствами защиты доступа к файлам и общей организацией программного кода ОС, при которой сбои аппаратуры чаще всего не разрушают информацию, хранящуюся в файлах.
Совместное использование информации. Файлы обеспечивают естественный и простой способ разделения информации между приложениями и пользователями за счет наличия понятного человеку символьного имени и постоянства хранимой информации и расположения файла. Пользователь должен иметь удобные средства работы с файлами, включая, каталоги и справочники, объединяющие файлы в группы, средства поиска файлов по признакам, набор команд для создания, модификации и удаления файлов. Файл может быть создан одним пользователем, а применяться совсем другим, при этом создатель файла или администратор могут определить права доступа к нему других пользователей. Эти цели реализуются в ОС файловой системой.
Файловая система (ФС) – это часть операционной системы, включающая:
- совокупность всех файлов на диске;
- наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;
- комплекс системных программных средств, реализующих различные операции с файлами, такие как создание, уничтожение, чтение, запись, именование и поиск файлов.
Файловая система позволяет программам обходиться набором достаточно простых операций для выполнения действий над некоторым абстрактным объектом, представляющим файл. При этом программистам не нужно иметь дело с деталями действительного расположения данных на диске, буферизацией данных и другими низкоуровневыми проблемами передачи данных с долговременного запоминающего устройства. Все эти функции ФС берет на себя.
Файловая система распределяет дисковую память, поддерживает именование файлов, отображает имена файлов на соответствующие адреса во внешней памяти, обеспечивает доступ к данным, поддерживает разделение, защиту и восстановление файлов.
Таким образом, файловая система играет роль промежуточного слоя, экранирующего все сложности физической организации долговременного хранилища данных и создающего для программ более простую логическую модель этого хранилища, а также предоставляя им набор удобных в использовании команд для манипулирования файлами.
Задачи, решаемые ФС, зависят от способа организации вычислительного процесса в целом.
Самый простой тип – это ФС в однопользовательских и однопрограммных ОС, к числу которых относится, например, MS-DOS.
Основные функции однопользовательских однопрограммных ФС нацелены на решение следующих задач:
- именование файлов;
- программный интерфейс для приложений;
- отображения логической модели файловой системы на физическую организацию хранилища данных;
- устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств.
Задачи ФС усложняются в операционных однопользовательских мультипрограммных ОС, которые, хотя и предназначены для работы одного пользователя, но дают ему возможность запускать одновременно несколько процессов. Одной из первых ОС этого типа стала OS/2. К перечисленным задачам добавляется новая задача совместного доступа к файлу из нескольких процессов. Файл в этом случае является разделяемым ресурсом, а значит, ФС должна решать весь комплекс проблем, связанных с такими ресурсами.
В частности, в однопользовательских мультипрограммных ФС должны быть предусмотрены следующие средства:
- блокировки файла и его частей;
- предотвращения гонок;
- исключения тупиков;
- согласования копий и т. п.
В многопользовательских системах ФС появляется еще одна задача – защита файлов одного пользователя от несанкционированного доступа другого пользователя.
Еще более сложными становятся функции ФС, которая работает в составе сетевой ОС.
Файловые системы поддерживают несколько функционально различных типов файлов, в число которых, как правило, входят:
- обычные файлы;
- файлы-каталоги;
- специальные файлы;
- именованные конвейеры;
- файлы, отображаемые на память.
Обычные файлы, или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем никак не ограничивают и не контролируют содержимое и структуру обычного файла.
Содержимое обычного файла определяется приложением, которое с ним работает.
Каталоги – это особый тип файлов, которые содержат системную справочную информацию о наборе файлов, сгруппированных пользователями по какому-либо неформальному признаку. Во многих операционных системах в каталог могут входить файлы любых типов, в том числе другие каталоги, за счет чего образуется древовидная структура, удобная для поиска. Каталоги устанавливают соответствие между именами файлов и их характеристиками, используемыми файловой системой для управления файлами. В число таких характеристик входит, в частности, информация (или указатель на другую структуру, содержащую эти данные) о типе файла и расположении его на диске, правах доступа к файлу, датах его создания и модификации. Во всех остальных отношениях каталоги рассматриваются файловой системой как обычные файлы.
Специальные файлы – это фиктивные файлы, ассоциированные с устройствами ввода-вывода, которые используются для унификации механизма доступа к файлам и внешним устройствам. Специальные файлы позволяют пользователю выполнять операции ввода-вывода посредством обычных команд записи в файл или чтения из файла. Эти команды обрабатываются сначала программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются операционной системой в команды управления соответствующим устройством.
Современные файловые системы поддерживают и другие типы файлов, такие как символьные связи, именованные конвейеры, отображаемые на память файлы. Они будут рассмотрены позже.
Иерархическая структура файловой системы. Большинство файловых систем имеет иерархическую структуру, в которой уровни создаются за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня, при этом частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один каталог (рис. 1 а).
Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть, если файл может входить сразу в несколько каталогов.

Рис. 1. Иерархия файловых систем.
Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в Unix – сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом, или корнем (root). При такой организации пользователь освобожден от необходимости помнить имена всех файлов, ему достаточно примерно представлять, к какой группе может быть отнесен тот или иной файл, чтобы путем последовательного просмотра каталогов найти его. Иерархическая структура удобна для многопользовательской работы: каждый пользователь со своими файлами локализуется в своем каталоге или поддереве каталогов, и вместе с тем все файлы в системе логически связаны.
Имена файлов. Все типы файлов имеют символьные имена.
В иерархически организованных файловых системах обычно используются следующие типы имен файлов:
-
- простое (короткое) символьное имя;
- полное (составное) символьное имя;
- относительное символьное имя;
- уникальное имя (числовой идентификатор).
Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. До сравнительно недавнего времени эти границы были весьма узкими. Так, в известной файловой системе FAT MS-DOS длина имен ограничивалась схемой 8.3 (8 символов – собственно имя, 3 символа – расширение имени), а в файловой системе s5, поддерживаемой многими версиями ОС Unix, простое символьное имя не могло содержать более 14 символов.
Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют давать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в том или ином файле. Поэтому современные файловые системы, а также усовершенствованные варианты уже существовавших файловых систем, как правило, поддерживают длинные простые символьные имена файлов. Например, в файловых системах NTFS и FAT32, входящих в состав ОС семейства Windows, имя файла может содержать до 255 символов.
Примеры простых имен файлов и каталогов:
-
- quest_ul.doc;
- task-entran.exe;
- приложение к CD 254L на русском языке-doc;
- installable filesystem manager.doc.
В иерархических файловых системах разным файлам разрешено иметь одинаковые простые символьные имена при условии, что они принадлежат разным каталогам. То есть здесь работает схема много файлов – одно простое имя. Для однозначной идентификации файла в таких системах используется так называемое полное имя.
Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла.
Таким образом, полное имя является составным именем, в котором простые имена отделены друг от друга принятым в ОС разделителем. Часто в качестве разделителя используется прямой или обратный слэш, при этом принято не указывать имя корневого каталога. На рис. 1 б два файла имеют простое имя Main.exe, однако их составные имена /depart/Maiп.ехе и /user/Anna/Main.exe различаются.
В древовидной файловой системе между файлом и его полным именем имеется взаимно однозначное соответствие один файл – одно полное имя. В файловых системах имеющих сетевую структуру, файл может входить в несколько каталогов, а значит, иметь несколько полных имен, здесь справедливо соответствие один файл – много полных имен. В обоих случаях файл однозначно идентифицируется полным именем. Файл может быть идентифицирован также относительным именем.
Относительное имя файла определяется через понятие «текущий каталог». Для каждого пользователя в каждый момент времени один из каталогов файловой системы является текущим, причем этот каталог выбирается самим пользователем по команде ОС. Файловая система фиксирует имя текущего каталога, чтобы затем использовать его как дополнение к относительным именам для образования полного имени файла. При применении относительных имен пользователь идентифицирует файл цепочкой имен каталогов, через которые проходят маршрут от текущего каталога до данного файла. Например, если текущим каталогом является каталог/user, то относительное имя файла /user/Anna/Main.ехе выглядит следующим образом: Anna/Main.exe.
В некоторых операционных системах разрешено присваивать одному и тому же файлу несколько простых имен, которые можно интерпретировать как псевдонимы. В этом случае, так же как в системе с сетевой структурой, устанавливается соответствие один файл – много полных имен, так как каждому простому имени файла соответствует, по крайней мере, одно полное имя.
Символьные имена удобны для пользователя, но не для операционной системы. Для своих внутренних целей ОС присваивает файлу уникальное имя, так что справедливо соотношение один файл – одно уникальное имя. Уникальное имя существует наряду с одним или несколькими символьными именами, присваиваемыми файлу пользователями или приложениями. Уникальное имя представляет собой числовой идентификатор и предназначено только для использования операционной системой. Примером такого уникального имени файла является номер индексного дескриптора в системе Unix.
Монтирование. В общем случае вычислительная система может иметь несколько дисковых устройств. Даже типичный персональный компьютер обычно имеет один накопитель на жестком диске, один накопитель на гибких дисках и накопитель для компакт-дисков. Мощные же компьютеры, как правило, оснащены большим количеством дисковых накопителей, на которые устанавливаются пакеты дисков. Более того, даже одно физическое устройство с помощью средств операционной системы может быть представлено в виде нескольких логических устройств, в частности, путем разбиения дискового пространства на разделы.
Возникает вопрос, каким образом организовать хранение файлов в системе, имеющей несколько устройств внешней памяти? Первое решение состоит в том, что на каждом из устройств размещается автономная файловая система, то есть файлы, находящиеся на этом устройстве; описываются деревом каталогов, никак не связанным с деревьями каталогов на других устройствах. В таком случае для однозначной идентификации файла пользователь наряду с составным символьным именем файла должен указывать идентификатор логического устройства. Примером такого автономного существования файловых систем является операционная система MS-DOS, в которой полное имя файла включает буквенный идентификатор логического диска. Так, при обращении к файлу, расположенному на диске А, пользователь должен указать имя этого диска: A:privatletteruniletl.doc1.
Другим вариантом является такая организация хранения файлов, при которой пользователю предоставляется возможность объединять файловые системы, находящиеся на разных устройствах, в единую файловую систему, описываемую единым деревом каталогов. Такая операция называется монтированием.
Рассмотрим, как осуществляется эта операция на примере ОС Unix.
Среди всех имеющихся в системе логических дисковых устройств операционная система выделяет одно устройство, называемое системным. Пусть имеются две файловые системы, расположенные на разных логических дисках, причем один из дисков является системным (рис. 2).
Знак «/» обозначает корень файловой системы. Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.
Только пользователь root имеет право читать и изменять файлы в этом каталоге.

Рис. 2. Файловая система до монтирования.
Файловая система, расположенная на системном диске, назначается корневой. Для связи иерархий файлов в корневой файловой системе выбирается некоторый существующий каталог, в данном примере – каталог man. После выполнения монтирования выбранный каталог man становится корневым каталогом второй файловой системы. Через этот каталог монтируемая файловая система подсоединяется как поддерево к общему дереву (рис. 3).

Рис. 3. Общая файловая система после монтирования.
После монтирования общей файловой системы для пользователя нет логической разницы между корневой и смонтированной файловыми системами, в частности, именование файлов производится так же, как если бы система с самого начала была единой.
Атрибуты файлов. Понятие «файл» включает не только хранимые им данные и имя, но и атрибуты. Атрибуты – это информация, описывающая свойства файла. Примеры возможных атрибутов файла:
- тип файла (обычный файл, каталог, специальный файл и т. п.);
- владелец файла;
- создатель файла;
- пароль для доступа к файлу;
- информация о разрешенных операциях доступа к файлу;
- времена создания, последнего доступа и последнего изменения;
- текущий размер файла;
- максимальный размер файла;
- признак «только для чтения»;
- признак «скрытый файл»;
- признак «системный файл»;
- признак «архивный файл»;
- признак «двоичный/символьный»;
- признак «временный» (удалить после завершения процесса);
- признак блокировки;
- длина записи в файле;
- указатель на ключевое поле в записи;
- длина ключа.
Набор атрибутов файла определяется спецификой файловой системы: в файловых системах разного типа для характеристики файлов могут использоваться разные наборы атрибутов.
В однопользовательской ОС в наборе атрибутов будут отсутствовать атрибуты, имеющие отношение к пользователям и защите, такие как владелец файла, создатель файла, пароль для доступа к файлу, информация о разрешенном доступе к файлу.
Пользователь может получать доступ к атрибутам с помощью средств, предоставленных для этих целей файловой системой. Обычно разрешается читать значения любых атрибутов, а изменять – только некоторые.
Например, пользователь может изменить права доступа к файлу (при условии, что он обладает необходимыми для этого полномочиями), но изменять дату создания или текущий размер файла ему не разрешается.
Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это было сделано в файловой системе MS-DOS.
На рис. 4а представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R – только для чтения, А – архивный, Н – скрытый, S – системный.

Рис. 4. Структура каталогов:
а – структура записи каталога MS-DOS;
б – структура записи каталога ОС Unix.
Другим вариантом является размещение атрибутов в специальных таблицах, когда в каталогах содержатся только ссылки на эти таблицы.
Такой подход реализован, например, в файловой системе ufs ОС Unix. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла – так называется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 2.4 б).
В том и другом вариантах каталоги обеспечивают связь между именами файлов и собственно файлами. Однако подход, когда имя файла отделено от его атрибутов, делает систему более гибкой. Например, файл может быть легко включен сразу в несколько каталогов. Записи об этом файле в разных каталогах могут содержать разные простые имена, но в поле ссылки будет указан один и тотже номер индексного дескриптора.
Логическая организация файла. В общем случае данные, содержащиеся в файле, имеют некую логическую структуру. Эта структура является базой при разработке программы, предназначенной для обработки этих данных. Признаками, отделяющими один структурный элемент от другого, могут служить определенные кодовые последовательности или просто известные программе значения смещений этих структурных элементов относительно начала файла. Поддержание структуры данных может быть либо целиком возложено на приложение, либо в той или иной степени эту работу может взять на себя файловая система.
В первом случае, когда все действия, связанные со структуризацией и интерпретацией содержимого файла, целиком относятся к ведению приложения, файл представляется ФС неструктурированной последовательностью данных. Приложение формулирует запросы к файловой системе на ввод-вывод, используя общие для всех приложений системные средства, например, указывая смещение от начала файла и количество байтов, которые необходимо считать или записать. Поступивший к приложению поток байтов интерпретируется в соответствии с заложенной в программе логикой. Например, компилятор генерирует, а редактор связей воспринимает вполне определенный формат объектного модуля программы. При этом формат файла, в котором хранится объектный модуль, известен только этим программам. Подчеркнем, что интерпретация данных никак не связана с действительным способом их хранения в файловой системе.
Модель файла, в соответствии с которой содержимое файла представляется неструктурированной последовательностью (потоком) байтов, стала популярной вместе с ОС Unix, а теперь она широко используется и в большинстве современных ОС, в том числе во всех версиях ОС Windows и NetWare. Неструктурированная модель файла позволяет легко организовать разделение файла между несколькими приложениями: разные приложения могут по-своему структурировать и интерпретировать данные, содержащиеся в файле. В этом случае поддержание структуры файла поручается файловой системе. Файловая система видит файл как упорядоченную последовательность логических записей. Приложение может обращаться к ФС с запросами на ввод-вывод на уровне записей, например, «считать запись 25 из файла FILE.DOC».
Файловая система должна обладать информацией о структуре файла, достаточной для того, чтобы выделить любую запись. ФС предоставляет приложению доступ к записи, а вся дальнейшая обработка данных, содержащихся в этой записи, выполняется приложением. Развитием этого подхода стали системы управления базами данных (СУБД), которые поддерживают не только сложную структуру данных, но и взаимосвязи между ними.
Логическая запись является наименьшим элементом данных, которым может оперировать программист при организации обмена с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система должна обеспечивать программисту доступ к отдельной логической записи. Файловая система может использовать два способа доступа к логическим записям: читать или записывать логические записи последовательно (последовательный доступ) или позиционировать файл на запись с указанным номером (прямой доступ).
Очевидно, что ОС не может поддерживать все возможные способы структурирования данных в файле, поэтому в тех ОС, в которых вообще поддерживается логическая структуризация файлов, поддержка реализована для небольшого числа широко распространенных схем логической организации файла.
К числу таких способов структуризации относится представление данных в виде записей фиксированной длины (рис.5а). В этом случае доступ к n-й записи осуществляется либо путем последовательного чтения (n-1) предшествующих записей, либо прямо по адресу, вычисленному по ее порядковому номеру.
Например, если L – длина записи, то начальный адрес n-й записи равен
Lхn. Заметим, что при такой логической организации размер записи фиксирован
в пределах файла, а записи в различных файлах, принадлежащих одной и той же файловой системе, могут иметь различный размер.
Другой способ структуризации состоит в представлении данных в виде последовательности записей переменного размера.
Если расположить значения длин записей так, как это показано на рис. 5б, то для поиска нужной записи система должна последовательно считать все предшествующие записи. Вычислить адрес нужной записи по ее номеру при такой логической организации файла невозможно, а следовательно, не может быть применен более эффективный метод прямого доступа. Файлы, доступ к записям которых осуществляется последовательно, по номерам позиций, называются неиндексированными, или последовательными, файлами.
Другим типом файлов являются индексированные файлы; они допускают более быстрый прямой доступ к отдельной логической записи.
В индексированном файле записи имеют одно или более ключевых (индексных) полей и могут адресоваться путем указания значений этих полей. Для быстрого поиска данных в индексированном файле предусматривается специальная индексная таблица, в которой значениям ключевых полей ставится в соответствие адрес внешней памяти. Этот адрес может указывать либо непосредственно на искомую запись, либо на некоторую область внешней памяти, занимаемую несколькими записями, в число которых входит искомая запись.

Рис. 5. Способы логической организации файлов.
В последнем случае говорят, что файл имеет индексно-последовательную организацию, так как поиск включает два этапа: прямой доступ по индексу к указанной облаете диска, а затем последовательный просмотр записей в указанной области. Ведение индексных таблиц берет на себя файловая система. Понятно, что записи в индексированных файлах могут иметь произвольную длину.
Все сказанное в большей степени относится к обычным файлам, которые могут быть как структурированными, так и неструктурированными. Что же касается других типов файлов, таких как каталоги или файлы типа «символьная связь», то они обладают вполне определенной специфической для своего типа структурой, которая известна и «понятна» файловой системе.
Вопрос 2. Физическая организация файловой системы.
Представление пользователя о файловой системе, как об иерархически организованном множестве информационных объектов, имеет мало общего с порядком хранения файлов на диске. Файл, имеющий образ цельного, непрерывающегося набора байтов, на самом деле очень часто разбросан «кусочками» по всему диску, причем это разбиение никак не связано с логической структурой файла, например, его отдельная логическая запись может быть расположена в несмежных секторах диска. Логически объединенные файлы из одного каталога совсем не обязаны соседствовать на диске.
Принципы размещения файлов, каталогов и системной информации на реальном устройстве описываются физической организацией файловой системы. Очевидно, что разные файловые системы имеют разную физическую организацию.
Диски, разделы, секторы, кластеры. Основным типом устройства, которое используется в современных вычислительных системах для хранения файлов, является дисковый накопитель. Дисковые накопители предназначены для считывания и записи данных на жесткие и гибкие магнитные диски.
Жесткий диск состоит из одной или нескольких стеклянных или металлических пластин, каждая из которых покрыта с одной или двух сторон магнитным материалом. Таким образом, диск в общем случае состоит из пакета пластин (рис. 6).
На каждой стороне каждой пластины размечены тонкие концентрические кольца − дорожки (traks), на которых хранятся данные. Количество дорожек зависит от типа диска. Нумерация дорожек начинается с 0 от внешнего края к центру диска. Когда диск вращается, элемент, называемый головкой, считывает двоичные данные с магнитной дорожки или записывает их на магнитную дорожку.
Рис. 6.Схема устройства жесткого диска.
Головка может позиционироваться над заданной дорожкой. Головки перемещаются над поверхностью диска дискретными шагами, каждый шаг соответствует сдвигу на одну дорожку. Запись на диск осуществляется благодаря способности головки изменять магнитные свойства дорожки. В некоторых дисках вдоль каждой поверхности перемещается одна головка, а в других – имеется по головке на каждую дорожку.
В первом случае для поиска информации головка должна перемещаться по радиусу диска. Обычно все головки закреплены на едином перемещающем механизме и двигаются синхронно. Поэтому, когда головка фиксируется на заданной дорожке одной поверхности, все остальные головки останавливаются над дорожками с такими же номерами. В тех же случаях, когда на каждой дорожке имеется отдельная головка, никакого перемещения головок с одной дорожки на другую не требуется, за счет этого экономится время, затрачиваемое на поиск данных.
Совокупность дорожек одного радиуса на всех поверхностях всех пластин пакета называется цилиндром (cylinder). Каждая дорожка разбивается на фрагменты, называемые секторами (sectors), или блоками (blocks), так что все дорожки имеют равное число секторов, в которые максимально можно записать одно и то же число байтов. Сектор имеет фиксированный для конкретной системы размер, выражающийся степенью двойки. Чаще всего размер сектора составляет 512 байт. Учитывая, что дорожки разного радиуса имеют одинаковое число секторов, плотность записи становится тем выше, чем ближе дорожка к центру.
Для того чтобы контроллер мог найти на диске нужный сектор, необходимо задать ему все составляющие адреса сектора:
- номер цилиндра;
- номер поверхности;
- номер сектора на дорожке.
Сектор – наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью. Это означает, что даже в тех случаях, когда программе требуется прочитать с диска только один байт, в действительности будет считан целый сектор и передан системе для выборки нужных данных.
Так как прикладная программа оперирует не секторами, а байтами, к тому же заданный объем требуемых данных не обязательно оказывается кратным размеру сектора, то типичный запрос включает чтение нескольких секторов, содержащих нужную информацию, и одного или двух секторов, содержащих наряду с требуемыми избыточные данные (рис. 7).
Операционная система при работе с диском использует собственную единицу дискового пространства, называемую кластером (cluster). При создании файла ОС запрашивает для него область на диске, размер которой кратен принятому в этой операционной системе размеру кластера.
Например, если файл имеет размер 2560 байт, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.
Кластер – наименьшая единица дискового пространства, которой оперирует файловая система при распределении памяти на диске.
Операционная система при работе с диском использует собственную единицу дискового пространства, называемую кластером (cluster). При создании файла ОС запрашивает для него область на диске, размер которой кратен принятому в этой операционной системе размеру кластера.

Рис. 7. Считывание избыточных данных при обмене с диском.
Например, если файл имеет размер 2560 байт, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.
Кластер – наименьшая единица дискового пространства, которой оперирует файловая система при распределении памяти на диске.
Иногда кластер называют блоком, что может привести к терминологической путанице. Вообще, терминология, используемая при описании форматов дисков и файловых систем, зависит от аппаратной платформы (RISC, Wintel и т. п.) и операционной системы. Это нужно учитывать и трактовать термины в зависимости от контекста.
Дорожки и секторы создаются в результате выполнения процедуры физического, или низкоуровневого, форматирования диска, предшествующей использованию диска. Для определения границ блоков на диск записывается идентификационная информация. Низкоуровневый формат диска не зависит от типа операционной системы, которая этот диск будет использовать.
Разметку диска под конкретный тип файловой системы выполняют процедуры высокоуровневого, или логического, форматирования. При высокоуровневом форматировании определяется размер кластера, и на диск записывается информация, необходимая для работы файловой системы, в том числе: информация о доступном и неиспользуемом пространстве, о границах областей, отведенных под файлы и каталоги, о поврежденных областях. Кроме того, на диск записывается загрузчик операционной системы – небольшая программа, которая начинает процесс инициализации операционной системы после включения питания или рестарта компьютера.
Прежде чем форматировать диск под определенную файловую систему, он может быть разбит на разделы. Раздел – это непрерывная часть физического диска, которую операционная система представляет пользователю как логическое устройство.
В представлении прикладного программиста логическое устройство функционирует так, как если бы это был отдельный физический диск.
Именно с логическими устройствами работает пользователь, обращаясь к ним по символьным именам, например А, В, С, SYS и т. п. Операционные системы разного типа используют единое для всех них представление о разделах, но создают на его основе логические устройства, специфические для каждого типа ОС.
На каждом логическом устройстве может создаваться только одна файловая система.
В частном случае, когда все дисковое пространство охватывается одним разделом, логическое устройство представляет физическое устройство в целом. Если диск разбит на несколько разделов, то для каждого из этих разделов может быть создано отдельное логическое устройство. Логическое устройство может быть создано и на базе нескольких разделов, причем эти разделы не обязательно должны принадлежать одному физическому устройству. Объединение нескольких разделов в единое логическое устройство может выполняться разными способами и преследовать разные цели, основные из которых: увеличение общего объема логического раздела, повышение производительности и отказоустойчивости.
Примерами организации совместной работы нескольких дисковых разделов являются так называемые RAID-массивы, подробнее о которых рассказано далее.
На разных логических устройствах одного и того же физического диска могут располагаться файловые системы как одного и того же, так и разных типов. На рис. 8 показан пример диска, разбитого на три раздела, в которых установлено две файловых системы NTFS (разделы С и Е) и одна файловая система FAT (раздел D).
Операционная система может поддерживать разные статусы разделов, особым образом отмечая разделы, которые могут быть использованы для загрузки модулей операционной системы, и разделы, в которых можно устанавливать только приложения и хранить файлы данных. Один из разделов диска помечается как загружаемый, или активный. Именно из этого раздела считывается загрузчик операционной системы.

Рис. 8. Разбиение диска на разделы.
Физическая организация и адресация файла. Важным компонентом физической организации файловой системы является физическая организация
файла, то есть способ размещения файла на диске. Основными критериями эффективности физической организации файлов являются:
- скорость доступа к данным;
- объем адресной информации файла;
- степень фрагментированности дискового пространства;
- максимально возможный размер файла.
Непрерывное размещение – простейший вариант физической организации (рис. 9а), при котором файлу предоставляется последовательность кластеров диска, образующих непрерывный участок дисковой памяти.
Основным достоинством этого метода является высокая скорость доступа, так как затраты на поиск и считывание кластеров файла минимальны. Также минимален объем адресной информации – достаточно хранить только номер первого кластера и объем файла. Данная физическая организация максимально возможный размер файла не ограничивает.
Однако этот вариант имеет существенные недостатки, которые затрудняют его применимость на практике, несмотря на всю его логическую простоту. При более пристальном рассмотрении оказывается, что реализовать эту схему не так уж просто. Действительно, какого размера должна быть непрерывная область, выделяемая файлу, если файл при каждой модификации может увеличить свой размер?
Еще более серьезной проблемой является фрагментация. Спустя некоторое время после создания файловой системы, в результате выполнения многочисленных операций создания и удаления файлов пространство диска неминуемо превращается в «лоскутное одеяло», включающее большое число свободных областей небольшого размера.

Рис. 9 Физическая организация файла: непрерывное размещение (а); связанный список кластеров (б); связанный список индексов (в); перечень номеров кластеров (г).
Зачастую при фрагментации суммарный объем свободной памяти может быть очень большим, а выбрать место для размещения файла целиком – невозможно. Поэтому на практике используются методы, в которых файл размещается в нескольких в общем случае несмежных областях диска.
Следующий способ физической организации файла – размещение в виде связанного списка кластеров дисковой памяти (рис. 9б). При таком способе в начале каждого кластера содержится указатель на следующий кластер. В этом случае адресная информация минимальна: расположение файла может быть задано одним числом – номером первого кластера. В отличие от предыдущего способа, каждый кластер может быть присоединен к цепочке кластеров какого-либо файла, следовательно, фрагментация на уровне кластеров отсутствует.
Файл может изменять свой размер во время своего существования, наращивая число кластеров. Недостатком является сложность реализации доступа к произвольно заданному месту файла – чтобы прочитать пятый по порядку кластер файла, необходимо последовательно прочитать четыре первых кластера, прослеживая цепочку номеров кластеров.
Популярным способом, применяемым, например, в файловой системе FAT, является размещение в виде связанного списка индексов (рис. 9в). Этот способ является некоторой модификацией предыдущего. Файлу также выделяется память в виде связанного списка кластеров. Номер первого кластера запоминается в записи каталога, где хранятся характеристики этого файла. Остальная адресная информация отделена от кластеров файла. С каждым кластером диска связывается некоторый элемент – индекс. Когда память свободна, все индексы имеют нулевое значение. Если некоторый кластер N назначен некоторому файлу, то индекс этого кластера становится равным либо номеру М следующего кластера данного файла, либо принимает специальное значение, являющееся признаком того, что этот кластер является для файла последним. Индекс же предыдущего кластера файла принимает значение N, указывая на вновь назначенный кластер.
При такой физической организации сохраняются все достоинства предыдущего способа: минимальность адресной информации, отсутствие фрагментации, отсутствие проблем при изменении размера. Кроме того, данный способ обладает дополнительными преимуществами. Во-первых, для доступа к произвольному кластеру файла не требуется последовательно считывать его кластеры, достаточно прочитать только секторы диска, содержащие таблицу индексов, отсчитать нужное количество кластеров файла по цепочке и определить номер нужного кластера. Во-вторых, данные файла заполняют кластер целиком, а значит, имеют объем, равный степени двойки.
Еще один способ задания физического расположения файла заключается в простом перечислении номеров кластеров, занимаемых этим файлом (рис. 9 г). Этот набор номеров и служит адресом файла. Недостаток данного способа очевиден: длина адреса зависит от размера файла и для большого файла может составить значительную величину. Достоинством же является высокая скорость доступа к произвольному кластеру файла, так как здесь применяется прямая адресация, которая исключает просмотр цепочки указателей при поиске адреса произвольного кластера файла. Фрагментация на уровне кластеров в этом способе также отсутствует.
Последний подход с некоторыми модификациями используется в традиционных файловых системах S5 и ufs ОС Unix. В файловой системе ufs для сокращения объема адресной информации используется комбинированная схема адресации кластеров, позволяющая дополнять прямой способ адресации косвенным. Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт (рис. 10).

Рис. 10. Схема адресации файловой системы ufs.
Если размер файла меньше или равен 12 кластерам, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса. Если кластер имеет размер 8 Кбайт (максимальный размер кластера, поддерживаемого в ufs), то таким образом можно адресовать файл размером до 8192 х 12 = 98304 байт.
Если размер файла превышает 12 кластеров, то следующее 13-е поле содержит не номер следующего кластера, а номер кластера, в котором могут быть расположены номера следующих кластеров файла.
Таким образом, 13-й элемент адреса используется для косвенной адресаций. При размере в 8 Кбайт кластер, на который указывает 13-й элемент, может содержать 2048 номеров следующих кластеров данных файла, и размер файла может возрасти до 8192 х (12 + 2048) = 16 875 520 байт.
Если размер файла превышает 12 + 2048 = 2060 кластеров, то используется 14-е поле. В нем находится номер кластера, содержащего 2048 номеров кластеров, каждый из которых хранит 2048 номеров кластеров данных файла. Здесь применяется уже двойная косвенная адресация.
С ее помощью можно адресовать кластеры в файлах, содержащих до 8192 х (12 + 2048 + 20482) − 3,43766 х 1010 байт.
И наконец, если файл включает более 12 + 2048 + 20482 – 4 196 364 кластеров, то используется последнее 15-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего следующий максимальный размер:
8192 х (12 + 2048 + 20482 + 20483) − 7,0403 х 1013 байт.
Та к им обр а зом , файловая система ufs при размере кластера в 8 Кбайт поддерживает файлы, состоящие максимум из 70 триллионов байтов данных, хранящихся в 8 миллиардах кластеров. Как видно на рис. 2.10, для задания адресной информации о максимально большом файле требуется 15 элементов по 4 байта (60 байт) в центральной части адреса плюс 1 + (1 + 2048) + (1 + 2048
+ + 20482) – 4 198 403 кластера в косвенной части адреса. Несмотря на огромную величину, это число составляет всего около 0,05 % от объема адресуемых данных.
Файловая система ufs поддерживает дисковые кластеры и меньших размеров, при этом максимальный размер файла будет другим. Используемая в более ранних версиях Unix, файловая система S5 имеет аналогичную схему адресации, но она рассчитана на файлы меньших размеров, поэтому в ней применяется 13 адресных элементов вместо 15.
Метод перечисления адресов кластеров файла характерен и для файловой системы NTFS, используемой в ОС семейства Windows NT. Здесь он дополнен достаточно естественным приемом, сокращающим объем адресной информации: адресуются не кластеры файла, а непрерывные области, состоящие из смежных кластеров диска.
Каждая такая область, называемая отрезком (run), или экстентом (extent), описывается с помощью двух чисел: начального номера кластера и количества кластеров в отрезке. Так как для сокращения времени операции обмена ОС старается разместить файл в последовательных кластерах диска, то в большинстве случаев количество последовательных областей файла будет меньше количества кластеров файла.
Для того чтобы корректно принимать решение о выделении файлу набора кластеров, файловая система должна отслеживать информацию о состоянии всех кластеров диска: свободен/занят. Эта информация может храниться как отдельно от адресной информации файлов, так и вместе с ней.