Журналируемая файловая система ( JFS ) - это 64-битная журналируемая файловая система, созданная IBM . Существуют версии для операционных систем AIX , OS / 2 , eComStation , ArcaOS и Linux . Последнее доступно как бесплатное программное обеспечение в соответствии с условиями Стандартной общественной лицензии GNU (GPL). HP-UX имеет другую, другую файловую систему с именем JFS , что на самом деле версия ОЕМ Veritas Software «s VxFS .
Разработчики) | IBM et al. |
---|---|
ФИО | Журналируемая файловая система IBM |
Введено | 1990 и 1999 с JFS1 в AIX 3.1 и JFS в OS / 2 4.5 |
Идентификатор раздела | 0x35 ( MBR ) |
Структуры | |
Содержимое каталога | B + дерево |
Размещение файлов | Растровое изображение / экстенты |
Пределы | |
Максимум. размер тома | 32 ПБ ( 32 × 1024 5 байтов ) |
Максимум. размер файла | 4 ПБ ( 4 × 1024 5 байтов ) |
Максимум. количество файлов | Лимит не определен |
Максимум. длина имени файла | 255 байт |
Допустимые символы в именах файлов | Любой Unicode кроме NUL |
Функции | |
Даты записаны | Модификация (mtime), модификация атрибута (ctime), доступ (atime) |
Разрешение даты | 1 нс |
Вилки | да |
Разрешения файловой системы | POSIX , ACL |
Прозрачное сжатие | Только в JFS1 на AIX |
Прозрачное шифрование | Нет (предоставляется на уровне блочного устройства) |
Дедупликация данных | Нет |
Другой | |
Поддерживаемые операционные системы | AIX, OS / 2, Linux , eComStation , ArcaOS |
В операционной системе AIX существует два поколения файловой системы JFS, которые называются JFS ( JFS1 ) и JFS2 соответственно. [1] [2] В других операционных системах, таких как OS / 2 и Linux, существует только второе поколение, которое называется просто JFS . [3] Это не следует путать с JFS в AIX, которая фактически относится к JFS1.
История
IBM представила JFS в первом выпуске AIX версии 3.1 в феврале 1990 года. Эта файловая система, теперь называемая JFS1 в AIX , была основной файловой системой для AIX в течение следующего десятилетия и была установлена в тысячах или миллионах клиентских систем AIX. Исторически файловая система JFS1 очень тесно связана с менеджером памяти AIX [1], который является типичным дизайном файловой системы, поддерживающей только одну операционную систему. JFS была одна из первых файловых систем для поддержки журналирования
В 1995 году началась работа по усовершенствованию файловой системы, чтобы она была более масштабируемой и поддерживала машины с более чем одним процессором. Другой целью было создание более переносимой файловой системы, способной работать в нескольких операционных системах. После нескольких лет разработки, кодирования и тестирования новая JFS была сначала поставлена в OS / 2 Warp Server для электронного бизнеса в апреле 1999 года, а затем в OS / 2 Warp Client в октябре 2000 года. В декабре 1999 года был сделан снимок оригинала. Исходный код OS / 2 JFS был предоставлен сообществу разработчиков открытого исходного кода, и началась работа по переносу JFS в Linux . Первый стабильный выпуск JFS для Linux появился в июне 2001 года. [3] Проект JFS для Linux поддерживается небольшой группой участников, известной как JFS Core Team . [4] Этот выпуск исходных кодов также послужил основой для повторного переноса на OS / 2 JFS с открытым исходным кодом.
Параллельно с этим некоторые из команды разработчиков JFS вернулись в группу разработки операционных систем AIX в 1997 году и начали перенос этой новой исходной базы JFS в операционную систему AIX. В мае 2001 года для AIX 5L стала доступна вторая журналируемая файловая система, расширенная журналируемая файловая система (JFS2) . [1] [3]
В начале 2008 года было предположение, что IBM больше не заинтересована в поддержке JFS и, следовательно, не должна использоваться в производственных средах. [5] Однако Дэйв Клейкамп, член IBM Linux Technology Center и JFS Core Team, [4] объяснил, что они все еще следят за изменениями в ядре Linux и пытаются исправить потенциальные программные ошибки . Далее он добавил, что некоторые дистрибутивы ожидают от них большего объема ресурсов и не поддерживают файловую систему. [6]
В 2012 году в JFS была добавлена поддержка команд TRIM для твердотельных накопителей . [7]
Функции
JFS поддерживает следующие функции. [8] [9]
Журнал
JFS - это файловая система с журналированием . Вместо того, чтобы добавлять ведение журнала в качестве надстройки, как в файловой системе ext3 , оно было реализовано с самого начала. Журнал может быть до 128 МБ. JFS регистрирует только метаданные, что означает, что метаданные останутся согласованными, но пользовательские файлы могут быть повреждены после сбоя или потери питания. Ведение журнала JFS похоже на XFS в том, что журналируются только части индексного дескриптора . [10]
B + дерево
JFS использует дерево B + для ускорения поиска в каталогах. JFS может хранить 8 записей каталога в индексном дескрипторе каталога перед перемещением записей в дерево B +. JFS также индексирует экстенты в дереве B +.
Динамическое размещение inode
JFS динамически выделяет место для дескрипторов диска по мере необходимости. Каждый индексный дескриптор имеет размер 512 байт. 32 inode размещены на экстенте размером 16 Кбайт.
Экстенты
JFS выделяет файлы как экстент . Экстент - это последовательность агрегированных блоков переменной длины. Экстент может находиться в нескольких группах размещения . Чтобы решить эту проблему, экстенты индексируются в дереве B + для повышения производительности при поиске местоположений экстентов.
Сжатие
Сжатие поддерживается только в JFS1 в AIX и использует вариант алгоритма LZ . Из-за высокой загрузки ЦП и повышенной фрагментации свободного пространства сжатие не рекомендуется использовать, кроме как на одной пользовательской рабочей станции или в автономных областях резервного копирования . [2] [11]
Параллельный ввод / вывод (CIO)
JFS обычно применяет к файлам блокировку с общим доступом для чтения и исключительной записи, что позволяет избежать несогласованности данных, но требует сериализации записи на уровне файла. Параметр CIO отключает эту блокировку. Такие приложения, как реляционные базы данных, которые сами поддерживают согласованность данных, могут использовать эту опцию, чтобы в значительной степени устранить накладные расходы файловой системы. [12]
Группы размещения
JFS использует группы распределения. Группы размещения делят совокупное пространство на части. Это позволяет JFS использовать политики выделения ресурсов для достижения высокой производительности ввода-вывода. Первая политика - попытаться сгруппировать дисковые блоки и дескрипторы диска для связанных данных в одной и той же группе доступности, чтобы добиться хорошей локальности для диска. Вторая политика заключается в распределении несвязанных данных по файловой системе в попытке минимизировать фрагментацию свободного пространства. Когда есть открытый файл, JFS заблокирует AG, в котором находится файл, и позволит только открытому файлу расти. Это уменьшает фрагментацию, поскольку только открытый файл может записывать в AG.
Суперблоки
Суперблок хранит информацию о всей файловой системе и включает в себя следующие поля:
- Размер файловой системы
- Количество блоков данных в файловой системе
- Флаг, указывающий состояние файловой системы
- Размеры группы размещения
- Размер блока файловой системы
В Linux
В операционной системе Linux JFS поддерживается модулем ядра (начиная с версии ядра 2.4.18pre9-ac4 ) и дополнительными утилитами пользовательского пространства, упакованными под именем JFSutils . Большинство дистрибутивов Linux поддерживают JFS, если она специально не удалена из-за ограничений по объему, например, на Live CD . [ необходима цитата ]
Согласно тестам доступных файловых систем для Linux, JFS является быстрой и надежной, с неизменно хорошей производительностью при различных видах нагрузки. [13]
Фактическое использование JFS в Linux встречается редко, поскольку ext4 обычно обеспечивает лучшую производительность [ необходима цитата ] . JFS действительно играет свою нишевую роль в Linux: он предлагает вариант монтирования без учета регистра, в отличие от большинства других файловых систем Linux. [14]
Есть также потенциальные проблемы с JFS, такие как реализация записи журнала. Их можно отложить до тех пор, пока не появится другой триггер - потенциально на неопределенный срок, что может привести к потере данных в течение теоретически бесконечного периода времени. [15]
Смотрите также
- Список файловых систем
- Сравнение файловых систем
- fsck - утилита проверки файловой системы
Рекомендации
- ^ a b c «Мини-FAQ по JFS» . Проект JFS для Linux.
- ^ а б «Сравнение JFS1 и JFS2 в AIX» . IBM.
- ^ а б в «Интервью с людьми, стоящими за JFS, ReiserFS и XFS» .
- ^ а б «JFS для Linux» . JFS.SourceForge.net . Проверено 26 августа 2020 года .
- ^ "Re: что использовать: ext3, JFS, XFS, ReiserFS?" . Архивировано из оригинала 3 марта 2016 года . Проверено 31 марта 2008 года .
- ^ SourceForge.net: jfs-обсуждение
- ^ «Поддержка TRIM для файловой системы JFS» .
- ^ «Обзор JFS» . Стив Бест, IBM. Архивировано из оригинала на 29 января 2008 года . Проверено 9 января 2008 года .
- ^ «Макет JFS» (PDF) . Стив Бест, IBM . Проверено 1 мая 2008 года .
- ^ Дэвид Клейкамп. «Журнал JFS» . OSDIR. Архивировано из оригинала 3 марта 2016 года . Проверено 7 июля 2008 года .
- ^ «AIX Wiki: JFS» . IBM. Архивировано из оригинального 28 мая 2006 года.
- ^ «Повышение производительности базы данных с помощью AIX Concurrent I / O - White Paper» (PDF) . IBM.com . IBM .
- ^ «9-стороннее сравнение файловой системы с SSD на ядре Linux 3.17» . Phoronix.com . Проверено 7 июля 2020 года .
- ^ "jfs_mkfs: создать раздел в формате JFS - Linux Man Pages (8)" . SysTutorials.com . Проверено 7 июля 2020 года .
- ^ Анализ и эволюция журнальных файловых систем - В. Прабхакаран и другие 2013-06
Внешние ссылки
- Веб-сайт проекта JFS для Linux
- Схема файловой системы JFS1 , IBM
- Схема файловой системы JFS2 , IBM
- JFSRec , консольная программа, которая выполняет извлечение файлов и каталогов только для чтения из поврежденной файловой системы JFS.