JFS (файловая система)
статьи первый раздел Возможно, придется переписать . ( Июль 2012 г. ) |
Разработчик(и) | IBM и др. |
---|---|
Полное имя | Журналируемая файловая система IBM |
Представлено | 1990 и 1999 годы с JFS1 в AIX 3.1 и JFS в OS/2 4.5. |
Идентификаторы разделов | 0x35 ( МБР ) |
Структуры | |
Содержимое каталога | B+ дерево |
Распределение файлов | Растровое изображение/ экстенты |
Пределы | |
Максимальный размер тома | 32 × 2 50 байты (32 ПиБ ) |
Максимальный размер файла | 4 × 2 50 байты (4 ПиБ) |
Макс нет. файлов | Предел не определен |
Максимальная длина имени файла | 255 байт |
Разрешенное имя файла персонажи | Любой Юникод , кроме NUL |
Функции | |
Даты записи | Модификация (mtime), модификация атрибута (ctime), доступ (atime) |
Разрешение даты | 1 нс |
Вилки | Да |
Файловая система разрешения | Разрешения Unix, ACL |
Прозрачный сжатие | Только в JFS1 на AIX |
Прозрачный шифрование | Нет (предоставляется на уровне блочного устройства) |
Дедупликация данных | Нет |
Другой | |
Поддерживается операционные системы | AIX, OS/2, Linux , eComStation , ArcaOS |
Журналируемая файловая система ( JFS ) — это 64-битная журналируемая файловая система, созданная IBM . Существуют версии для AIX , OS/2 , eComStation , ArcaOS и Linux операционных систем . Последний доступен как бесплатное программное обеспечение на условиях GNU General Public License (GPL). HP-UX имеет другую файловую систему под названием JFS, которая на самом деле является OEM-версией Veritas Software от VxFS .
В операционной системе AIX существует два поколения JFS, которые называются JFS ( JFS1 ) и JFS2 соответственно. [1]
от IBM JFS изначально была разработана для 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] Этот выпуск исходных кодов также послужил основой для отчета об обратной версии JFS с открытым исходным кодом для OS/2.
Параллельно с этими усилиями некоторые члены группы разработчиков JFS вернулись в группу разработки операционных систем AIX в 1997 году и начали переносить эту новую исходную базу JFS в операционную систему AIX. вторая журналируемая файловая система — Enhanced Journaled File System (JFS2) . В мае 2001 года для AIX 5L стала доступна [1] [3]
В начале 2008 года высказывались предположения, что IBM больше не заинтересована в поддержке JFS и поэтому ее не следует использовать в производственных средах. [5] Однако Дэйв Клейкамп, член Технологического центра IBM Linux и основной группы JFS, [4] пояснили, что они по-прежнему следят за изменениями в ядре Linux и пытаются исправить потенциальные программные ошибки . Далее он добавил, что некоторые дистрибутивы ожидают от них большего объема ресурсов и предпочитают не поддерживать файловую систему. [6]
В 2012 году TRIM поддержка команды для твердотельных накопителей . в JFS была добавлена [7]
Функции
[ редактировать ]JFS поддерживает следующие функции. [8] [9]
Журнал
[ редактировать ]JFS — это журналируемая файловая система . Вместо добавления журналирования в качестве дополнительной функции, как в файловой системе ext3 , оно было реализовано с самого начала. Размер журнала может достигать 128 МБ. JFS регистрирует только метаданные, а это означает, что метаданные останутся согласованными, но пользовательские файлы могут быть повреждены после сбоя или отключения питания. Журналирование JFS похоже на XFS тем, что журналируется только часть индексного дескриптора . [10]
B+ дерево
[ редактировать ]JFS использует дерево B+ для ускорения поиска в каталогах. JFS может хранить 8 записей каталога в индексном дескрипторе каталога перед перемещением записей в дерево B+. JFS также индексирует экстенты в дереве B+.
Динамическое распределение индексных дескрипторов
[ редактировать ]JFS динамически выделяет место для дисковых индексных дескрипторов по мере необходимости. Каждый индексный дескриптор имеет размер 512 байт. 32 индексных дескриптора выделены на экстенте размером 16 КБ.
Экстенты
[ редактировать ]JFS выделяет файлы как экстенты . Экстент представляет собой последовательность агрегатных блоков переменной длины. Экстент может находиться в нескольких группах размещения . Чтобы решить эту проблему, экстенты индексируются в дереве B+ для повышения производительности при обнаружении местоположений экстентов.
Сжатие
[ редактировать ]Сжатие поддерживается только в JFS1 на AIX и использует вариант алгоритма LZ . Из-за высокой загрузки ЦП свободного пространства и повышенной фрагментации сжатие не рекомендуется использовать только на одной пользовательской рабочей станции или в автономных областях резервного копирования .
Параллельный ввод/вывод (CIO)
[ редактировать ]JFS обычно применяет к файлам блокировку с общим доступом для чтения и исключительной записью, что позволяет избежать несогласованности данных, но налагает сериализацию записи на уровне файла. Опция CIO отключает эту блокировку. Такие приложения, как реляционные базы данных, которые сами поддерживают согласованность данных, могут использовать эту опцию, чтобы в значительной степени устранить накладные расходы файловой системы. [11]
Группы распределения
[ редактировать ]JFS использует группы размещения. Группы распределения делят совокупное пространство на фрагменты. Это позволяет JFS использовать политики распределения ресурсов для достижения высокой производительности ввода-вывода. Первая политика — попытаться кластеризовать дисковые блоки и дисковые индексные дескрипторы для связанных данных в одной группе доступности, чтобы добиться хорошей локальности диска. Вторая политика заключается в распределении несвязанных данных по файловой системе в попытке минимизировать фрагментацию свободного пространства. При наличии открытого файла JFS заблокирует группу доступности, в которой находится файл, и позволит только открытому файлу расти. Это уменьшает фрагментацию, поскольку только открытый файл может записывать в группу доступности.
Суперблоки
[ редактировать ]Суперблок хранит информацию обо всей файловой системе и включает в себя следующие поля:
- Размер файловой системы
- Количество блоков данных в файловой системе
- Флаг, указывающий состояние файловой системы
- Размеры группы распределения
- Размер блока файловой системы
В Linux
[ редактировать ]В операционной системе Linux JFS поддерживается с помощью модуля ядра (начиная с версии ядра 2.4.18pre9-ac4 ) и дополнительных утилит пользовательского пространства, упакованных под названием JFSutils . Большинство дистрибутивов Linux поддерживают JFS, если только она не удалена специально из-за ограничений места, например, на живых компакт-дисках . [ нужна ссылка ]
Согласно тестам доступных файловых систем для Linux, JFS является быстрой и надежной, с неизменно хорошей производительностью при различных видах нагрузки. [12]
Фактическое использование JFS в Linux встречается редко, поскольку ext4 обычно обеспечивает более высокую производительность. [ нужна ссылка ] . JFS действительно играет нишу в Linux: в отличие от большинства других файловых систем Linux она предлагает опцию монтирования без учета регистра. [13]
Существуют также потенциальные проблемы с JFS, такие как реализация журнальных записей. Их можно отложить до тех пор, пока не появится другой триггер — потенциально на неопределенный срок, что может привести к потере данных в течение теоретически бесконечного периода времени. [14]
См. также
[ редактировать ]- Журналируемая файловая система
- Список файловых систем
- Сравнение файловых систем
- fsck — утилита проверки файловой системы
Ссылки
[ редактировать ]- ^ Jump up to: а б с «Мини-часто задаваемые вопросы по JFS» . Проект JFS для Linux.
- ^ «IBM JFS и JFS2» . ИБМ.
- ^ Jump up to: а б с «Интервью с людьми, стоящими за JFS, ReiserFS и XFS» .
- ^ Jump up to: а б «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 г.
- ^ Дэвид Клейкамп. «Журнал ЖФС» . ОСДИР. Архивировано из оригинала 3 марта 2016 года . Проверено 7 июля 2008 г.
- ^ «Повышение производительности базы данных с помощью параллельного ввода-вывода AIX — технический документ» (PDF) . IBM.com . ИБМ .
- ^ «Сравнение 9-сторонней файловой системы с SSD в ядре Linux 3.17» . Фороникс.com . Проверено 7 июля 2020 г.
- ^ «jfs_mkfs: создать раздел в формате JFS — Man Pages Linux (8)» . SysTutorials.com . Проверено 7 июля 2020 г.
- ^ Анализ и эволюция журналируемых файловых систем - В. Прабхакаран и другие , 2013-06 гг.
Внешние ссылки
[ редактировать ]- Веб-сайт проекта JFS для Linux
- Структура файловой системы JFS1 , IBM
- Структура файловой системы JFS2 , IBM
- JFSRec , консольная программа, выполняющая извлечение файлов и каталогов только для чтения из поврежденной файловой системы JFS.