Автор: Максим Мишутин | 27.12.2010 | 2:14 | В рубриках: Файловая система

Оцените ФС Ext3

Loading ... Loading ...
Файловая система ext3 – это журналируемая версия файловой системы ext2, которая характеризуется широкой совместимостью с различными 32- и 64-разрядными архитектурами и утвердилась как стандартная ФС в Linux. Файловая система ext3 интегрируется в ядро Linux начиная с версии 2.4.16.

Журналируемая файловая система
это устойчивая к сбоям файловая система, в которой целостность данных гарантирована, потому что обновления meta-данных записываются в лог на диске перед любыми изменениями в структуре файловой системы. В случае сбоя журналируемая файловая система гарантирует восстановление всех потерянных данных.
Самый распространенный подход современных ФС – это метод журналирования или логгирования meta-данных файлов. Его суть в том, что информация о любом изменении записывается в зарезервированную область файловой системы, и только после этого совершается само изменение.
Основное отличие Ext3 от Ext2 – это наличие журнала, о котором мы уже упоминали. Любое изменение в файловой системе, например создание нового файла, отражается во многих местах системы: создается новая запись в директории, создается новый индексный дескриптор, блоки данных и дескриптор помечаются как зарезервированные в битовых картах блоков и дескрипторов, изменяется дата последнего доступа в дескрипторе директории, обновляется статистика файловой системы в суперблоке, и сами данные записываются в соответствующие блоки. Ext3 первым делом записывает изменения в свой журнал. До тех пор пока все перечисленные групповые изменения (транзакция) не войдут в журнал, старые метаданные файловой системы останутся неизменными. Когда транзакция закончится, и новые метаданные будут в журнале, только тогда они могут быть перенесены в файловую систему при первой возможности. Незавершенные транзакции в журнале игнорируются, так как старые метаданные в файловой системе остались в силе.
Файловая система ext3 имеет одно значительно преимущество перед другими журналируемыми файловыми системами – она полностью совместима с файловой системой ext2. Это делает возможным использование всех существующих приложений разработанных для манипуляции и настройки файловой системы ext2. В файловой системе Linux Ext3 основной структурой данных, описывающий файл, является индексный дескриптор. Индексные дескрипторы содержат всю необходимую информацию о файлах, кроме их имени: размер, тип файла (обычный файл, директория, файл устройства, именованный канал, сокет, или символическая ссылка), владельца файла, количество жестких ссылок, права и время доступа, а также номера блоков данных, содержащих информацию, информация сохраняется в блоках данных. Индексные дескрипторы сохраняются в таблицах в зарезервированных участках файловой системы. Если имя симлинка короче 60 символов, то оно также сохраняется прямо в дескрипторе (это называется быстрой символической ссылкой). Во всех остальных случаях имя файла, на который указывает симлинк, сохраняется в файле, имеющем индексный дескриптор.
Символьная ссылка (симлинк)
специальный файл в UNIX-подобных операционных системах, для которого в файловой системе не хранится никакой информации, кроме одной текстовой строки. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке. Символьная ссылка занимает ровно столько места на файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела)
Место под таблицу всех индексных дескрипторов должно быть выделено заранее, при форматировании. Таким образом, в Ext3 максимальное количество файлов на диске задается при форматировании.
Один дескриптор в файловой системе Ext3 сохраняет ровно 15 номеров блоков. Первые 12 указывают напрямую на блоки данных; блок 13 указывает на блок данных, содержащий номера блоков (непрямая адресация блоков, иногда называемая косвенной), блок 14 указывает на блоки, указывающие на блоки с номерами блоков (двойная непрямая адресация блоков), а блок 15 производит тройную непрямую адресацию блоков. Таким образом, при размере блока в 4Кб (а это 1024 номеров блоков, если считать по 4 байта на непрямой блок) один дескриптор может содержать около миллиарда номеров блоков.
Ext3 использует три главных структуры данных: директории, индексные дескрипторы (inode) и блоки данных (data blocks). Директории содержат только записи имен файлов и соответствующих им номеров индексных дескрипторов (индексы файлов). При этом на один и тот же индексный дескриптор могут указывать записи нескольких директорий. Это положение называется жесткой ссылкой. Мягкой или символической ссылкой называется положение, когда содержимое одного файла указывает на другой файл, а не на индексный дескриптор. Сами директории сохраняются на жестком диске как обычные файлы, отличающиеся от последних только типом файла.
Помимо директорий, таблиц индексных дескрипторов и блоков данных, файловая система Ext3 применяет еще несколько информационных структур. Две битовые карты содержат записи о том, какие из блоков данных находятся в работе, а какие свободны. Чтобы обеспечить эффективный доступ в эту область, Ext3 организует файловую систему в группы блоков. Каждая группа блоков содержит:
- идентификатор группы блоков, ведущий статистику о количестве групп блоков, находящихся в работе
- часть таблицы дескрипторов
- часть битовой карты дескрипторов и блоков, которая относится к части таблицы дескрипторов
- сами блоки данных, принадлежащие к этой группе блоков
Количество созданных групп блоков зависит от размеров файловой системы.
Ext3 – это суперблок, описывающий саму файловую систему. Он содержит всю необходимую информацию для правильной расшифровки структуры файловой системы:
- размер блока
- количество блоков и дескрипторов
- группы блоков
- размер дескриптора
Поскольку суперблок жизненно важен для файловой системы, он записывает на диск в нескольких различных местах.
При удалении файлов Ext3 записывает в дескриптор время удаления файла (и помечает данные блоки данных и дескриптор как свободные в битовых картах блоков и дескрипторов), удаляет номера блоков в дескрипторе, что облегчает восстановление системы после сбоя.
Главные преимущества:
- ext3 записывает изменения данных и метаданных
- разделы Ext3 не отличаются от Ext2 на уровне файловой структуры, поэтому можно портировать файлы со старой системы на новую, или делать backup на старую систему
- еxt3 резервирует одну из специальных Ext2 i-nodes для хранения логов, но сам журнал может быть на любой i-node в любой файловой системе
- работа файла журналирования – записывать состояние системных метаданных во время процесса совершения транзакций. В журнал пишется состояние трех типов данных: метаданные, блоки описания и Header блоки
- журналируемый блок метаданных всегда записывается полностью, даже если в файловой системе произошло очень маленькое изменение. Это делается относительно быстро, потому что журналируемые операции ввода/вывода могут быть обьединены в большие кластеры и блоки могут быть записаны прямо из кэша
- блоки описания описывают другие блоки метаданных, так что механизм восстановления может копировать метаданные назад в файловую систему, они записываются перед изменением журнала метаданных
- header блоки описывают заголовок, окончание журнала, и порядок номеров – для того, чтобы гарантировать упорядоченную запись во время восстановления
- Ext3 весьма успешно справляется с внешней фрагментацией и минимизирует перемещения считывающих головок.
Ext3 характеризуется как устойчивая и не страдающая серьезными проблемами файловая система.

Эта запись была опубликована 27.12.2010в 14:16. В рубриках: Файловая система. Вы можете следить за ответами к этой записи через RSS 2.0. Вы можете оставить свой комментарий или трекбек со своего сайта.