ext2 пришла на замену более древней ФС ext . Благодаря своей сокорости она может служить эталоном в тестах производительности файловых систем, но скорость была достигнута благодаря отказу от технологии журналирования, что делает ее неплохой системой для SSD накопителей, т.к. отсуствие журналирования является в данном случае преимуществом.
- 1 Физическая организация файловой системы
- 1.1 Суперблок
- 1.2 BGD
- 1.3 Индексные дескрипторы
- 1.3.1 Поиск местонахождения дескриптора
- 1.3.2 Чтение информации из дескриптора
- 1.3.2.1 Тип файла и права доступа
Физическая организация файловой системы [ ]
Файловую систему можно представить в виде следующей структурной схемы:
- Суперблок (Superblock)
- Описание группы блоков (Block Group Descriptors)
- Битовая карта блоков (Blocks Bitmap)
- Битовая карта индексных дескрипторов (Inode Bitmap)
- Таблица индексных дескрипторов (Inode Table)
- Данные
Все пространство раздела диска разбивается на так называемые блоки, имеющие порядковые номера. Блоки имеют фиксированный размер и кратны размеру сектора (1024,2048,4096. ). Для уменьшения количества перемещений головки жесткого диска блоки объединяют в группы блоков.
Одним из базовых понятий ext2 является понятие индексного дескриптора (inode, инод, айнод). Это специальная структура, содержащая в себе информацию об физическом расположении файла/директории/ссылки и т.п. и его атрибутах.
Суперблок [ ]
Суперблок — одно из базовых понятий в ФС ext2. Суперблок содержит в себе общую информацию о файловой системе и находится в 1 килобайте от начала раздела. От цельности суперблока сильно зависит работоспособность ФС, и многие ОС создают его резервные копии на случай повреждения. Блок в виде структуры на языке программирования С представлен ниже:
struct ext2_super_block < __u32 s_inodes_count; /* Количество индексных дескрипторов в ФС */ __u32 s_blocks_count; /* Количество блоков в ФС */ __u32 s_r_blocks_count; /* Количество зарезервированых блоков */ __u32 s_free_blocks_count; /* Количество свободных блоков */ __u32 s_free_inodes_count; /* Количество свободных индексных дескрипторов */ __u32 s_first_data_block; /* Номер данного блока */ __u32 s_log_block_size; /* log2(размер блока)-10 */ __s32 s_log_frag_size; /* log2(размер фрагмента)-10 */ __u32 s_blocks_per_group; /* # Кол-во блоков в группе */ __u32 s_frags_per_group; /* # Кол-во фрагментов в группе */ __u32 s_inodes_per_group; /* # Кол-во индексных дескрипторов в группе */ __u32 s_mtime; /* Время последнего монтирования в POSIX времени */ __u32 s_wtime; /* Время последней записи в POSIX времени */ __u16 s_mnt_count; __s16 s_max_mnt_count; __u16 s_errors; /* Код ошибки(см.ниже) */ __u16 s_pad; __u32 s_lastcheck; /* POSIX время последней проверки */ __u32 s_checkinterval; /* POSIX время между принудительными проверками */ __u32 s_creator_os; /* ID ОС (см. ниже) */ __u32 s_rev_level; /* Версия */ __u16 s_def_resuid; /* UserID, могущий использовать зар. блоки */ __u16 s_def_resgid; /* GroupID, могущий использовать зар. блоки */ __u32 s_reserved[235]; /* Зарезервировано */ >;
0 | Linux |
1 | GNU HURD |
2 | MASIX |
3 | FreeBSD |
4 | Other/Unknown |
BGD [ ]
BGD таблица содержит индексные дескрипторы для каждой группы блоков файловой системы и распологается сразу после суперблока. Таким образом, если указано, что размер блока составляет 1 кб, то блок с таблицей начинается в втором блоке. Блоки нумеруются с нуля, и номера блоков не соответствуют их физическому нахождению. Формат дескриптора группы блоков в виде структуры представлен ниже:
Если Вы Сможете Останавливать Время
struct ext2_group_desc < __u32 bg_block_bitmap; /* Номер блока в битовой карте*/ __u32 bg_inode_bitmap; /* Дескриптор блока в битовой карте */ __u32 bg_inode_table; /* Номер блока в таблице дескрипторов */ __u16 bg_free_blocks_count; /* Свободно блоков */ __u16 bg_free_inodes_count; /* Свободно индексных дескрипторов */ __u16 bg_used_dirs_count; /* Количество директорий */ __u16 bg_pad; __u32 bg_reserved[3]; >;
Индексные дескрипторы [ ]
В первой версии файловой системы индексные дескрипторы имели фиксированный размер в 128Кб, начиная с версии 1.0 размер инода указывается в соответствующем поле суперблока. Как и блоки, каждый дескриптор имеет свой номер, отличие лишь в том, что нумерация инодов начинается с единицы. До версии Ext2 1.0 дескрипторы с 1 по 10 были зарезервированы, но начиная с версии 1.0 первый незарезервированный инод отражается с помощью поля в суперблоке. Второй инод имеет самое большое значение, так как он используется для корневого каталога.
Поиск местонахождения дескриптора [ ]
Для определения того, какую группу блоков «представляет» данный индексный дескриптор, можно воспользоваться формулой:
Группа блоков = (инод-1) / s_inodes_per_group
где s_inodes_per_group соответствующее поле в суперблоке (см. Суперблок).
Как только мы узнали, какую группу представляет инод, мы можем узнать адрес нашего инода в таблице дескрипторов:
Адрес = (инод-1) % s_inodes_per_group
где % — деление по модулю.
Следующим шагом будет определение адреса блока, содержащего данный индексный дескриптор:
Блок = (Адрес * inode_size) / block_size
Чтение информации из дескриптора [ ]
см. Система адресации данных Структура дескриптора
struct ext2_inode < __u16 i_mode; /* Тип файла и права доступа (см.ниже) */ __u16 i_uid; /* UserID */ __u32 i_size; /* Размер в байтах */ __u32 i_atime; /* POSIX время последнего обращения к файлу */ __u32 i_ctime; /* POSIX время создания */ __u32 i_mtime; /* POSIX время последней модификации */ __u32 i_dtime; /* POSIX время удаления */ __u16 i_gid; /* GroupID */ __u16 i_links_count; /* Кол-во ссылок на дескриптор */ __u32 i_blocks; /* Кол-во секторов (не блоки!) */ __u32 i_flags; /* Флаг (см.ниже) */ union < struct < __u32 l_i_reserved1; /* Зарезервировано */ >linux1; struct < __u32 h_i_translator; /* . */ >hurd1; struct < __u32 m_i_reserved1; /* Зарезервировано */ >masix1; > osd1; __u32 i_block[EXT2_N_BLOCKS];/* Указатели на блок */ __u32 i_generation; /* Версия файла (для NFS) */ __u32 i_file_acl; /* Доп. аттрибуты файла */ __u32 i_dir_acl; /* Доп. аттрибуты директории */ __u32 i_faddr; /* Адрес фрагмента */ union < struct < __u8 l_i_frag; /* Номер фрагмента */ __u8 l_i_fsize; /* Размер фрагмента */ __u16 i_pad1; /* Зарезервировано */ __u16 l_i_uid_high; /* 16 старших битов UserID */ __u16 l_i_gid_high; /* 16 старших битов GroupID */ __u32 l_i_reserved2; /* Зарезервировано */ >linux2; /* LINUX */ struct < __u8 h_i_frag; /* Номер фрагмента */ __u8 h_i_fsize; /* Размер фрагмента */ __u16 h_i_mode_high; /* 16 старших битов T /* 16 старших битов UserID */ __u16 h_i_gid_high; /* 16 старших битов GroupID */ __u32 h_i_author; /* UserID или автор */ >hurd2; /* GNU HURD */ struct < __u8 m_i_frag; /* Номер фрагмента */ __u8 m_i_fsize; /* Размер фрагмента */ __u16 m_pad1; /* Зарезервировано */ __u32 m_i_reserved2[2]; /* Зарезервировано */ >masix2; /* MASIX */ > osd2; /* Специфичные значения */ >;
Тип файла и права доступа [ ]
В верхних четырех битах (15 по 12) поля i_mode находятся описания типа файла, а в остальных — права доступа.
0x1 | FIFO |
0x2 | Символьное устройство |
0x4 | Директория |
0x6 | Блочное устройство |
0x8 | Регулярный файл |
0xA | Ссылка |
0xC | UNIX-cокет |
Для представления прав доступа в UNIX используется 10 битное поле, маску которого можно представить как DRWERWERWE (в данном случае нужно просто «отсечь» последние два бита) , где первый бит указывает, является ли файл специальным. Первая RWE тройка указывает права пользователя на чтение, запись, и исполнение файла, вторая — на права группы пользователя, третья — права для всех остальных. К примеру, если получена последовательность битов 0111101101 , то данный файл не является директорией, его могут исполнить и читать все «пользователи» данного компьютера, но редактировать позволено только пользователю-создателю.
Система адресации данных [ ]
Для хранения адреса файла выделено 15 полей по 4 байта. Если файл умещается в пределах 12 блоков, то в первых 12 полях адреса перечислены номера соответствующих кластеров, иначе следующее поле используется для косвенной адресации. Возможна ситуация, когда размер файла превышает 1024+12 блоков. Тогда 14 поле используется для двойной косвенной адресации, но если вдруг файл включает в себя более 1049612 блоков, в дело вступает тройная косвенная адресация и 15 блок. Такая организация позволяет при максимальном размере блока в 4Кб оперировать файлами, размер которых превышает 2Тб. Наглядно данная схема показана на рисунке ниже:
Источник: osdev.fandom.com
Что нужно знать об App2sd, и ext3, ext4 разделах
Статья о том, чем отличаются ext3 и ext4, и как с ними работает App2sd.
Источник. Автор перевода: Павел А. Сафронов.
От автора перевода: на сайте-источнике данный материал опубликован довольно давно (19 мая 2011 года), но общий смысл статьи от этого не меняется и основные моменты на 21 октября 2016 остаются актуальными.
Итак, почти у каждого, я думаю, в телефоне есть SD-карта (проще — «карта памяти»), как жесткий диск в любом компьютере, и каждый может «разделить» ее (разбить на два или более разделов из разных файловых систем). Обычно SD-карта имеет один раздел, занимающий весь ее объем, как правило с файловой системой FAT32, которая может хранить изображения, сообщения, почту и т.п.
Также, кроме карты памяти, которой может вовсе не быть, в телефоне существует собственное внутреннее хранилище, внутренняя память (ее еще называют «NAND»). Для Android характерно, что пользователь может устанавливать приложения только во внутреннее хранилище телефона, и не может устанавливать их на SD-карту. Поэтому, даже если в телефоне есть пустая SD-карта объемом 32Гб, а внутренняя память телефона объемом лишь 5Мб, то на такой телефон не удастся установить много приложений, не говоря уже, что с объемом 5Мб и вовсе ничего не установится.
Это сделано для того, чтобы защитить приложения от таких вещей, как пиратство — не так-то просто получить доступ к расположению прилжоений, установленных во внутренней памяти телефона (обычно просто невозможно без прав root (суперпользователя)), поэтому не получится купить приложение, скопировать его, затем вернуть его продавцу с возвратом денег, и установить его из сохраненной копии вновь. Не выйдет.
Для тех, кому нравится устанавливать десятки и сотни приложений, законно, данная ситуация плачевна тем, что свободное место внутренней памяти телефона очень быстро кончается.
В Google придумали способ, чтобы устанавливать приложения на SD-карту. Для этого создается папка, что-то вроде «.android_secure», хранящая (хочется верить) зашифрованные данные приложений, но есть несколько нюансов:
- Приложения не устанавливаются в эту папку автоматически, их нужно вручную «переместить»;
- Не все приложения могут быть перемещены, фактически многие не могут, и разработчики должны обновить эти приложения, сделав эту возможность доступной. Некоторые приложения не могут быть перемещены и не будут обновлены в плане доступности переноса на SD-карту, т.к. разработчики не хотят этого из каких-либо соображений.
- Не все данные приложений могут быть перемещены, большая часть из них — да, но некоторые данные все же хранятся во внутренней памяти, поэтому у неоторых людей свободное место телефона все равно закончится быстро.
- Вы можете «по умолчанию» настроить форсированный перенос ВСЕХ приложений в папку на карте памяти, но это может нарушить работу некоторых из них, таких как виджеты, которые могут не запуститься, пока SD-карта не будет «подготовлена».
До выхода Android Froyo некоторые особенно смышленые люди придумали «Apps2SD». Помните ранее говорилось, что стандартно SD-карта имеет один большой раздел с файловой системой FAT32? Итак, Apps2SD работает с картами, имеющими ДВЕ файловых системы: основную — FAT32 для хранения типовых данных (фото, документы и т.п.), и второстепенную — раздел с файловой системой EXT.
EXT это файловая система, такая же как FAT32 или NTFS, но эту файловую систему использует операционная система Android. SD-карта по умолчанию форматируется в FAT32, потому что FAT32 универсальна, ее «увидит» любое устройство, в то время как файловую систему EXT «видит» только операционная система Linux. Но, это отступление от темы.
EXT имеет несколько версий. Наиболее часто встречающаяся — ext3. Основное отличие ext3 от ext2 — журналирование. Проще говоря, если операция (копирование, чтение, запись) будет неожиданно прервана (скажем, выключился телефон), то не должно произойти потери или повреждения данных. Когда мы включаем телефон, часто видим надпись — «Подготовка SD-карты».
Подготовка занимает несколько минут, но что происходит в это время — проверка файловой системы на наличие повреждений, в то время, как файловая система FAT (без 32) не «умеет» журналировать. Если вернуться во времена, когда использовалась операционная система Windows 98, вспоминается прекрасный синий экран утилиты «Scandisk», запускавшейся каждый раз, когда работа компьютера не была завершена корректно. Здесь такая же ситуация. Затем на смену пришли ОС Windows 2000/XP с файловой системой NTFS, также с функцией журналирования, уменьшающей вероятность потери данных. Но, я вновь ушел от темы.
Итак, предположим у вас есть карта памяти с файловыми системами EXT и FAT32. В общем не имеет значения, будет EXT версией ext3 или ext4, в данном случае здесь не будет реального преимущества ext4 над ext3. Apps2SD просто запускает специальный скрипт на телефоне, который создает символьные ссылки папок, хранящихся во внутренней памяти телефона, на раздел EXT карты памяти.
Символьная ссылка — это как ярлык для папки, невидимый для операционной системы. Другими словами, Android не «знает», что, устанавливая приложение во внутреннюю память телефона, оно на самом деле сохраняется на SD-карту. Это значительно расширяет внутреннюю память телефона от начальных 5Мб, приводимых в примере ранее, до того значения, каоторое було установлено для раздела EXT при форматировании карты памяти (часто 512Мб или 1Гб, зависит от того, сколько программ планируется установить).
Вдобавок, поскольку файловые системы «прожурналированы», их не нужно «подготавливать». Это означает, что они готовы к эксплуатации сразу, как только телелфон загрузился — ваши виджеты и приложения запускаются моментально (в отличие от «форсированнго» запуска в Android Froyo Apps2SD, где виджеты попросту пропадали.
Загвоздка с Apps2SD в том, что сколько бы ни занимал раздел EXT, он будет заимствоваться от SD-карты. Если у вас карта памяти объемом 4 ГБ (где-то около 3,5Гб реально доступного места) и вы сделаете на ней раздел EXT объемом 512Мб, то фактически досутпный объем SD-карты уменьшится до 3Гб. Свободное место на самом деле не потеряно, а используется файловой системой EXT. Если вы отформатируете карту вновь, то снова получите первоначальные 4 (фактические 3,5) Гб.
Наконец, есть разница между «Apps2SD» и «Apps2SD+». Помните, мы говорили, что приложения хранятся в папке на внутренней памяти телефона? Ну, я немного приврал. На самом деле они хранятся в ДВУХ местах. Существует еще одно место — так называемый Dalvik Cache (Далвик Кэш). Вам не стоит беспокоиться о том, для чего он нужен (он создается средой выполнения Java и используется для запуска приложений).
Все, что вам нужно знать — приложения используют его, чтобы хранить данные, которые также занимают внутреннюю память телефона. Apps2SD+ умеет перемещать Dalvik Cache в раздел EXT SD-карты, освобождая больше места во внутренней памяти телефона. Некоторые верят, что это может быть в ущерб производительности, т.к. внутренняя память NAND должна быть быстрее, чем память SD-карты (вы могли встречать людей, споривших о том, какой «класс» SD-карты лучше для Apps2SD — смысл в том, что с более быстрой SD-картой будут меньшие потери после переноса данных), но правда такова, что приложения в любом случае запускаются из внутренней памяти, перенос не сильно влияет на производительность. Поскольку многие приложения занимают всего несколько сотен килобай в памяти или пару мегабайт, то это не проблема.
Наонец, любая актуальная версия Apps2SD/Apps2SD+ будет работать с SD-картами которые имеют, либо не имеют файловую систему EXT. При запуске происходит провека на наличие раздела с файловой системой EXT, и, в случае его отсутствия, будет использовано внутреннее хранилище телефона.
Наличие у карты памяти раздела с файловой системой EXT, но БЕЗ использования Apps2SD+ также не вызовет проблем, вы сможете отформатировать карту в любое время, когда захотите, чтобы вернуть первоначальный объем.
- Apps2SD «имитирует» внутреннюю память вашего телефона и сохраняет данные в скрытый раздел на карте памяти;
- Apps2SD+ сохраняет больше данных, освобождая больше места во внутренней памяти телефона;
- «Froyo» Apps2SD имеет разные ограничения, отсутствующие в «старых» apps2SD , но он значитено проще в использовании, т.к. не связан ни с каким делением на разделы.
Источник: pavel-a-safronov.name
Азбука монтажа_1 / файловые системы
Second Extended File System (дословно: «вторая расширенная файловая система»), сокращённо ext2 (иногда ext2fs) — файловая система ядра Linux. Была разработана Реми Кардом (англ.) взамен существующей тогда ext. По скорости и производительности работы она может служить эталоном в тестах производительности файловых систем. Так, в тестах на скорость последовательного чтения и записи, проведённых The Dell TechCenter, файловая система ext2 обгоняет ext3, и уступает лишь более современной ext4 в тесте на чтение.[1]
Главный недостаток ext2 (и одна из причин демонстрации столь высокой производительности) заключается в том, что она не является журналируемой файловой системой. Он был устранён в файловой системе ext3 — следующей версии Extended File System, полностью совместимой с ext2.
Файловая система ext2 по-прежнему используется на флеш-картах и твердотельных накопителях (SSD), так как отсутствие журналирования является преимуществом при работе с накопителями, имеющими ограничение на количество циклов записи.
На заре развития Linux использовала файловую систему ОС Minix. Она была довольно стабильна, но оставалась 16-разрядной и, как следствие, имела жёсткое ограничение в 64 Мегабайта на раздел. Также присутствовало ограничение на максимальную длину имени файла: оно составляло 14 символов. Эти и другие ограничения послужили стимулом к разработке «расширенной файловой системы» (англ.
Extended File System), решавшей две главные проблемы Minix. Новая файловая система была представлена в апреле 1992 года. Ext расширила ограничения на размер файла до 2 гигабайт[2] и установила предельную длину имени файла в 255 символов.
Тем не менее, оставалось ещё много нерешённых проблем: не было поддержки раздельного доступа, временных меток модификации данных. Именно эти проблемы послужили инициативой для создания следующей версии расширенной файловой системы ext2 (англ. Second Extended File System), разработанной в январе 1993 года. В ext2 были также реализованы соответствующие стандарту POSIX списки контроля доступа ACL и расширенные атрибуты файлов.
Логическая организация файловой системы ext2
Сетевая иерархия каталогов файловой системы ext2
Граф, описывающий иерархию каталогов файловой системы ext2, представляет собой сеть. Причиной такой организации является то, что один файл может входить сразу в несколько каталогов.
Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен: простые, составные и относительные. Не является исключением и ext2. Ограничения на простое имя состоят в том что, его длина не должна превышать 255 символов, а также в имени не должны присутствовать символ NULL и слеш.
Ограничения на символ NULL связаны с представлением строк в языке Си, а на символ слеш — с тем, что он используются как разделительный символ между каталогами. Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла. В файловой системе ext2 файл может входить в несколько каталогов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл — много полных имен». В любом случае полное имя однозначно определяет файл.
Атрибутами файловой системы ext2 являются:
тип и права доступа к файлу,
владелец, группа доступа,
информация о разрешённых операциях,
время создания, дата последнего доступа, дата последнего изменения и время последнего удаления,
текущий размер файла,
файл байт-ориентированного устройства,
файл блочно-ориентированного устройства,
число занимаемых блоков,
Атрибуты файлов хранятся не в каталогах, как это сделано в ряде простых файловых систем, а в специальных таблицах. В результате каталог имеет очень простую структуру, состоящую всего из двух частей: номера индексного дескриптора и имени файла.
Fourth Extended File System (четвёртая версия расширенной файловой системы), сокр. ext4, или ext4fs — журналируемая файловая система, используемая в ОС с ядром Linux. Основана на файловой системе ext3, которая является файловой системой по умолчанию во многих дистрибутивах Linux.
Впервые экспериментальная поддержка ext4 была выпущена в виде патча для Linux версий 2.6.19-rc1-mm1 и 2.6.19-rc1-git8 10 октября 2006 года программистом Эндрю Мортоном (англ.).[1]
Основной особенностью стало увеличение максимального объёма одного раздела диска до 1 эксабайта (260 байт) при размере блока 4Kb, и увеличение размера одного файла до 16 терабайт. Кроме того, в ext4 представлен механизм пространственной (extent) записи файлов (новая информация добавляется в конец заранее выделенной по соседству области файла), уменьшающий фрагментацию и повышающий производительность.
Поддержка в операционных системах
В системах MS Windows доступ к томам с ext4 возможен посредством использования технологии coLinux. Поддержка Просмотра/Чтения реализована в программе Ext2read. Частичный функционал работы с ext4 на уровне драйвера Windows реализован в Ext2Fsd Project.
Ubuntu 9.04 — опционально, начиная с версии 9.10, ext4 стала ФС по умолчанию.
Debian 6.0 — опционально.
Поддержка ext4 включена в Fedora 9(в Fedora 11 — основная), в версию 3.5 (начиная с Loop 3) Sabayon Linux, ArchLinux, Slackware.
В openSUSE 11.2 и дистрибутивах линейки Mandriva Linux 2010 — ФС по умолчанию.
Red Hat Enterprise Linux — ФС по умолчанию с версии 6.[2]
В PCLinuxOS 2010 — ФС по умолчанию.
Эту файловую систему используют такие операционные системы, как Windows NT/2000/XP. При установке NTFS, диск разделяется на две неравные части: первая отводиться под MFT (Master File Table — общая таблица файлов), называется MFT — зоной и занимает порядка 12% от общего размера диска, вторую часть занимают собственно Ваши данные. Есть еще и третья зона, но о ней позже. Что за зверь этот MFT? Это основа NTFS.
Он лежит, как было сказано ранее, в MFT — зоне т. е. в начале диска. Каждая запись в MFT соответствует какому-либо файлу и занимает около 1 Kb. По своей сути это каталог всех файлов находящихся на диске. Надо заметить, что любой элемент данных в NTFS рассматривается как файл, даже 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.
Поговорим теперь о каталоге. Это метофайл с обозначением $. . Он разделен на части в каждой из которых содержится имя файла, его атрибуты и ссылка на MFT — файл. А там уже есть вся остальная информация. Каталог представляет собой бинарное дерево. Попробуем разобраться, что это за фигня такая.
В каталоге информация о данных на диске расположена таким образом, что при поиске какого-либо файла каталог разбивался на две части и ответ заключался в том, в какой именно части находиться искомое. Затем та же самая операция повторяется в выбранной половине. И так до тех пор, пока не будет найден нужный файл.
А теперь о файлах. Их как таковых нет. Нормально, да! Есть так называемые стримы, или говоря нормальным русским языком — потоки. То есть, любая единица информации представляет собой несколько потоков. Один поток — это сами данные, он является основным.
Другие потоки — атрибуты файла. К любому файлу можно прикрепить любой другой файл. Проще говоря, к потокам одних данных можно прикрепить совершенно новый поток и записать туда новые данные. Вот только информация по объему файла берется по объему основного потока. Пустые или малоразмерные файлы на диске отображены только в метафайлах.
Сделано это в целях экономии дискового пространства. Вообще надо отметить, что понятие файл намного глубже и шире и все свойства описать довольно сложно. Отмечу, что максимальная длина имени файла может достигать 255 символов.
Ко всему прочему, файлы NTFS имеют такой замечательный атрибут как сжатый. Любой файл или даже каталог может быть сжат. Сама операция сжатия происходит незаметно, так как скорость ее довольно высока. До кучи, используется так называемое виртуальное сжатие т. е. одна часть файла может быть сжата, а другая нет. Сжатие осуществляется блоками.
Каждый блок равен 16 кластерам.
В NTFS используется шифрование данных. Таким образом, если Вы снесли систему и установили ее по новой, зашифрованные файлы без соответствующей санкции прочитать не сможете.
Теперь о журналировании. Но сначала определимся с понятием транзакция. Транзакция — это действие, которое должно быть выполнено целиком и полностью (читай — корректно), в противном случае оно вообще не будет выполнено. Так вот, на основе этой фигни, при сбое во время записи данных на диск, пометок о новом файле в метафайлах сделано не будет.
А место, куда была начата запись будет считать чистым. Это необходимо для предохранения 🙂 от различного рода геморроев. Короче, выполнил действие до конца — сделал запись, не удалось — и записывать об этом незачем. Но следует заметить, что функция журналирования сохраняет работоспособность файловой системы, а не ваших данных.
И наконец в NTFS есть еще две такие функции, как Symbolic Links — возможность создания виртуальных каталогов, и Hard Links — поддержка нескольких имен для одного и того же файла.Вот пожалуй что и все.
На данный момент времени эта файловая система является самой распространенной, хотя и сдает постепенно свои позиции после выхода Windows XP. Поддерживают FAT 32 все операционные системы семейства Windows начиная с Windows 95 OSR2. Итак, FAT 32 (File Allocation Table) — это электронная таблица размещения файлов. Находиться она практически в самом начале диска. Структура диска FAT:
1. загрузочные секторы главного и дополнительного разделов;
2. загрузочный сектор логического диска;
3. корневой каталог;
4. область данных;
5. цилиндр для выполнения диагностических операций чтения/записи;
Основное преимущество FAT 32 перед FAT 16 заключается в том, что вместо 16 разрядных записей используются 32х разрядные. Это в свою очередь увеличивает количество кластеров в разделе до 268 435 456 (в FAT — 65 536). При использовании FAT 32 размер тома равен 2 Tb, а размер одного файла может достигать 4 Gb. Заметное отличие FAT 32 от предшествующих таблиц заключается в том, что корневой каталог не занимает фиксированного места на диске и может иметь любой размер.
Размер кластера при использовании FAT 32 в разделе размером 2 Gb с 5 000 файлами равен 4 Kb ( в FAT 16 — 32 Kb), в таблице будет использоваться до 524 288 записей. При этом сама таблица будет весить порядка 2 Мb.
exFAT (от англ. Extended FAT — «расширенная FAT») — проприетарная файловая система, предназначенная главным образом для флэш-накопителей. Впервые представлена фирмой Microsoft для встроенных устройств в Windows Embedded CE 6.0.
Основными преимуществами exFAT перед предыдущими версиями FAT являются:
- Уменьшение количества перезаписей одного и того же сектора, что важно для флеш-накопителей, у которых ячейки памяти необратимо изнашиваются после определённого количества операций записи (это сильно смягчается выравниванием износа — wear leveling, — встроенным в современные USB-накопители и SD-карточки). Это была основная причина разработки ExFAT.
- Теоретический лимит на размер файла 2 64 байт (16 эксабайт).
- Максимальный размер кластера увеличен до 2 25 байт (32 мегабайта).
- Улучшение распределения свободного места за счёт введения бит-карты свободного места, что может уменьшать фрагментацию диска.
Источник: studfile.net