Linux Kernel (Ядро линукса) (часть 3)


Общие характеристики файловой системы Ext2

В Unix-подобных операционных системах применяются файловые системы нескольких типов. Хотя файлы во всех этих файловых системах имеют общее подмножество атрибутов, требуемых некоторыми API-вызовами POSIX, такими как stat , каждая файловая система реализована по-своему.

В основе первых версий Linux лежала файловая система MINIX. По мере развития Linux появилась Ext FS (Extended Filesystem, Расширенная файловая система). Она включала в себя ряд важных расширений, но имела неудовлетворительную производительность. В 1994 г. была представлена Ext2 (Second Extended Filesystem, Вторая расширенная файловая система). Она имела несколько новых функциональных возможностей и оказалась такой производительной и устойчивой, что в настоящее время вместе со своим отпрыском Ext3 является самой широко используемой файловой системой в Linux.
Эффективность Ext2 обусловлена следующими ее свойствами:
- при создании файловой системы Ext2 системный администратор может выбрать оптимальный размер блока (от 1024 до 4096 байтов), в зависимости от ожидаемой средней длины файла. Например, блок в 1024 байта предпочтителен, когда средняя длина файла меньше нескольких тысяч байтов, потому что в этом случае внутренняя фрагментация будет меньше, т. е. будет меньше несоответствие между длиной файла и той частью диска, которую он занимает Зато большие размеры блока обычно предпочтительнее длиной более, чем несколько тысяч байтов, потому что в таком случае будет меньше пересылок данных на диск и обратно, что понизит накладные расходы системы;
- при создании файловой системы Ext2 системный администратор может выбрать количество индексных дескрипторов, разрешенных для раздела данного размера, в зависимости от ожидаемого количества файлов, хранящихся в этом разделе. Тем самым увеличивается эффективно используемое пространство на диске;
- файловая система объединяет блоки на диске в группы. Каждая группа включает в себя блоки данных и индексные дескрипторы, расположенные на смежных дорожках. Благодаря такой структуре, к файлам, хранящимся в одной группе, можно обратиться, потратив на поиск, в среднем, меньше времени;
- файловая система заранее выделяет блоки данных под обычные файлы до того, как они будут фактически использованы. Таким образом, когда файл
увеличивается в размере, несколько физически смежных блоков уже зарезервированы, что уменьшает фрагментацию файла;
- поддерживаются быстрые символьные ссылки Если символьная ссылка представляет собой короткий путь к файлу (максимум 60 символов), ее можно хранить в индексном дескрипторе и, следовательно, транслировать, не читая блок данных.
Кроме того, Ext2 обладает и другими свойствами, делающими ее устойчивой и гибкой:
- аккуратная реализация обновления файла, минимизирующая последствия сбоев системы. Например, при создании новой жесткой ссылки на файл сначала увеличивается счетчик жестких ссылок в индексном дескрипторе на диске, а затем в соответствующий каталог добавляется новое имя. Таким образом, если аппаратный сбой произойдет после обновления индексного дескриптора, но до изменения каталога, каталог останется корректным, хотя счетчик жестких ссылок индексного дескриптора будет показывать неверное значение. Удаление файла не приводит к катастрофическим результатам, хотя его блоки и нельзя будет автоматически утилизировать. Если бы действия совершались в обратном порядке (изменение каталога до обновления индексного дескриптора), то тот же аппаратный сбой стал бы причиной опасного несоответствия: удаление оригинальной жесткой ссылки повлекло бы за собой удаление блоков данных с диска, а новый элемент каталога продолжал бы ссылаться на уже несуществующий индексный дескриптор. Если номером этого индексного дескриптора впоследствии воспользуется другой файл, запись в некорректный элемент каталога исказит содержимое этого файла;
- поддержка автоматической проверки непротиворечивости файловой системы на этапе загрузки. Проверка выполняется внешней программой e2fsck, которая может быть запущена не только после сбоя системы, но и после определенного количества операций монтирования файловой системы (счетчик увеличивается после каждого монтирования) или по истечении установленного времени с момента последней проверки;
- поддержка неизменяемых файлов (таких, которые нельзя модифицировать, удалять и переименовывать) и файлов, доступных только для дополнения (таких, что данные могут быть только записаны в их конец);
- совместимость с семантиками идентификатора группы пользователя нового файла, принятыми как в Unix System V Release 4, так и в BSD. Семантика SVR4 предполагает, что у нового файла тот же идентификатор группы, что и у создавшего его процесса; в BSD же новый файл наследует идентификатор группы от каталога, в котором находится. Ext2 имеет опцию монтирования, определяющую, какой семантикой пользоваться.
Хотя Ext2 является зрелой и стабильной файловой системой, в настоящее время рассматривается вопрос о включении в нее дополнительных функциональных возможностей1. Некоторые уже закодированы и доступны в виде внешних патчей. Другие еще только проектируются, но в индексном дескрипторе Ext2 для них уже зарезервированы поля. Самыми важными из новых функциональных возможностей являются следующие:
- фрагментация блоков— системные администраторы обычно выбирают большой размер для блоков на диске, потому что приложения часто работают с большими файлами. В результате для маленьких файлов неэкономно расходуется пространство на диске. Эту проблему можно решить, обеспечив хранение нескольких файлов в различных фрагментах одного блока;
- прозрачная работа со сжатыми и зашифрованными файлами — эти новые опции, задаваемые при создании файла, позволяют пользователям прозрачно хранить сжатые и/или зашифрованные версии своих файлов на диске;
- логическое удаление — опция undelete позволяет пользователям без труда восстановить удаленный файл, если в том возникнет необходимость;
журналирование — позволяет избежать длительной проверки, которая автоматически выполняется при внезапном размонтировании файловой системы (например, в результате краха системы).

На практике ни одна из этих функциональных возможностей не была официально введена в файловую систему Ext2. Можно сказать, что Ext2 стала жертвой собственного успеха. Вплоть до последнего времени она была самой предпочитаемой файловой системой, принятой большинством компаний- дистрибьютеров Linux, и миллионы пользователей, ежедневно работающих с ней, с подозрением воспринимают любые попытки заменить Ext2 какой- нибудь другой файловой системой.

Самой притягательной возможностью, отсутствующей у Ext2, является журналирование, необходимое в сильно загруженных серверах. Чтобы обеспечить плавный переход, было решено не вводить журналирование в Ext2. Вместо этого была создана новая журналируемая, полностью совместимая с Ext2, и мы обсудим ее в разд. "Файловая система Ext3" далее в этой главе. Пользователи, не нуждающиеся в журналировании, могут продолжать работать со старой доброй Ext2, а остальные, вероятно, перейдут на новую файловую систему. Сегодня во многих дистрибутивах Ext3 принята в качестве стандартной файловой системой.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без про...

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга...

Linux Kernel (Ядро линукса) (ч...

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть...

Linux Kernel (Ядро линукса) (ч...

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно...

Linux Kernel (Ядро линукса) (ч...

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer...