Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRILOZhYeNIYe_2.doc
Скачиваний:
11
Добавлен:
10.07.2019
Размер:
337.92 Кб
Скачать

Приложение 2 архитектурные особенности файловой системы ext4fs

С 2006 года в операционных системах Linux начато использование новой файловой системы ext4fs, сначала в виде дополнения к существующей ФС ext3fs, а затем, с 2008 года, в виде стабильной, законченной файловой системы. Однако многие из запланированных преимуществ ФС еще не реализованы ее разработчиками, и эта система продолжает развиваться и дорабатываться. Новая ФС содержит много особенностей и сильно отличается от предшествующей версии.

Несмотря на некоторую незавершенность файловой системы, она уже устанавливается по умолчанию во многих дистрибутивах Linux и стремительно набирает популярность. 15 января 2010 года компания Google объявила о переводе своих серверов с файловой системы ext2 на файловую систему ext4.

Поскольку файловая система разработана недавно и все еще находится в процессе развития, документации на русском языке по ней практически нет. Отсутствуют и утилиты для исследования файловой системы и ее структур. Формат данных, хранимых на диске, в ext4 несколько изменился, поэтому программы, предназначенные для исследования и восстановления данных в системах ext2 и ext3, с новой ФС работают некорректно.

Использование экстентов

В файловой системе адресация данных выполнялась традиционным образом, поблочно. Такой способ адресации становится менее эффективным с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 Mб) последовательно идущих блоков одним дескриптором. До 4 указателей на экстенты может размещаться непосредственно в индексном дескрипторе, что достаточно для файлов маленького и среднего размера [15]. Экстенты используются многими файловыми системами, в том числе: HFS Plus (для Mac OS), NTFS (для Windows), UDF, XFS, JFS, Reiser4, Btrfs и HPFS.

48-битные номера блоков

Ext3 является 32-битной файловой системой. Это значит, что ее максимальный размер при размере блока в 4 Кб составляет Тб. Ext4 при размере блока 4 Kб позволяет адресовать до одного экзабайта: . Многие популярные файловые системы, например XFS, являются 64-битными. 48-битная адресация блоков в ext4 была выбрана вместо полной 64-битной адресации по причине того, что предел для файловой системы в 1 Эб еще много лет будет достаточным. При существующих скоростях одна полная проверка файловой системы в 1 Эб утилитой e2fsck займет 119 лет, что в 65 536 раз меньше, чем потребуется для системы с 64-битной адресацией [16]. Но возможности для поддержки 64-битной адресации создаются уже сейчас: некоторые поля системы зарезервированы под 64-битную адресацию.

Новые алгоритмы выделения блоков и индексных дескрипторов

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

Ext3 одинаково выделяла блоки как для маленьких, так и для больших файлов, что увеличивало фрагментированность ФС. Ext4 в зависимости от размера файла применяет разные алгоритмы выделения дискового пространства. Маленькие файлы из одной директории ФС старается держать рядом, чтобы минимизировать время и количество обращений к диску. Большие файлы размещаются отдельно, в непрерывной области памяти [18].

Отложенное выделение блоков (delayed allocation). Выделение блоков для хранения данных файла происходит непосредственно перед физической записью на диск (например, при вызове sync), а не при вызове write. В результате операции выделения блоков можно делать не по одной, а группами, что в свою очередь минимизирует фрагментацию, снижает нагрузку на процессор и ускоряет процесс выделения блоков. Отложенное выделение блоков также предотвращает ненужное резервирование блоков для короткоживущих файлов. С другой стороны, это увеличивает риск потери данных в случае внезапного пропадания питания.

Предварительное выделение (persistent preallocation). Сейчас приложения для того, чтобы гарантированно занять какое-то место, заполняют нулями. В ext4 появилась возможность зарезервировать множество блоков для записи и не тратить на инициализацию лишнее время. Если приложение попробует прочитать данные, оно получит сообщение о том, что они не проинициализированы. Таким образом, несанкционированно прочитать удалённые данные не получится.

Резервирование индексных дескрипторов при создании каталога (directory inodes reservation). При создании каталога резервируется несколько индексных дескрипторов. Впоследствии при создании файлов в этом каталоге сначала используются зарезервированные индексные дескрипторы, и если таких не осталось, выполняется обычная процедура выделения inode [17].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]