JFS (файловая система)

Файловая система

JFS
Разработчик(и)IBM и др.
Полное имяЖурналируемая файловая система IBM
Введено1990 и 1999 с JFS1 в AIX 3.1 и JFS в OS/2 4.5
Идентификаторы разделов0x35 ( МБР )
Структуры
Содержимое каталогаB+ дерево
Распределение файловРастровое изображение/ экстенты
Пределы
Максимальный размер тома32 × 2 50 байт (32 ПиБ )
Максимальный размер файла4 × 2 50 байт (4 ПиБ)
Макс . кол- во файловОграничение не определено
Максимальная длина имени файла255 байт
Допустимые
символы в имени файла
Любой Unicode, кроме NUL
Функции
Даты записаныМодификация (mtime), модификация атрибута (ctime), доступ (atime)
Разрешение даты1 нс
ВилкиДа

Разрешения файловой системы
Разрешения Unix, ACL
Прозрачное
сжатие
Только в JFS1 на AIX
Прозрачное
шифрование
Нет (предоставляется на уровне блочного устройства)
Дедупликация данныхНет
Другой
Поддерживаемые
операционные системы
AIX, OS/2, Linux , eComStation , ArcaOS

Journaled File System ( JFS ) — это 64-битная журналируемая файловая система, созданная IBM . Существуют версии для операционных систем AIX , OS/2 , eComStation , ArcaOS и Linux . Последняя доступна как свободное программное обеспечение на условиях GNU General Public License (GPL). HP-UX имеет другую файловую систему под названием JFS, которая на самом деле является OEM-версией VxFS от Veritas Software .

В операционной системе AIX существует два поколения JFS, которые называются JFS ( JFS1 ) и JFS2 соответственно. [1]

JFS от IBM изначально была разработана для 32-битных систем. JFS2 была разработана для 64-битных систем. [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 for eBusiness в апреле 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 Operating System Development Group в 1997 году и начала переносить эту новую исходную базу JFS в операционную систему AIX. В мае 2001 года вторая журналируемая файловая система, Enhanced Journaled File System (JFS2) , стала доступна для AIX 5L. [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 в том, что оно журналирует только части inode . [ 10]

B+ дерево

JFS использует дерево B+ для ускорения поиска в каталогах. JFS может хранить 8 записей каталога в inode каталога перед перемещением записей в дерево B+. JFS также индексирует экстенты в дереве B+.

Динамическое распределение инодов

JFS динамически выделяет место для дисковых инодов по мере необходимости. Каждый инод составляет 512 байт. 32 инода выделяются на 16 КБ экстенте.

Экстенты

JFS выделяет файлы как экстент . Экстент — это последовательность блоков Aggregate переменной длины. Экстент может быть расположен в нескольких группах распределения . Для решения этой проблемы экстенты индексируются в дереве B+ для лучшей производительности при поиске местоположений экстентов.

Сжатие

Сжатие поддерживается только в JFS1 на AIX и использует вариацию алгоритма LZ . Из-за высокой загрузки ЦП и повышенной фрагментации свободного пространства сжатие не рекомендуется для использования где-либо, кроме как на однопользовательской рабочей станции или в автономных резервных областях.

Параллельный ввод/вывод (CIO)

JFS обычно применяет к файлам блокировку read-shared, write-exclusive, что позволяет избежать несогласованности данных, но навязывает сериализацию записи на уровне файла. Параметр CIO отключает эту блокировку. Такие приложения, как реляционные базы данных, которые сами поддерживают согласованность данных, могут использовать эту опцию, чтобы в значительной степени исключить накладные расходы файловой системы. [11]

Группы распределения

JFS использует группы распределения. Группы распределения делят совокупное пространство на фрагменты. Это позволяет JFS использовать политики распределения ресурсов для достижения высокой производительности ввода-вывода. Первая политика заключается в попытке кластеризации блоков диска и инодов диска для связанных данных в одной и той же группе доступности для достижения хорошей локальности диска. Вторая политика заключается в распределении несвязанных данных по всей файловой системе в попытке минимизировать фрагментацию свободного пространства. Когда есть открытый файл, JFS блокирует группу доступности, в которой находится файл, и позволяет увеличиваться только открытому файлу. Это снижает фрагментацию, поскольку только открытый файл может записывать в группу доступности.

Суперблоки

Суперблок хранит информацию обо всей файловой системе и включает в себя следующие поля:

  • Размер файловой системы
  • Количество блоков данных в файловой системе
  • Флаг, указывающий состояние файловой системы.
  • Размеры групп распределения
  • Размер блока файловой системы

На Линуксе

В операционной системе Linux JFS поддерживается модулем ядра (начиная с версии ядра 2.4.18pre9-ac4 ) и дополнительными утилитами пользовательского пространства , упакованными под именем JFSutils . Большинство дистрибутивов Linux поддерживают JFS, если только он специально не удален из-за ограничений по пространству, например, на Live CD . [ необходима цитата ]

Согласно тестам доступных файловых систем для Linux, JFS является быстрой и надежной, с неизменно хорошей производительностью при различных видах нагрузки. [12]

Фактическое использование JFS в Linux встречается редко, поскольку ext4 обычно обеспечивает лучшую производительность [ требуется ссылка ] . JFS играет в Linux свою нишу: она предлагает возможность монтирования без учета регистра, в отличие от большинства других файловых систем Linux. [13]

Также есть потенциальные проблемы с JFS, такие как реализация журнальных записей. Они могут быть отложены до тех пор, пока не появится другой триггер — потенциально на неопределенный срок, что может привести к потере данных в течение теоретически бесконечного периода времени. [14]

Смотрите также

Ссылки

  1. ^ abc "Мини-FAQ по JFS". Проект JFS для Linux.
  2. ^ "IBM JFS и JFS2". IBM.
  3. ^ abc «Интервью с людьми, стоящими за JFS, ReiserFS и XFS».
  4. ^ ab "JFS для Linux". JFS.SourceForge.net . Получено 26 августа 2020 г. .
  5. ^ "Re: which to use: ext3, JFS, XFS, ReiserFS?". Архивировано из оригинала 3 марта 2016 г. Получено 31 марта 2008 г.
  6. ^ SourceForge.net: обсуждение jfs
  7. ^ «Поддержка TRIM для файловой системы JFS».
  8. ^ "Обзор JFS". Стив Бест, IBM. Архивировано из оригинала 29 января 2008 г. Получено 9 января 2008 г.
  9. ^ "JFS Layout" (PDF) . Стив Бест, IBM . Получено 1 мая 2008 г. .
  10. ^ Дэвид Клейкамп. "JFS journal". OSDIR. Архивировано из оригинала 3 марта 2016 г. Получено 7 июля 2008 г.
  11. ^ «Улучшение производительности базы данных с помощью параллельного ввода-вывода AIX — Технический документ» (PDF) . IBM.com . IBM .
  12. ^ "Сравнение 9-канальной файловой системы с SSD на ядре Linux 3.17". Phoronix.com . Получено 7 июля 2020 г. .
  13. ^ "jfs_mkfs: создать раздел, отформатированный в JFS - Linux Man Pages (8)". SysTutorials.com . Получено 7 июля 2020 г. .
  14. ^ Анализ и эволюция журналируемых файловых систем - В. Прабхакаран и др. 2013-06
  • Сайт проекта JFS для Linux
  • Структура файловой системы JFS1, IBM
  • Структура файловой системы JFS2, IBM
  • JFSRec — консольная программа, которая выполняет извлечение файлов и каталогов из поврежденной файловой системы JFS только для чтения.
Взято с "https://en.wikipedia.org/w/index.php?title=JFS_(файловая_система)&oldid=1246686627"