Корневой каталог диска имеет формат файловой системы fat что делать
Обновлено: 21.11.2024
В этой статье объясняются различия между таблицей размещения файлов (FAT), высокопроизводительной файловой системой (HPFS) и файловой системой NT (NTFS) в Windows NT, а также их преимущества и недостатки.
Применимо к: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 100108
HPFS поддерживается только в Windows NT версий 3.1, 3.5 и 3.51. Windows NT 4.0 не поддерживает и не может получить доступ к разделам HPFS. Кроме того, поддержка файловой системы FAT32 стала доступна в Windows 98/Windows 95 OSR2 и Windows 2000.
Обзор FAT
FAT — самая простая из файловых систем, поддерживаемых Windows NT. Файловая система FAT характеризуется таблицей размещения файлов (FAT), которая на самом деле является таблицей, находящейся в самом «верху» тома. Для защиты тома хранятся две копии FAT на случай повреждения одной из них. Кроме того, таблицы FAT и корневой каталог должны храниться в фиксированном месте, чтобы загрузочные файлы системы могли быть правильно расположены.
Диск, отформатированный с помощью FAT, размещается в кластерах, размер которых определяется размером тома. При создании файла в каталоге создается запись и устанавливается первый номер кластера, содержащего данные. Эта запись в таблице FAT либо указывает, что это последний кластер файла, либо указывает на следующий кластер.
Обновление таблицы FAT очень важно и требует много времени. Если таблица FAT регулярно не обновляется, это может привести к потере данных. Это отнимает много времени, поскольку головки чтения диска должны перемещаться на нулевую логическую дорожку диска каждый раз при обновлении таблицы FAT.
Структура каталогов FAT не организована, и файлы размещаются в первом открытом месте на диске. Кроме того, FAT поддерживает только атрибуты файлов только для чтения, скрытые, системные и архивные.
Соглашение об именах FAT
FAT использует традиционное соглашение об именах файлов 8.3, и все имена файлов должны создаваться с использованием набора символов ASCII. Имя файла или каталога может содержать до восьми символов, затем разделитель точки (.) и расширение до трех символов. Имя должно начинаться с буквы или цифры и может содержать любые символы, кроме следующих:
При использовании любого из этих символов могут возникнуть непредвиденные результаты. Имя не может содержать пробелов.
Следующие имена зарезервированы:
CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL
Все символы будут преобразованы в верхний регистр.
Преимущества FAT
Невозможно выполнить восстановление в Windows NT ни в одной из поддерживаемых файловых систем. Утилиты восстановления пытаются получить прямой доступ к оборудованию, что невозможно сделать в Windows NT. Однако, если файл находился в разделе FAT и система перезагружается в MS-DOS, файл можно восстановить. Файловая система FAT лучше всего подходит для дисков и/или разделов размером менее 200 МБ, потому что FAT начинается с очень небольших накладных расходов. Для дальнейшего обсуждения преимуществ FAT см. следующее:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Недостатки FAT
При использовании дисков или разделов размером более 200 МБ желательно не использовать файловую систему FAT. Это связано с тем, что по мере увеличения размера тома производительность с FAT быстро снижается. Невозможно установить разрешения для файлов, которые являются разделами FAT.
Размер разделов FAT ограничен 4 гигабайтами (ГБ) в Windows NT и 2 ГБ в MS-DOS.
Для дальнейшего обсуждения других недостатков FAT см. следующее:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Microsoft Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Обзор HPFS
Файловая система HPFS была впервые представлена в OS/2 1.2, чтобы обеспечить более широкий доступ к большим жестким дискам, которые тогда появлялись на рынке. Кроме того, для новой файловой системы было необходимо расширить систему именования, организацию и безопасность для растущих потребностей рынка сетевых серверов. HPFS поддерживает организацию каталогов FAT, но добавляет автоматическую сортировку каталога на основе имен файлов. Имена файлов расширены до 254 двухбайтовых символов.HPFS также позволяет составлять файл из «данных» и специальных атрибутов, чтобы обеспечить повышенную гибкость с точки зрения поддержки других соглашений об именах и безопасности. Кроме того, единица распределения изменена с кластеров на физические секторы (512 байт), что сокращает потерянное дисковое пространство.
В HPFS записи каталога содержат больше информации, чем в FAT. Помимо файла атрибутов, он включает информацию о дате и времени модификации, создания и доступа. Вместо того, чтобы указывать на первый кластер файла, записи каталога в HPFS указывают на FNODE. FNODE может содержать данные файла или указатели, которые могут указывать на данные файла или на другие структуры, которые в конечном итоге будут указывать на данные файла.
HPFS пытается разместить как можно больше файлов в смежных секторах. Это сделано для увеличения скорости при последовательной обработке файла.
Кроме того, HPFS включает несколько уникальных специальных объектов данных:
Суперблок
Суперблок расположен в логическом секторе 16 и содержит указатель на FNODE корневого каталога. Одна из самых больших опасностей использования HPFS заключается в том, что если суперблок потерян или поврежден из-за поврежденного сектора, то же самое произойдет и с содержимым раздела, даже если остальная часть диска в порядке. Восстановить данные на диске можно было бы, скопировав все на другой диск с исправным сектором 16 и перестроив суперблок. Однако это очень сложная задача.
Запасной блок
Запасной блок расположен в логическом секторе 17 и содержит таблицу «горячих исправлений» и блок запасного каталога. В HPFS при обнаружении поврежденного сектора запись «горячих исправлений» используется для логического указания на существующий исправный сектор вместо поврежденного сектора. Этот метод обработки ошибок записи называется оперативным исправлением.
Оперативное исправление – это метод, при котором в случае возникновения ошибки из-за поврежденного сектора файловая система перемещает информацию в другой сектор и помечает исходный сектор как неисправный. Все это делается прозрачно для любых приложений, выполняющих дисковый ввод-вывод (то есть приложение никогда не узнает о каких-либо проблемах с жестким диском). Использование файловой системы, поддерживающей оперативное исправление, устранит сообщения об ошибках, такие как FAT «Abort, Retry or Fail?» сообщение об ошибке, возникающее при обнаружении поврежденного сектора.
Версия HPFS, входящая в состав Windows NT, не поддерживает оперативное исправление.
Преимущества HPFS
HPFS лучше всего подходит для дисков емкостью 200–400 МБ. Дополнительные сведения о преимуществах HPFS см. в следующих материалах:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Недостатки HPFS
Из-за накладных расходов, связанных с HPFS, это не очень эффективный выбор для тома менее 200 МБ. Кроме того, при использовании томов размером более 400 МБ производительность может снизиться. Вы не можете установить безопасность на HPFS под Windows NT.
HPFS поддерживается только в Windows NT версий 3.1, 3.5 и 3.51. Windows NT 4.0 не может получить доступ к разделам HPFS.
Дополнительные недостатки HPFS см. в следующем:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Обзор NTFS
С точки зрения пользователя, NTFS продолжает организовывать файлы в каталоги, которые, как и HPFS, сортируются. Однако, в отличие от FAT или HPFS, на диске нет «особых» объектов и нет зависимости от базового оборудования, например секторов по 512 байт. Кроме того, на диске нет специальных мест, таких как таблицы FAT или суперблоки HPFS.
Цели NTFS – обеспечить:
Надежность, особенно желательная для высокопроизводительных систем и файловых серверов
Платформа для дополнительных функций
Поддержка требований POSIX
Снятие ограничений файловых систем FAT и HPFS
Надежность
Чтобы обеспечить надежность NTFS, были рассмотрены три основные области: возможность восстановления, устранение фатальных сбоев отдельных секторов и оперативное исправление.
NTFS — это восстанавливаемая файловая система, поскольку она отслеживает транзакции в файловой системе. Когда CHKDSK выполняется в FAT или HPFS, проверяется непротиворечивость указателей в таблицах каталогов, выделений и файлов.В NTFS ведется журнал транзакций для этих компонентов, так что CHKDSK нужно только откатить транзакции до последней точки фиксации, чтобы восстановить согласованность в файловой системе.
В FAT или HPFS, если произойдет сбой сектора, в котором находится один из специальных объектов файловой системы, произойдет сбой одного сектора. NTFS избегает этого двумя способами: во-первых, не используя специальные объекты на диске и отслеживая и защищая все объекты, находящиеся на диске. Во-вторых, в NTFS хранится несколько копий (количество зависит от размера тома) основной таблицы файлов.
Подобно версиям HPFS для OS/2, NTFS поддерживает оперативное исправление.
Добавлена функциональность
Одной из основных целей разработки Windows NT на всех уровнях является предоставление платформы, которую можно добавлять и использовать, и NTFS не является исключением. NTFS предоставляет богатую и гибкую платформу для использования другими файловыми системами. Кроме того, NTFS полностью поддерживает модель безопасности Windows NT и поддерживает несколько потоков данных. Файл данных больше не является единым потоком данных. Наконец, в NTFS пользователь может добавлять в файл свои собственные определяемые пользователем атрибуты.
Поддержка POSIX
NTFS является наиболее совместимой с POSIX.1 из поддерживаемых файловых систем, поскольку она поддерживает следующие требования POSIX.1:
В POSIX README.TXT, Readme.txt и readme.txt — это разные файлы.
Дополнительная отметка времени:
Дополнительная отметка времени указывает время последнего доступа к файлу.
Жесткая ссылка — это когда два файла с разными именами, которые могут находиться в разных каталогах, указывают на одни и те же данные.
Снять ограничения
Во-первых, NTFS значительно увеличила размер файлов и томов, так что теперь они могут достигать 2^64 байт (16 эксабайт или 18 446 744 073 709 551 616 байт). NTFS также вернулась к концепции кластеров FAT, чтобы избежать проблемы HPFS с фиксированным размером сектора. Это было сделано потому, что Windows NT — переносная операционная система, и в какой-то момент могут встретиться различные дисковые технологии. Следовательно, 512 байт на сектор рассматривались как имеющие большую вероятность того, что они не всегда подходят для распределения. Это было достигнуто за счет возможности определения кластера как кратного размера естественного распределения аппаратного обеспечения. Наконец, в NTFS все имена файлов основаны на Unicode, а имена файлов 8.3 сохраняются вместе с длинными именами файлов.
Преимущества NTFS
NTFS лучше всего подходит для томов размером около 400 МБ и более. Это связано с тем, что производительность не снижается в NTFS, как в FAT, при больших размерах томов.
Возможность восстановления, предусмотренная в NTFS, такова, что пользователю никогда не придется запускать какую-либо утилиту восстановления диска в разделе NTFS. Дополнительные преимущества NTFS см. в следующем:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Недостатки NTFS
Не рекомендуется использовать NTFS на томе размером менее примерно 400 МБ из-за того, что NTFS занимает много места. Эти накладные расходы связаны с системными файлами NTFS, которые обычно занимают не менее 4 МБ дискового пространства в разделе размером 100 МБ.
В настоящее время в NTFS нет встроенного шифрования файлов. Таким образом, кто-то может загрузиться под MS-DOS или другой операционной системой и использовать низкоуровневую утилиту редактирования диска для просмотра данных, хранящихся на томе NTFS.
Невозможно отформатировать дискету с файловой системой NTFS; Windows NT форматирует все гибкие диски в файловой системе FAT, потому что служебные данные, связанные с NTFS, не помещаются на дискету.
Для дальнейшего обсуждения недостатков NTFS см. следующее:
Windows NT Server "Концепции и руководство по планированию", глава 5, раздел "Выбор файловой системы"
Комплект ресурсов Windows NT Workstation 4.0, глава 18, "Выбор файловой системы"
Комплект ресурсов Windows NT Server 4.0 "Руководство по ресурсам", глава 3, раздел "Какую файловую систему использовать на каких томах"
Соглашения об именах NTFS
Имена файлов и каталогов могут содержать до 255 символов, включая любые расширения. Имена сохраняют регистр, но не чувствительны к регистру. NTFS не различает имена файлов по регистру. Имена могут содержать любые символы, кроме следующих:
В настоящее время из командной строки можно создавать имена файлов длиной не более 253 символов.
Основные аппаратные ограничения могут налагать дополнительные ограничения на размер раздела в любой файловой системе. В частности, загрузочный раздел может иметь размер только 7,8 ГБ, а в таблице разделов есть ограничение в 2 ТБ.
Дополнительную информацию о поддерживаемых файловых системах для Windows NT см. в наборе ресурсов Windows NT.
Простая и распространенная файловая система
Присутствует во всех ОС Windows и на многих устройствах
FAT12: разработана в 1977 году (MS Disk BASIC)
FAT16: разработана в 1987 г. (MS-DOS 3.31)
FAT32: разработана в 1996 г. (Win95 OSR2)
Поддерживается несколько структур данных:
Кластер: основная единица хранения файлов
Каталог: список имени файла, начального кластера и длины
Таблица размещения файлов: содержит статус кластера и указатель на следующий кластер в цепочке
2. Загрузочный сектор, FAT, корневой каталог и файлы
занимает кластеры 2, 3 и 4.
Размер файла составляет 1400 байт, он занимает 1536 байт (3 кластера) на диске, а кластер 4 включает 136 байт свободного места.
занимает кластеры 5 и 6.
Размер файла составляет 980 байт, он занимает 1024 байта (2 кластера) и имеет 44 байта свободного места в кластере 6.
Кластеры 7, 8 и 9 не распределены.
3. Структура файловой системы FAT
4. Кластеры и секторы FAT
Кластер – это группа последовательных секторов
Сектор обычно составляет 512 Б
Кластер состоит из 1, 2, 4, 8, 16, 32 или 64 секторов (т. е. может варьироваться от 512 Б до 32 КБ)
У каждого кластера есть адрес
Первый кластер имеет адрес 2
То есть адресного кластера 0 или 1 не существует
5. FAT, Slack и нераспределенное пространство
Выделяются кластеры 3, 6 и 8; кластеры 2, 4, 5, 7 и 9 не распределены
Кластеры 6 и 8 заполнены лишь частично; неиспользуемая часть — свободное пространство
логический размер – 1034 байта
физический размер – 2 048 байт (свободный объем = 1 014 Б)
логический размер – 3 973 байта
физический размер — 4 096 байт (свободный объем = 123 Б)
6. Где находится первый кластер FAT?
Первый кластер — кластер 2
Фактическое расположение кластера 2 отличается в FAT12/16 и FAT32
Предположим, что размер кластера = 2048 Б (4 сектора)
Предположим, что область данных начинается с сектора 1224
Первые сектора области данных зарезервированы для корневого каталога
Размер устанавливается во время загрузки
Кластер 2 начинается после корневого каталога
Корневой каталог имеет размер 32 сектора
Занимает сектора 1224–1255
Пример кластера FAT12/16:
Кластер 2 начинается с сектора 1256
Кластер 3 начинается с сектора 1260
Кластер 4 – 1 264.
7. Загрузочный сектор
Первый сектор системы FAT — это загрузочный сектор
Содержит большую часть информации для определения
тип файловой системы и
размер и расположение структур данных
Формат загрузочного сектора отличается для FAT12/16 и FAT32
8. Загрузочный сектор FAT, байты 0–35 (FAT12/16 и FAT32)
9. Загрузочный сектор FAT (FAT12/16)
10. Загрузочный сектор FAT12
11. Интерпретация загрузочного сектора
12. Емкость этого канала
FAT12 выделяет 12 бит на запись FAT
Ограничение адресации до 4096 (212) кластеров
Это (съемное) устройство настроено так, что:
1 кластер = 1 сектор
1 сектор = 512 Б
Емкость этой таблицы FAT12 ограничена 2 097 152 байтами (2 МБ)
То есть 4 КБ кластеров по 512 Б каждый
Это устройство имеет 2880 секторов
Кластеры 512 Б дают емкость устройства 1,44 МБ
Соответствует тому, что мы ожидаем от дискеты
13. Секторные задания
Загрузочный сектор — это 1 сектор (0 x 200 байт)
Есть две FAT, каждая по 9 секторов (0x1200 байт)
Корневой каталог может содержать 224 записи по 32 байта каждая (7168 или 0x1c00 байт; 14 секторов)
14. Корневой каталог
Содержит имена файлов и метаданные
Находится сразу после файлов FAT в FAT12/16 или в месте, указанном в загрузочном секторе FAT32
Поддерживает имена 8.3 или длинные имена файлов
Новые записи добавляются в каталог с использованием стратегии «первая доступная» или «следующая доступная»
Первая доступная: находит первую незанятую запись в каталоге (например, Win98)
Следующая доступная: находит следующую доступную запись из последней выделенной записи; в конце цепочки каталогов начать заново с начала (например, WinXP)
15. Записи корневого каталога
Корневой каталог — это набор записей, описывающих файлы
Каждая запись имеет размер 32 байта и содержит
один короткий (8.3) имя файла (SFN),
и другие метаданные.
Дополнительные записи размером 32 Б содержат длинное имя файла (LFN)
16. Формат записи корневого каталога (SFN)
17. Пример корневого каталога
18. Пример записи корневого каталога
19. Другой образец записи корневого каталога
20. Сравнение FAT
21. Таблица размещения файлов FAT12
Записи таблицы FAT упаковываются так, что две записи кластера занимают три байта со следующим общим форматом:
xyz — это запись с одним указателем и
XYZ — это вторая запись указателя.
Например, байты 242–244:
см. кластеры 0x02d (45) и 0x02e (46)
Первичная FAT начинается с сектора 1, байт 0x200 (показан здесь)
Начальный кластер в каталоге также является указателем на таблицы FAT, ссылающиеся на следующий кластер в файле
Основной сектор FAT 1:
22. Интерпретация FAT12
Предположим, файл имеет начальный кластер 0x49 (73).
Поскольку FAT начинается с адреса 0x0200, запись FAT для этого файла имеет адрес 0x026e
1-й кластер — 0x49 (73). Запись FAT начинается со старшего полубайта 0x026e (110) = 0x04a (74)
2-й кластер — 0x4a (74). Запись FAT начинается с младшего полубайта 0x0270 (112) = 0x04b (75)
3-й кластер — 0x04b (75). Запись FAT начинается со старшего полубайта 0x0271 (113) = 0x04c (76)
4-й кластер — 0x04c (76). Запись FAT начинается с младшего полубайта 0x0273 (115) = 0x04d (77)
5-й кластер — 0x04d (77). Запись FAT начинается со старшего полубайта 0x0274 (116) = 0xfff (конец списка)
Физический размер этого файла составляет пять кластеров (2560 байт) и занимает на носителе кластеры 73, 74, 75, 76 и 77. (Это просто совпадение, что кластеры смежные.)
23. Содержимое файловой системы FAT12
24. Форматирование дискеты
Форматирование инициализирует FAT (0x00) и корневой каталог (0xF6)
На дискете форматирование перезапишет область данных с помощью 0xF6
Данные НЕ удаляются при использовании быстрого форматирования на дискете или любого другого формата на жестком диске
25. Отформатированные структуры данных гибких дисков
Структуры данных дискет перед форматированием, неинициализированные:
Структуры данных дискеты после форматирования, инициализированный корневой каталог:
26. Размещение нового файла
Найти первую свободную запись в каталоге и написать имя файла
Поиск нераспределенного кластера в FAT; установите значение EOF (0xFFF)
Запишите адрес этого кластера в запись каталога
Если нужен другой кластер,
найти незанятую запись FAT,
сбросьте это значение до EOF и
сбросить предыдущий указатель FAT на этот новый кластер
При необходимости повторите этот шаг
27. Удаление файла
Найти запись в каталоге для удаляемого файла
Используя начальное значение кластера в корневом каталоге, установите для всех записей FAT в цепочке кластеров файла нулевое значение
Освободить запись каталога, перезаписав первый байт записи на 0xE5 (å)
Традиционными типами файловых систем DOS являются FAT12 и FAT16. Здесь FAT означает таблицу размещения файлов: диск разделен на кластеры , единицы, используемые для размещения файлов, а FAT описывает, какие кластеры используются какими файлами.
Давайте подробно опишем файловую систему FAT.Тип FAT12/16 важен не только из-за традиционного использования, но и потому, что он полезен для обмена данными между различными операционными системами, а также потому, что это тип файловой системы, используемый всеми видами устройств, например цифровыми камерами. р>
Сначала загрузочный сектор (по относительному адресу 0) и, возможно, что-то еще. Вместе это Зарезервированные секторы. Обычно загрузочный сектор является единственным зарезервированным сектором.
Затем FAT (после зарезервированных секторов; количество зарезервированных секторов указано в загрузочном секторе, байты 14-15; длина сектора находится в загрузочном секторе, байты 11-12).
Затем корневой каталог (после FAT; количество FAT указано в загрузочном секторе, байт 16; каждая FAT имеет количество секторов, указанное в загрузочном секторе, байты 22–23).
Наконец, область данных (после корневого каталога; количество записей корневого каталога указано в загрузочном секторе, байты 17–18, и каждая запись каталога занимает 32 байта; пространство округляется до целых секторов). р>
Первый сектор (512 байт) файловой системы FAT – это загрузочный сектор. В Unix-подобной терминологии это будет называться суперблоком. Он содержит некоторую общую информацию.
Сначала явный пример (загрузочный сектор загрузочной дискеты DRDOS). (Полный сектор см. здесь. А также пример MSDOS)
2-байтовые числа хранятся с обратным порядком байтов (сначала младший байт).
Здесь версия FAT12, которая также является общей частью загрузочных секторов FAT12, FAT16 и FAT32. Подробнее см. ниже.
Подпись находится по смещению 510–511. Это будет конец сектора только в том случае, если размер сектора равен 512.
Байт дескриптора мультимедиа
IBM определила байт дескриптора носителя как 11111red, где r — съемный, e — восемь секторов на дорожке, d — двусторонний.
Размер кластера
Количество секторов по умолчанию на кластер для гибких дисков (с FAT12) равно По умолчанию количество секторов на кластер для фиксированных дисков (с FAT12 ниже 16 МБ, FAT16 выше): Обычно люди имеют файловые системы со средним размером файла несколько КБ. При размере кластера 64 КиБ или более объем незанятого пространства (неиспользуемого пространства) может легко превысить половину общего пространства. FAT32 позволяет использовать более крупные файловые системы с небольшим размером кластера:
FAT16
FAT16 использует указанный выше блок параметров BIOS с некоторыми расширениями:
FAT32
FAT32 использует расширенный блок параметров BIOS: старые 2-байтовые поля «общее количество секторов» и «количество секторов в FAT» теперь равны нулю; эта информация теперь находится в новых 4-байтовых полях.
Важным улучшением является поле "Первый кластер корневого каталога". Раньше корневой каталог не был частью области данных, находился в известном месте с известным размером и, следовательно, не мог увеличиваться. Теперь корневой каталог находится где-то в области данных.
Диск разделен на кластеры. Количество секторов на кластер указано в байте 13 загрузочного сектора.
Таблица размещения файлов имеет одну запись для каждого кластера. Эта запись использует 12, 16 или 28 бит для FAT12, FAT16 и FAT32.
Первые две записи FAT
(Исторически это описание имеет обратное значение: в DOS 1.0 не было блока параметров BIOS, а различие между односторонними и двусторонними 5,25-дюймовыми дискетами 360 КБ указывалось первым байтом в FAT. DOS 2.0 представила BPB с байтом дескриптора носителя.)
FAT12
Поскольку 12 бит не являются целым числом байтов, мы должны указать, как они расположены. Две записи FAT12 хранятся в трех байтах; если эти байты равны uv,wx,yz, то записи будут xuv и yzw.
DOS 1.0 и 2.0 использовали FAT12. Максимально возможный размер файловой системы FAT12 (тома) составлял 8 МБ (4086 кластеров не более 4 секторов в каждом).
FAT16
Теперь максимальный размер тома составлял 32 МБ, в основном из-за того, что в DOS 3.0 использовались 16-битные номера секторов. Это было исправлено в DOS 4.0, где используются 32-битные номера секторов. Теперь максимально возможный размер тома FAT16 составляет 2 ГБ (65 526 кластеров по 64 сектора каждый).
FAT32
FAT32 появилась в Windows 95 OSR 2. Она не поддерживается в Windows NT. Все очень похоже на FAT16, только записи FAT теперь 32-битные, из которых верхние 4 бита зарезервированы. Нижние 28 бит имеют значения, аналогичные значениям для FAT12, FAT16. Для FAT32: используемый размер кластера: 4096–32768 байт.
Операционные системы Microsoft используют следующее правило, чтобы различать FAT12, FAT16 и FAT32. Во-первых, вычислите количество кластеров в области данных (взяв общее количество секторов, вычтя пространство для зарезервированных секторов, файлов FAT и корневого каталога и разделив, округлив в меньшую сторону, на количество секторов в кластере). Если результат меньше 4085, значит FAT12. В противном случае, если он меньше 65525, у нас FAT16. В противном случае FAT32.
Максимальный размер файла в файловой системе FAT32 на один байт меньше 4 ГиБ (4 294 967 295 байт).
Операционные системы Microsoft используют fff, ffff, xffffffff в качестве маркеров конца цепочки кластеров, но различные общие утилиты могут использовать разные значения. Linux всегда использовал ff8, fff8, но теперь выяснилось, что некоторые MP3-плееры не работают, если не используется fff и т. д. Начиная с версии 2.5.40 это также используется в Linux.
Пример (6 записей на одной дискете MSDOS):
Мы видим, что пятая запись в приведенном выше примере — это метка тома, а остальные записи — это настоящие файлы.
Бит «архив» устанавливается при создании или изменении файла. Очищается утилитами резервного копирования. Это позволяет делать добавочные резервные копии.
В качестве специального кладжа, позволяющего восстановить файлы, которые были удалены по ошибке, команда DEL заменит первый байт имени на 0xe5, что означает «удалено». Как особый кладж, первый байт 0x05 в записи каталога означает, что настоящее имя начинается с 0xe5.
Первый байт имени не должен быть равен 0x20 (пробел). Короткие имена или расширения дополняются пробелами. Специальные символы ASCII 0x22 ("), 0x2a (*), 0x2b (+), 0x2c (,), 0x2e (.), 0x2f (/), 0x3a (:), 0x3b (;), 0x3c ( ), 0x3f (? ), 0x5b ([), 0x5c (\), 0x5d (]), 0x7c (|) не допускаются.
Первый байт 0 в записи каталога означает, что каталог заканчивается здесь.
Подкаталоги начинаются с записей для . а также . но в корневом каталоге их нет.
В Windows 95 появился вариант: VFAT. VFAT (Virtual FAT) — это FAT вместе с длинными именами файлов (LFN), длина которых может достигать 255 байт. Реализация - уродливый хак. Эти длинные имена файлов хранятся в специальных записях каталога. Специальная запись выглядит следующим образом: Эти специальные записи не должны сбивать с толку старые программы, так как они получают комбинацию атрибутов 0xf (только для чтения / скрытый / система / метка тома), которая должна гарантировать, что все старые программы будут их игнорировать.
Длинное имя хранится в специальных записях, начиная с конца. Символы Unicode, конечно, хранятся с прямым порядком байтов. Порядковые номера идут по возрастанию, начиная с 1.
Старые программы могут изменять каталоги таким образом, чтобы отделить специальные записи от обычных. Чтобы защититься от этого, специальные записи имеют в байте 13 контрольную сумму короткого имени: Дополнительная проверка задается полем порядкового номера. Он нумерует специальные записи, принадлежащие одному LFN 1, 2, . где для последней записи установлен бит 6.
Короткое имя получается из длинного следующим образом: Расширение — это расширение длинного имени, усеченное до длины не более трех. Первые шесть байтов короткого имени равны первым шести непробельным байтам длинного имени, но байты +,;=[], которые не разрешены в DOS, заменяются символом подчеркивания. Нижний регистр преобразуется в верхний регистр. Последние два (или больше, при необходимости до семи) байтов становятся ~1 или, если они уже существуют, ~2 и т. д., вплоть до ~999999.
Я знаю, что задания могут быть сложными, и я знаю, что вы можете подумать: "Вы поняли", пока не сядете за них. Вот почему я прошу вас сделать это. Я хочу, чтобы вы продемонстрировали мастерство. Цитируя профессора Б. Ли, «знать недостаточно, мы должны применять. Желания недостаточно, мы должны делать». Это системный курс. Чтобы преуспеть, вам нужно продемонстрировать, что вы достаточно хорошо понимаете системы, чтобы создавать их.
Крайний срок зачисления для студентов бакалавриата - в следующую среду. Мы постараемся получить промежуточные оценки до этого времени, чтобы у вас была надежная оценка вашей оценки на случай, если вы захотите отказаться от участия.
Подробнее о FAT
Сегодня мы закончим разговор о структуре FAT, а затем перейдем к последней части FAT — элементам каталога.
Давайте посмотрим на образ диска adams.dd из лекции 2. Во-первых, обратите внимание, что это не образ всего диска:
Хотя моя локальная версия файла дает подсказку:
Похоже, кто-то извлек только раздел FAT16. Итак, давайте посмотрим с помощью fsstat:
Большая часть этой информации поступает из загрузочного сектора, как мы описали в прошлой лекции. Однако есть несколько вещей, которые не соответствуют действительности, а именно метка тома (корневой каталог) , ИНФОРМАЦИЯ О МЕТАДАННЫХ (ну, не совсем так) и СОДЕРЖАНИЕ FAT .
Давайте взглянем на FAT1 (первая FAT в этой файловой системе FAT16), которая начинается с сектора 1 и проходит через сектор 20. Я собираюсь использовать dd и передать его в шестнадцатеричный дамп, чтобы смещения были от начала жир. Также обратите внимание, что я собираюсь опустить аргумент -v, чтобы идентичные строки в шестнадцатеричном дампе были сжаты:
Значок * означает, что каждая строка, следующая за предыдущей, имеет одинаковое значение (в данном случае все 00).
Давайте разберем эти первые несколько строк, а затем изучим вывод fsstat, чтобы увидеть, как он их представляет.
Во-первых, помните, что записи в FAT расположены последовательно, 16 бит на кластер. Таким образом, первые две записи — это f0 ff и ff ff . Но они не относятся к кластеру, так как кластеры начинаются с 2! (Спасибо, Microsoft!). Они означают разные вещи в зависимости от ОС.Как правило, первое — это копия поля типа носителя (он же FAT ID, обычно F0, за которым следует байт из всех единиц FF), а второе указывает на «грязный статус» файловой системы (другими словами, был ли диск извлечен чисто?).
Запись для кластера 2 начинается со смещения 0x4 (и это, как правило, верно для FAT16: вы можете найти запись в FAT для кластера N по смещению N x 2 от начала FAT. Здесь ее значение равно 00 00). , что означает, что кластер не распределен: в нем не хранятся файловые данные.
Следующий кластер, 3, представлен записью по адресу 0x6, и его значение равно ff ff , что указывает на то, что это последний кластер во всем, что он представляет. Ничто в FAT не говорит вам, является ли кластер первым (или единственным) кластером файла: эта информация находится в записях каталога, к которым мы вернемся чуть позже. Записи FAT похожи на записи в связанном списке, но «голова» этого списка находится в записи каталога.
Давайте сделаем паузу и посмотрим, как fsstat представил это распределение в FAT CONTENTS:
Что здесь происходит? Sleuth Kit в основном использует сектора, а не кластеры, когда ссылается на места на диске. Таким образом, это говорит нам о том, что есть что-то, что проходит от сектора 75 до сектора 76 (2 сектора), а затем заканчивается. Соответствует ли это FAT?
Ну, согласно fsstat, область кластера начинается с сектора 73. И кластеры в этой FAT составляют 1024 байта (два сектора). Таким образом, кластер 2 — это сектора 73 и 74, а кластер 3 — сектора 75 и 76, как показывает fsstat.
Пойдем другим путем. fsstat перечисляет следующие выделенные сектора как:
Каким кластерам это соответствует? Итак, первый сектор — 3743. Это 3670-й сектор области кластера. Поскольку в этой файловой системе кластеры имеют длину два сектора, это 1835-й кластер. Но нумерация кластеров начинается с 2, так что на самом деле это кластер 1837. Кластер 1837 будет располагаться по смещению 1837 x 2 = 3674 от начала FAT, то есть 0xe5a. Что находится в шестнадцатеричном дампе по этому смещению?
2e 07 . Если мы интерпретируем это как значение с прямым порядком байтов, что это будет? 1838 — следующий кластер! Что там? 2ф 07 (1839). И так далее. Этот ряд кластеров на самом деле состоит из 2525 кластеров, поэтому мы не будем делать это здесь все, но, надеюсь, вы поняли идею.
Записи каталога
Пришло время последней части головоломки. Как хранить метаданные файлов и каталогов в файловой системе FAT и как сопоставлять файлы с кластерами, в которых хранится их содержимое? FAT использует 32-байтовую структуру, называемую элементом каталога, для обработки этих задач. Записи каталога хранятся в области кластера точно так же, как и файлы.
Содержимое (файлы и каталоги) каталога (например, C:\MARC\ ) представлено набором записей каталога, хранящихся в кластере (или нескольких кластерах, как файл с несколькими кластерами). Какой кластер? Запись каталога прилагаемого каталога скажет вам. Где находится корневой каталог? В FAT16 его расположение жестко закодировано сразу после FAT, в начале области данных (но перед первым кластером). Его размер можно рассчитать, проверив максимальное количество записей (указано в загрузочном секторе FAT, обычно 512) и умножив его на 32 (байт на запись каталога). Кластер 2 следует сразу на диске. Для ясности: в FAT16 корневой каталог не является частью области кластера! (В FAT32 это так, но мы будем игнорировать в основном игнорирование FAT32, так как это создает дополнительные сложности.)
Записи каталога расположены следующим образом:
0x0 (11 B): 8.3 имя файла в ASCII; первый байт будет 0x00 или 0xe5, если он не распределен; 0xe5 означает удаление, а 0x00 (обычно) означает, что более поздняя запись в этой последовательности записей каталога не выделяется
0xB (1 B): атрибуты, объединенные по ИЛИ
- 0x01: только чтение
- 0x02: скрыто
- 0x04: система
- 0x08: метка тома
- 0x10: каталог
- 0x20: архив
(Это специальная запись с «длинным именем файла», а не запись каталога, если ее атрибуты равны 0x0f. Подробнее об этом позже.)
0xC (1 Б): зарезервировано
0xD (5 Б): дата/время создания в странном формате FAT
0x12 (2B): дата обращения
0x14 (2B): старшие байты первого адреса кластера (всегда 0 в FAT 16, используется только в FAT32)
0x16 (4B): запись даты/времени
0x1A (2B): младшие байты первого адреса кластера
0x1C (4B): размер файла (0 для каталогов)
Я оставлю мелкие детали синтаксического анализа формата даты/времени FAT Carrier: прочтите текст или соответствующую статью в Википедии, если и когда они вам понадобятся.
Давайте рассмотрим пример. Записи корневого каталога для adams.dd начинаются с 41 сектора образа, так что давайте посмотрим:
Каждая запись занимает 32 байта (две строки этого шестнадцатеричного дампа). Какой тип первой записи? Глядя на смещение 0x0b, мы видим значение 28 , что означает, что эта запись каталога является «меткой тома» — в частности, «ADAMS».
Перейдем к следующему. 0f : «длинное имя файла» (LFN).Мы вернемся к этому (обещаю!) в ближайшее время.
Далее, 10 : каталог! Два байта по смещению 0x1a (от начала этой записи) говорят нам, в каком кластере хранится каталог. 03 00 означает, что записи каталога IMAGES хранятся в кластере 3 этой файловой системы. Позвонить в колокольчик?
Что вообще находится в этом месте? Кластер 3 - это ((3 - 2) * 2) + 73 сектора после начала файловой системы, в секторе 75:
Первый элемент — это каталог (опять же, со смещением 0xb в записи, значение 10) с именем «.», что является сокращением от «текущий каталог». Он находится в кластере 03 00 — вот здесь.
Далее идет запись для каталога с именем «..», который, как известно знатокам командной строки, означает «включающий каталог», другими словами, обратную ссылку. Поскольку объемлющий каталог является корневым каталогом, который не находится в конкретном кластере в FAT16, значение маркера 00 00 .
Наконец, есть запись об удаленном файле, который мы можем идентифицировать по начальному значению e5 в его имени. Раньше он располагался в кластере 04 00 — кластер 4, но сейчас его нет. Или это? Подумайте.
В любом случае, вернемся к записям корневого каталога:
Далее еще один LFN.
Наконец (!!), файл с именем DESIGNS.DOC , хранящийся в кластере 2d 07 , то есть в кластере 1837. Позвонить в колокольчик ранее? Мы знаем (из записи каталога), что он начинается с кластера 1837, и мы знаем из FAT, что он работает непрерывно для кластеров 2525. Точно ли 2525 * 1024 (размер кластера) = 2 585 600 байт? Нет, его фактический размер хранится в последних четырех байтах записи: 00 72 27 00 -> 2 585 088, что соответствует кластеру с 512 байтами (это «свободное пространство»).
Итак, теперь мы в основном проанализировали все записи каталога на этом диске. Давайте совершим небольшой экскурс в LFN, а затем попробуем найти удаленный файл.
Длинные имена файлов
Записи LFN, помеченные значением 0f в атрибутах, идут перед тем файлом, к которому они относятся; это обратно совместимый способ давать более длинные имена, чем в старой системе DOS 8.3. Старые ОС игнорируют записи каталогов с этим несовместимым набором флагов, поэтому Microsoft разработала его таким образом.
Записи LFN переназначают большинство полей в записи каталога для хранения символов имени файла.
0x0 (1B): порядковый номер, начиная с 1, а не с 0; последний объединен с помощью операции ИЛИ с 0x40
0x1 (10 B): 5 символов UCS-2 (UCS-2 — это подмножество UTF-16, которое может обрабатывать кодовые точки только в базовой многоязычной плоскости)
0xB (1B): атрибуты
0xD (1B): контрольная сумма
0xE (12B): 6 символов UCS-2
0x1A (1B): зарезервировано
0x1B (4B): 2 символа UCS-2
Каждый LFN может содержать 13 символов. Если для имени файла требуется более 13 символов, то записи в каталоге будет предшествовать более одного LFN. Они идут в обратном порядке, сначала идут последние. Порядковый номер последнего объединяется по ИЛИ со значением 0x40. Например, если есть файл с именем «Файл с очень длинным именем файла.ext», для которого требуется 3 записи LFN, порядковые номера и записи каталога LFN будут такими:
затем обычная запись в каталоге для файла.
Я пропущу вычисление контрольной суммы; еще раз, см. Carrier или другие ресурсы, если вам нужны подробности.
Восстановление удаленного файла
Ранее мы обнаружили запись, соответствующую удаленному файлу:
Файл был назван «?MG_3027.JPG» — обратите внимание, что мы теряем первый символ имени файла, если он удаляется. Раньше он хранился в кластере 4.
Sleuthkit также видит этот файл ( -r рекурсивно показывает все):
или если мы хотим идти по записи:
Откуда берется этот адрес метаданных 549? Это явно не номер кластера или что-то в этом роде, верно?
Во многих файловых системах есть концепция «инодов», представляющих собой уникальные адреса метаданных, общие для файлов и каталогов. Не жирный. Поэтому вместо этого TSK генерирует уникальные адреса метаданных для FAT. Записи корневого каталога присваивается значение 2. Каждый сектор диска, начиная с начала области данных, может гипотетически содержать 16 записей, поэтому мы нумеруем их, начиная с 3. Это означает, что, скажем, 512 записей в корневой каталог имеют номера 3–514. Тогда будут пробелы, так как большинство секторов на самом деле не содержат записей каталога.
Вспомните, что область нашего кластера начиналась с сектора 73, а записи каталога, которые мы извлекли для этого каталога «IMAGES», находились в секторе 75. Если бы сектора 73 и 74 были заполнены записями каталога, их было бы 32 (по 16 на сектор). ) в каждом из них. А наш удаленный файл — это 3-я запись в следующем секторе.
514 + 32 + 3 = 549, адрес метаданных. Бум.
Хорошо, сколько времени хранился этот файл до того, как он был удален? Глядя на последние четыре байта записи каталога 8c a0 1c 00, видно, что ее длина составляет 1 876 108 байт, что потребовало бы для хранения 1833 кластеров по 1 КБ.
Интересно, что именно столько кластеров в настоящее время помечено как нераспределенное между его старым начальным кластером (4) и следующим кластером, выделенным на диске (1837). Интересно, выглядят ли эти байты как JPEG? Помните, что кластер 4 начинается через два кластера после начала области кластера, то есть сектора 73 + 4 = 77.
Эти заголовки кажутся вам знакомыми?
Это (почти) то, что делает icat (помните это?) из второй лекции. icat немного умнее. Например, он урежет файл до размера, указанного в записи каталога.
Мы перейдем к следующему уроку и поговорим о том, что и как можно извлечь из файловой системы FAT16 с помощью этого и других методов. Затем мы запустим NTFS, но мы не доберемся до большинства деталей NTFS до перерыва.
Авторское право © 2019 Марк Либераторе | Работает на Pelican – тема с Pure Theme | Другие заслуги
Читайте также: