logo
СППО / SppoLabs

2.1. Файловая система (fat, ext2fs)

Лабораторная работа 2.1_W. Файловая система FAT.

Цель. Ознакомление с файловой системой FAT. Приобретение навыков по восстановлению файловой структуры средствами низкого уровня.

Вопросы для изучения.

1. Физическая модель диска. Физический адрес сектора.

2. Логическая модель диска. Основные элементы файловой системы.

3. Загрузочная запись.

4. Организация таблицы размещения файлов.

5. Структура каталога.

6. Интерфейс программы diskeditor.

Задание.

Работа выполняется под эмулятором в виртуальной DOS.

1. Скопировать на виртуальную дискету произвольный текстовый файл, размером не менее 2-х кб. Удалить его. Восстановить файл в diskedit-е "вручную", т. е. непосредственно корректируя запись в каталоге (dir) и таблицу размещения файлов (FAT).

2. Скопировать на дискету два текстовых файла. Объединить их в один, не перемещая данные, а корректируя цепочку кластеров в FAT и информацию в dir.

3. Создать в diskedit новый текстовый файл (выбрать свободный кластер, записать в него текст, создать запись в каталоге и цепочку в FAT).

4. Освоить операцию поиска в diskedit (найти кластер с записанным текстом).

5. Проверить дискету NDD или ScanDisk. Исправить ошибки, если таковые допущены.

В отчете описать последовательность действий (указывая конкретные размеры файлов, в какие элементы FAT какие числа записываются и т. д.).

Контрольные вопросы.

1. В каком кластере находится корневой каталог?

2. Перечислите элементы записи каталога.

3. Каков принцип хранения длинных имен файлов в каталоге системы FAT?

4. Чем отличается физический и логический адрес сектора?

5. Каков размер сектора? Кластера?

6. Какие записи являются обязательными для некорневого каталога?

7. Что содержит загрузочный сектор?

Лабораторная работа 2.1_L. Файловая система ext2fs.

Цель. Ознакомление с файловой системой ext2fs. Приобретение навыков по восстановлению файловой структуры средствами низкого уровня.

Общие сведения.

Сокращение ext2fs расшифровывается как "вторая расширенная файловая система" (second extended filesystem). При этом имеются в виду расширения по отношению к ФС minix, использованной в первых версиях Linux.

Рассматриваемая файловая система состоит из следующих элементов:

— начальный (загрузочный) блок,

— суперблок,

— область индексных дескрипторов (INOD-s),

— обрасть данных.

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

Суперблок содержит общую информацию о ФС, в частности размеры ее элементов.

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

— тип файла,

— время создания и модификации,

— идентификаторы владельца и группы владельца,

— права доступа и атрибуты,

— номера блоков.

В большинстве файловых систем поддерживается семь типов файлов

— обычные файлы,

— каталоги,

— файлы байт-ориентированных (символьных) устройств,

— файлы блок-ориентированных (блочных) устройств,

— сокеты,

— именованные каналы (FIFO),

— символические ссылки.

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

В INOD хранится информация о размещении файла на диске. Имеется массив из 13 элементов, первые 10 из которых являются непосредственно номерами блоков, занятых файлом, 11-й элемент указывает на блок 1-го уровня косвенности, 12-й и 13-й — на блоки 2-го и 3-го уровней соответственно.

Блок 1-го уровня содержит продолжение массива блоков, занятых файлом (если файл имеет размер более 10 блоков). Если одного блока 1-го уровня недостаточно для описания всех блоков, занятых файлом, то используется блок 2-го уровня, содержащий массив номеров дополнительных блоков первого уровня. аналогичным образом при необходимости используется блок 3-го уровня.

Учитывая, что один блок может содержать до 256 указателей на блоки, получаем, что максимально допустимый размер файла в ext2fs составляет: 1024·(10 + 256+256·256+256·256·256) = 17,247,250,432 байт.

Для выполнения работы необходим доступ на запись к устройству с ext2fs, это может быть виртуальный диск или FDD. В последнем случае дискету необходимо отформатировать командой: mkfs -t ext2 /dev/fd0

Также для работы потребуется дисковый редактор. Это может быть, например lde (Linux Disk Editor) и утилита debugfs из пакета e2fsprogs.

Вопросы для изучения.

1. Физическая модель диска. Физический адрес сектора.

2. Логическая модель диска. Основные элементы файловой системы.

3. Загрузочная запись (резервный блок).

4. Суперблок.

5. Структура INOD.

6. Структура каталога.

7. Интерфейс дискового редактора.

Задание.

Работа выполняется под эмулятором в виртуальном Linux.

1. Скопировать на дискету (виртуальный диск) произвольный текстовый файл, размером не менее 2-х кб. Удалить его. Восстановить файл, пользуясь дисковым редактором, непосредственно корректируя запись в каталоге и соответствующий INOD.

2. Скопировать на дискету два текстовых файла. Объединить их в один, не перемещая данные, а корректируя цепочку блоков в индексных дескрипторах и информацию в каталогах.

3. Создать новый текстовый файл (выбрать свободный блок на диске, записать в него текст, создать запись в каталоге и INOD).

4. Освоить операцию поиска (найти блок с записанным текстом).

5. Проверить целостность ФС. Исправить ошибки, если таковые допущены.

В отчете описать последовательность действий (указывая конкретные размеры файлов, содержимое INOD и т. д.).

Контрольные вопросы.

1. В каком блоке находится корневой каталог?

2. Перечислите элементы записи каталога.

3. Каков принцип хранения информации о блоках, занятых файлом?

4. Чем отличается физический и логический адрес сектора?

5. Каков размер сектора? Блока?

6. Какие записи являются обязательными для каталога?

7. Что содержит загрузочный сектор?

8. Что содержит суперблок?

9. Как хранится информация о свободных блоках?

10. Как отличить свободный INOD ?