Типы файловых систем для linux
Содержание:
Описание
Стандартом предусмотрено три режима журналирования:
- writeback: в журнал записываются только метаданные файловой системы, то есть информация о её изменении. Не может гарантировать целостности данных, но уже заметно сокращает время проверки по сравнению с ext2;
- ordered: то же, что и writeback, но запись данных в файл производится гарантированно до записи информации об изменении этого файла. Немного снижает производительность, также не может гарантировать целостности данных (хотя и увеличивает вероятность их сохранности при дописывании в конец существующего файла);
- journal: полное журналирование как метаданных ФС, так и пользовательских данных. Самый медленный, но и самый безопасный режим; может гарантировать целостность данных при хранении журнала на отдельном разделе (а лучше — на отдельном жёстком диске).
mount /dev/hda6 /mnt/disc -t ext3 -o data=<режим>
либо в файле .
Файловая система ext3 может поддерживать файлы размером до 1 ТБ. С Linux-ядром 2.4 объём файловой системы ограничен максимальным размером блочного устройства, что составляет 2 терабайта. В Linux 2.6 (для 32-разрядных процессоров) максимальный размер блочных устройств составляет 16 ТБ, однако ext3 поддерживает только до 4 ТБ.
Ext3 имеет одно значительно преимущество перед другими журналируемыми файловыми системами — она полностью совместима с файловой системой ext2. Это делает возможным использование всех существующих приложений разработанных для манипуляции и настройки файловой системы ext2.
Ext3 поддерживается ядрами Linux версии 2.4.16 и более поздними, и должна быть активизирована использованием диалога конфигурации файловых систем (Filesystems Configuration) при сборке ядра. В Linux дистрибутивы, такие как Red Hat 7.2 и SuSE 7.3 уже включена встроенная поддержка файловой системы ext3. Вы можете использовать файловую систему ext3 только в том случае, когда поддержка ext3 встроена в ваше ядро и у вас есть последние версии утилит «mount» и «e2fsprogs».
Описываемая файловая система предоставляет значительные преимущества для большого круга пользователей Linux: минимизирует задержки при перезагрузке системы, сводит к минимуму возможность появления ошибок в ФС, является высокопроизводительной, а ее утилиты делают перевод системы из ext2 в ext3 очень простым. Эта совместимость так же увеличивает возможность использование всех утилит, созданных для работы с ext2.
Надежность
При увеличении размеров файловых систем до уровней, поддерживаемых ext4, неизбежно встает проблема повышения надежности. Для ее решения в еxt4 предусмотрено множество механизмов самозащиты и самовосстановления.
Контрольная сумма журнала файловой системы
Как и ext3, ext4 является журналируемой файловой системой.
Журналирование — это процесс записи изменений, происходящих в файловой системе в журнал
(специально выделенный журнальный файл с круговой записью, занимающий непрерывную область на диске). Фактические изменения на физическом устройстве делаются из файла журнала. Это позволяет производить изменения более надежным образом и гарантировать целостность данных даже в случае краха системы или сбоя питания во время выполнения операции. В результате снижается вероятность повреждения файловой системы.
Но даже с применением журналирования повреждения системы возможны, если в журнал попадут ошибочные записи. Для борьбы с этим в ext4 реализована проверка контрольных сумм записей журнала, чтобы гарантировать, что в нижележащую файловую систему будут внесены правильные изменения
Дополнительную информацию о журналировании — важном аспекте системы ext4 — можно найти в разделе
В зависимости от нужд пользователя ext4 может работать в разных режимах журналирования. Например, ext4 поддерживает режим обратной записи (в журнал заносятся только метаданные), режим упорядочивания (метаданные заносятся в журнал, но только после записи самих данных), а также самый надежный — журнальный режим (в журнал заносятся как данные, так и метаданные). Заметьте, что хотя журнальный режим — это лучший способ гарантировать целостность файловой системы, в то же время это и самый медленный режим, так как в нем через журнал проходят все данные.
Дефрагментацияы «на лету»
Хотя ext4 включает в себя возможности уменьшения фрагментации внутри файловой системы (экстенты для выделения последовательных блоков), все же при длительной жизни файловой системы некоторая фрагментация неизбежна. Поэтому для улучшения производительности существует инструмент, который на лету дефрагментирует как файловую систему, так и отдельные файлы. Дефрагментатор — это простой инструмент, который копирует (фрагментированные) файлы в новый дескриптор ext4, указывающий на непрерывные экстенты.
Другим результатом дефрагментации на лету является уменьшение времени проверки файловой системы.
(). Ext4 помечает неиспользуемые группы блоков в таблице индексных дескрипторов,
что позволяет процессу () полностью их пропускать и ускоряет тем самым процедуру проверки. Поэтому, когда операционная система решит проверить файловую систему после внутреннего повреждения (которые неизбежно будут происходить по мере увеличения размера файловой системы и ее распределенности), благодаря архитектуре ext4 это можно будет сделать быстро и надежно
Краткая история расширенных файловых систем
Переключатель виртуальной файловой системы
VFS — это уровень, который абстрагирует детали лежащих ниже файловых систем
от пользователей файловой системы более высокого уровня. Таким образом VFS позволяет
Linux поддерживать одновременно множество файловых систем на одной системе.
Первая поддерживаемая Linux файловая система была заимствована из операционной системы Minix. Однако она имела значительные проблемы с производительностью, поэтому специально для Linux была создана
расширенная файловая
система. Первая расширенная файловая система (ext) была спроектирована Реми Кардом и появилась в Linux в апреле 1992 года. Именно в файловой системе ext был впервые применен переключатель виртуальной файловой системы (VFS), реализованный в ядре 0.96c и поддерживавший файловые системы размером до 2 гигабайт.
Вторая расширенная файловая система (ext2), также разработанная Реми Кардом, появилась в январе 1993 года. Она позаимствовала многие передовые идеи от других файловых систем своего времени (таких как быстрая файловая система Беркли (Berkeley Fast File System или FFS)). В ext2 размер поддерживаемых файловых систем был увеличен до 2 ТБ, а с появлением ядер версии 2.6 и до 32 ТБ.
Читайте другие статьи Тима Джонса на
developerWorks
- Цикл статей Тима Анатомия …
- Все статьи Тима на developerWorks
Третья расширенная файловая система (ext3) была серьезным продвижениям вперед для файловых систем Linux, хотя и уступала по производительности некоторым своим конкурентам. В ext3 появилась концепция
журналирования, призванная улучшить надежность файловой системы в случае
внезапной остановки. И хотя конкурирующие файловые системы (такие как XFS от Silicon Graphics и
журналируемая файловая система IBM — JFS) обладали лучшей производительностью, преимуществом ext3
была возможность обновления «налету» системы, использующей ext2, до ext3.
Ext3 была разработана Стефаном Твиди и появилась в ноябре 2001 года.
Вернемся в настоящее. Теперь у нас есть четвертая расширенная файловая система (ext4). В ext4 появилось несколько новых улучшений производительности и надежности. Самым заметным, пожалуй, является то, что ext4 поддерживает файловые системы до одного экзабайта. Ext4 была реализована командой программистов под руководством Теодора Цо (разработчика, сопровождающего ext3). Она впервые появилась в ядре версии 2.6.19 и стала стабильной в ядре 2.6.28, вышедшем в декабре 2008 года.
Ext4 позаимствовала множество полезных идей из ряда конкурирующих файловых систем. Например, управление блоками на основе экстентов было реализовано в JFS. Другая новая возможность ext4, связанная с управлением блоками — отложенное выделение, — была ранее реализована в XFS и ZFS от Sun Microsystems.
В новой файловой системе ext4 вы найдете множество разнообразных улучшений и инноваций. Добавлена новая функциональность, сделаны улучшения в масштабируемости (позволившие преодолеть ограничения системы ext3), надежности (по отношению к сбоям) и, безусловно, в производительности.
Устранение неполадок при открытии файлов EXT
Общие проблемы с открытием файлов EXT
Norton Commander не установлен
Дважды щелкнув по файлу EXT вы можете увидеть системное диалоговое окно, в котором сообщается «Не удается открыть этот тип файла». В этом случае обычно это связано с тем, что на вашем компьютере не установлено Norton Commander для %%os%%. Так как ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его дважды щелкнув на него.
Совет: Если вам извстна другая программа, которая может открыть файл EXT, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.
Установлена неправильная версия Norton Commander
В некоторых случаях у вас может быть более новая (или более старая) версия файла Norton Commander Extension, не поддерживаемая установленной версией приложения. При отсутствии правильной версии ПО Norton Commander (или любой из других программ, перечисленных выше), может потребоваться загрузить другую версию ПО или одного из других прикладных программных средств, перечисленных выше. Такая проблема чаще всего возникает при работе в более старой версии прикладного программного средства с файлом, созданным в более новой версии, который старая версия не может распознать.
Совет: Иногда вы можете получить общее представление о версии файла EXT, щелкнув правой кнопкой мыши на файл, а затем выбрав «Свойства» (Windows) или «Получить информацию» (Mac OSX).
Резюме: В любом случае, большинство проблем, возникающих во время открытия файлов EXT, связаны с отсутствием на вашем компьютере установленного правильного прикладного программного средства.
Даже если на вашем компьютере уже установлено Norton Commander или другое программное обеспечение, связанное с EXT, вы все равно можете столкнуться с проблемами во время открытия файлов Norton Commander Extension. Если проблемы открытия файлов EXT до сих пор не устранены, возможно, причина кроется в других проблемах, не позволяющих открыть эти файлы. Такие проблемы включают (представлены в порядке от наиболее до наименее распространенных):
Функциональность
Ext4 включает в себя большое количество новой функциональности, но самой важной является поддержка прямой и обратной совместимости с системой ext3 и улучшения в метках времени, сделанные с расчетом на будущие более производительные Linux-системы
Прямая и обратная совместимость
Так как ext3 — одна из наиболее популярных на сегодняшний день файловых систем Linux, то переход на ext4 должен быть простым и безболезненным. Для этого ext4 была спроектирована так, чтобы иметь прямую и обратную (в некоторой степени) совместимость с ext3 (см. рисунок 1). Прямая совместимость означает, что можно монтировать файловую систему ext3 как систему ex4. Чтобы пользоваться всеми преимуществами ext4 в полной мере, необходимо выполнить процедуру миграции для конвертации системы в формат ext4. Обратная совместимость означает, что можно монтировать файловую систему ext4 как систему ext3, но только если система ext4 не использует экстенты (мы обсудим это в разделе, посвященном производительности).
Рисунок 1. Прямая и обратная совместимость системы ext4
В дополнение к возможностям совместимости также можно осуществлять постепенный переход с ext3 на ext4. Ваши старые файлы могут оставаться в формате ext3, в то время как новые файлы (или скопированные старые файлы) будут располагаться уже в структурах данных новой системы ext4. Таким образом, вы можете переходить на систему ext4 в процессе работы.
Как ни удивительно, но раньше в расширенных файловых системах использовались временные метки с точностью до секунды. Для многих целей такая точность была достаточна, но по мере увеличения скоростей процессоров и появления многоядерных процессоров, а также распространения Linux в таких областях, как высокопроизводительные вычисления, секундной точности временных меток стало не хватать. С расчетом на будущее в ext4 точность временных меток была увеличена до одной наносекунды путем добавления еще одного (младшего) значащего байта. Также на два бита был расширен временной интервал, что увеличило возможное время жизни системы на 500 лет.
Особенности
- Использование экстентов (англ. extent). В ФС ext3 адресация данных выполнялась традиционным образом — поблочно. Такой способ адресации стал менее эффективным с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 MB) последовательно идущих блоков одним дескриптором. До четырёх указателей на экстенты может размещаться непосредственно в inode, этого достаточно для файлов маленького и среднего размера.
- 48-битные номера блоков. При размере блока 4 KB это позволяет адресовать до одного эксбибайта (248·(4 KB) = 248·(22)·(210) B = 260B = 1 EB).
- Выделение блоков группами (англ. multiblock allocation). ФС хранит информацию не только о местоположении свободных блоков, но и о количестве свободных блоков, расположенных друг за другом. При выделении места ФС находит такой фрагмент, в который данные можно записать без фрагментации. Использование этой техники позволяет снизить уровень фрагментации ФС.
- Отложенное выделение блоков (англ. delayed allocation). Выделение блоков для хранения содержимого файла происходит непосредственно перед записью на диск (например, при вызове sync), а не при вызове write. Из-за этого блоки можно выделять не по одному, а группами, что в свою очередь минимизирует фрагментацию и ускоряет процесс выделения блоков. С другой стороны, увеличивается риск потери данных в случае внезапного пропадания питания.
- Поднято ограничение на число вложенных каталогов. ext3 (без использования патчей) позволяла размещать в одном каталоге не более 32 000 подкаталогов (до 65 535, если изменить константы ядра).
- Резервирование inode’ов при создании каталога (англ. directory inodes reservation). При создании каталога резервируется несколько inode’ов. Впоследствии, при создании файлов в этом каталоге сначала используются зарезервированные inode’ы, и если таких не осталось, выполняется обычная процедура выделения inode.
- Размер inode. Размер inode (по умолчанию) увеличен с 128 (ext3) до 256 байтов. Это позволило реализовать перечисленное ниже.
- Временные метки с наносекундной точностью (англ. nanosecond timestamps). Точность временных меток, хранящихся в inode, повышена до наносекунд. Диапазон значений тоже расширен: у ext3 верхней границей хранимого времени было 18 января 2038 года, а у ext4 — 25 апреля 2514 года.
- Версия inode. В структуре inode появилось поле, хранящее номер версии. Номер может увеличиваться при каждом изменении inode, если ФС монтирована с опцией iversion. Это используется демонами сетевой файловой системы NFS версии 4 (NFSv4) для отслеживания изменений файлов.
- Хранение расширенных атрибутов в структуре inode (англ. extended attributes (EA) in inode). Производительность файловой системы повышается из-за исключения операции поиска атрибутов в каком-либо другом месте диска. К расширенным атрибутам относятся списки контроля доступа ACL, атрибуты SELinux и другие. Атрибуты, для которых недостаточно места в структуре inode, хранятся в отдельном блоке размером 4 KB. В будущем планируется снять это[какое?] ограничение.
- Вычисление контрольных сумм для записей журнала (англ. journal checksumming). Использование контрольных сумм для транзакций журнала позволяет быстрее находить и (иногда) исправлять ошибки системы после сбоя (при проверке целостности).
- Предварительное выделение (англ. persistent preallocation). Для выделения места на ext2 и ext3 приложению приходилось записывать в файл нулевые байты. В ext4 появилась возможность резервирования блоков. Теперь не нужно тратить время на запись нулевых байт, достаточно использовать системный вызов fallocate. fallocate выделяет для файла блоки и устанавливает для них флаг «заполнены нулевыми байтами». При чтении из файла приложение получит нулевые байты (так же, как при чтении sparse файла). При записи в файл флаг «заполнены нулевыми байтами» будет снят. В отличие sparse файлов запись в такой файл никогда не прервётся из-за нехватки свободного места.
- Дефрагментация без размонтирования (англ. online defragmentation). Дефрагментация выполняется утилитой e4defrag, поставляемой в составе пакета e2fsprogs с 2011 года.
- Неинициализированные блоки (англ. uninitialised groups). Возможность пока не реализована и предназначена для ускорения проверки целостности ФС утилитой fsck. Блоки, отмеченные как неиспользуемые, будут проверяться группами, и детальная проверка будет производится только если проверка группы показала наличие повреждений. Предполагается, что время проверки будет составлять от 1/2 до 1/10 от нынешнего в зависимости от способа размещения данных.[источник не указан 1531 день]
Преимущества и недостатки
Преимущества
- Так как, в системе нет журналирования, она может снизить интенсивность записи и износ ячеек флэш-памяти
- Высокая производительность
- Обладает отличной совместимостью, т. е. будет прочитана любой Linux-системой, большинством BSD-систем
Недостатки
Главный недостаток ext2 (и одна из причин демонстрации столь высокой производительности) заключается в том, что она не является журналируемой файловой системой. Он был устранён в файловой системе ext3 — следующей версии Extended File System, полностью совместимой с ext2. Но для ssd это скорее плюс, продлевает жизнь накопителя. Это основная причина, почему EXT2 до сих пор поддерживается в Anaconda и Ubiquity.