Андрей Пешеходов
JFS, файловая система последнего поколения от IBM, спроектирована стройно
и четко, алгоритмы обработки данных и метаданных отличаются высокой степенью
оптимизации. Но показатели ее производительности не впечатляют. Попробуем
разобраться, в чем же дело.
Истоки технологии JFS
IBM представила свою файловую систему для UNIX как JFS с первым релизом AIX
v3.1 в 1990 году. Эта ФС, известная сейчас как JFS1, была основной для AIX в
течение 10 лет. Пять лет спустя была начата работа по ее усовершенствованию с
целью улучшения масштабируемости и реализации эффективной поддержки SMP-систем.
Также ставилась задача улучшения переносимости ФС для обеспечения ее портирования
и в другие операционные системы (код JFS1 был очень тесно привязан к менеджеру
памяти AIX, и вряд ли смог бы эффективно работать в OS/2 или Linux).
Новая Journaled File System, на которой основана
Linux-версия JFS, была впервые представлена с OS/2 Warp Server в апреле 1999
года, после нескольких лет проектирования и тестирования. В OS/2 Warp Client
она была включена в октябре 2000 года. Параллельно с этими усилиями в 1997 году
часть разработчиков JFS вернулась в команду сопровождения AIX и занялась
адаптацией кода новой JFS к этой ОС. К маю 2001 года Enhanced Journaled File System
(называемая JFS2) была доступна для AIX 5L. В декабре 1999 года был сделан срез
(snapshot) оригинального дерева кода JFS, и началась работа по ее переносу в Linux.
Портирование
К декабрю 1999 года уже существовали 3 перспективные ФС, только
разрабатываемые или переносимые в Linux. ext2 была в процессе добавления журналирования
(ext3), SGI начала перенос своей файловой системы XFS с IRIX, и Hans Reiser
разрабатывал reiserfs. Ни одна из указанных ФС не была полностью функциональна
в Linux в 1999 году, и IBM решила, что JFS является достаточно сильной
технологией и добавит вес набирающему силу Linux.
Программисты из IBM посоветовались с основными
разработчиками файловых систем Linux на счет возможности добавления еще одной журналируемой
ФС. Одно из основных положений философии Linux: выбор – это хорошо, поэтому
идея еще одной ФС была встречена с энтузиазмом.
IBM воспользовалась поддержкой сообщества Open Source.
Команда JFS последовала совету сообщества: «release early and release often»
(дословно: «выпустить рано и выпускать часто»), и привлекла множество сторонних
разработчиков к переносу JFS в Linux. Всего через 3 месяца после начала работ
(в феврале 2000) был выпущен первый Linux-релиз JFS. Он включал в себя функции mount/unmount
и поддержку программы ls.
Рассмотрим особенности устройства и реализации JFS более подробно.