- •Введение
- •Жесткие диски КонструкцияHdd
- •Геометрия магнитного диска
- •Сервокоды
- •Технологии жесткого диска
- •Логическая структура диска
- •Главная загрузочная запись
- •Сигнатура
- •Первичный и расширенный раздел
- •Пример логической организации диска
- •Файловые системы
- •Файловая системаFat
- •Загрузочная запись
- •Таблицы размещения файлов
- •Корневой каталог
- •Область файлов и каталогов, понятие кластера
- •Структура каталога и дескриптора файла
- •Структура fat
- •Пример цепочки кластеров
- •Форматы таблицы fat(fat12, fat16, fat32)
- •Фрагментация диска
- •Потерянные кластеры
- •Иерархическая (древовидная) структура каталогов
- •Длинные имена
- •Ntfs Структура ntfs
- •Каталоги, эффективность при поиске
- •Журналирование, обеспечение отказоустойчивости
- •Безопасность
- •Шифрование
- •Сравнение ntfs и fat 32.
- •Форматирование
- •Загрузка операционной системы
- •Интерфейсы жестких дисков
- •Интерфейс scsi
- •Интерфейс ata (pata, sata)
- •Версии стандарта ata, скорость передачи и свойства
- •Принцип работы контроллера ata
- •Serial ata
- •Термины по жесткому диску
Структура fat
Расположение файлов в кластерах определяется с помощью таблицы распределения файлов FAT. FAT - это связанный список, который обеспечивает возможность фрагментарного расположения файлов на диске (т.е. расположения файлов по частям в разных местах диска). Этот список используется файловой системой для определения последовательности кластеров, выделенных файлу или каталогу, а также для поиска свободного пространства, необходимого для записи новых файлов и каталогов. Число элементов этого списка равно числу кластеров области данных диска. Каждому кластеру из области данных соответствует свой элемент из таблицы FAT.
Иными словами FAT состоит из элементов, элементов в таблице ровно столько, сколько кластеров на диске, и кластеру с номером N соответствует элемент FAT с тем же номером N. Каждый из элементов FAT представляющий один кластер может содержать следующие коды (см. таблицу 8):
Таблица 8. Возможные значения элемента FAT
Код, содержащийся в элементе FAT |
Описание |
(0)000h |
Доступный (пустой) кластер |
(0)002h до (F)FEFh |
Номер следующего кластера |
(F)FF0h до (F)FF7h |
Зарезервированный кластер (используется NTFS) |
(F)FF7h |
Плохой кластер (BAD) |
(F)FF8h до (F)FFFh |
Конец цепочки (EOF) |
Вернемся к задаче определения точного места на диске (номеров кластеров), где располагается файл. Если файл занимает более одного кластера, то все кластеры, занимаемые файлом, организуются в цепочку кластеров (cluster chain).
Для того чтобы прочитать файл целиком, необходимо найти его дескриптор в каталоге и считать первый кластер, на который ссылается этот дескриптор – это будет начало файла. Далее следует прочитать соответствующий первому кластеру элемент FAT и определить, является ли он последним (соответствующий означает, что кластеру с номером N соответствует элемент из таблицы FAT тоже с номером N). Если прочитанный элемент FAT не содержит признака конца файла (EOF), то он показывает номер следующего кластера цепочки, который также должен быть считан. Снова проверяем очередной элемент FAT. Повторяем это до тех пор, пока очередь не дойдет до последнего кластера в цепочке.
Пример цепочки кластеров
Пусть некоторый каталог содержит дескриптор файла (обозначим его А.txt), в которой содержится ссылка на начальный кластер (кластер № 12) из цепочки кластеров, выделенных этому файлу.
На рисунке 6 обычным шрифтом обозначены номера элементов FAT (номера элементов FAT соответствуют номерам кластеров), а жирным шрифтом обозначены числовые значения, записанные в этих элементах.
Дескриптор
файла A.txt
Фрагмент
таблицы FAT (разбит
на элементы)
Фрагмент
области данных
(разбит на кластеры) 10 0
Пустой 11 0
Пустой 12 13
1-й
кластер файла A.txt 13 14
2-й
кластер файла A.txt 14 17
3-й
кластер файла A.txt 15 16
1-й
кластер другого файла 16 EOF
2-й
(последний) кластер другого файла 17 18
4-й
кластер файла A.txt 18 20
5-й
кластер файла A.txt 19 BAD
Плохой
кластер 20 21
6-й
кластер файла A.txt 21 22
7-й
кластер файла A.txt 22 23
8-й
кластер файла A.txt 23 EOF
9-й
(последний) кластер файла A.txt 24 0
Пустой 25 0
Пустой 26 0
Пустой
Рисунок
6 Пример цепочки кластеров для файла
A.txt
Из приведенного на рисунке 6 фрагмента FAT следует:
Файл занимает цепочку из девяти кластеров: 12–13–14–17–18–20–21–22–23. Каждый элемент указывает на следующий элемент цепочки (содержит номер следующего кластера) - значение элемента № 13 равно 14, значение элемента 14 равно 17 и т.д. Последний элемент содержит специальный код EOF (FF8h) - конец файла.
Еще одна цепочка из двух кластеров начинается с кластера № 15 и кончается кластером № 16. Чтобы узнать, какому файлу (или каталогу) распределены эти кластеры, нужно отыскать в каком-либо каталоге диска дескриптор файла, содержащий ссылку на начальный кластер № 15.
Кластер № 19 помечен, как «плохой» (BAD - FF7) и не входит ни в одну из цепочек. При поиске свободных кластеров для записи нового файла этот кластер будет игнорироваться.
Кластеры № 10, 11, 24, 25, 26 пусты (точнее - объявлены таковыми). Они доступны для распределения под вновь записываемые файлы.
Каждая цепочка кластеров, выделенных системой для одного файла (подкаталога), упорядочена в порядке возрастания их номеров.