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

30 дней с JFS

Оригинал: 30 days with JFS
Автор: Keith Winston
Дата: 14 сентября 2007
Перевод: Александр Тарасов aka oioki
Дата перевода: 1 октября 2007
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!

JFS (Journaled File System) — малоизвестная файловая система, исходный код которой открыт IBM в 1999 и включен в исходный код ядра Linux начиная с 2002 года. JFS родилась внутри IBM как стандартная файловая система для линейки AIX Unix-серверов. Позже была портирована на OS/2. Несмотря на хорошую родословную, JFS не приобрела повсеместной популярности, в отличие от ext2/3 и ReiserFS. Чтобы узнать больше о JFS, я установил ее в качестве корневой файловой системы. Обнаружилось, что JFS — достойная альтернатива более известным файловым системам.

Чтобы попробовать JFS, я установил Slackware 12 на мой ноутбук и выбрал JFS в качестве основной файловой системы. Я не выполнял каких-либо особых разбиений, а просто создал один большой раздел для всего. При установке не произошло ничего достойного внимания, и система нормально загрузилась посредством GRUB. Не все дистрибутивы предлагают JFS в качестве файловой системы, и некоторые не имеют поддержки JFS в предлагаемых скомпилированных ядрах. Пользователи Fedora Core и SUSE имеют возможность использовать JFS, но по умолчанию ставится ext3. На дистрибутивах Slackware, Debian, Ubuntu и их производных также можно попробовать JFS.

Первое, что бросилось в глаза — отсутствие каталога lost+found — пережитка других файловых систем.

JFS — полностью 64-битная файловая система. При обычном блоке размером 4 Кб возможно создание файловой системы до 4 Петабайт (размер будет меньше, если выбрать меньшие размеры блоков). Наименьшая поддерживаемая система — 16 Мб. Журнал транзакций JFS по умолчанию имеет размер в 0.4% от общего размера, округленный до мегабайт. Максимальный размер журнала — 32 Мб. Интересная особенность разметки диска — выделенное рабочее место для fsck, небольшая область расположенная внутри файловой системы, предназначенная для учета распределения блоков при загрузке (если для учета большой файловой системы на этом этапе недостаточно памяти).

JFS динамически выделяет место для дисковых inode, освобождая место, когда оно больше не требуется. Это устраняет возможность нехватки inode из-за большого числа мелких файлов. На данный момент JFS — единственная файловая система в ядре, которая поддерживает эту функцию. Из соображений производительности и эффективности содержимое мелких каталогов хранится в inode самого каталога. Внутри inode может храниться до 8 записей, включая записи для текущего (.) и родительского (..) каталогов. Большие каталоги для быстрого чтения используют B+-деревья с ключом по имени. JFS использует экстенты для выделения блоков файлам, что благоприятно сказывается на использовании места на диске при увеличении размеров файлов. Эта функция также доступна в XFS, и является нововведением в ext4.

JFS поддерживает как редкие, так и плотные файлы. Редкие файлы позволяют записывать данные в произвольные области без записи в перекрывающиеся блоки. Такие файлы полезны в приложениях, которые требуют большого логического пространства, но используют лишь малую его часть. При работе с плотными файлами блоки выделяются, чтобы полностью заполнить размер файла, независимо от того, записываются данные или нет.

В дополнение к стандартным правам, JFS поддерживает немного более расширенные атрибуты, такие как «неизменный» (i, immutable) и «лишь для присоединения» (append-only, a). Эти атрибуты просматриваются и устанавливаются с помощью программ lsattr и chattr. Мне не удалось найти полноценной информации по поддержке JFS списков прав доступа (Access Control List, ACL).

Журналирование

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

Вот список операций файловой системы, которые заносятся в журнал JFS:

  • Создание файла (create)
  • Создание ссылки на файл (link)
  • Создание каталога (mkdir)
  • Создание узла (node) (mknod)
  • Удаление файла (unlink)
  • Переименование (rename)
  • Удаление каталога (rmdir)
  • Создание символической ссылки (symlink)
  • Усечение обычного файла

Утилиты

JFS предоставляет набор утилит для управления файловой системой. Для их использования нужно использовать учетную запись root.

Программа Описание
jfs_debugfs Редактор файловой системы JFS в виде оболочки. Позволяет изменять ACL, uid/gid, режимы, временные метки и т.п. Возможно также изменять данные на диске, но только путем ввода шестнадцатеричных строк — не самый эффективный способ редактирования файла.
jfs_fsck Пересматривает журнал транзакций JFS, проверяет и исправляет ошибки. Можно запускать программу лишь на отмонтированных файловых системах или доступных лишь для чтения. Запускается автоматически при загрузке системы.
jfs_fscklog Извлекает служебный журнал fsck JFS в файл. jfs_fscklog -e /dev/hda6 извлекает бинарный журнал в файл fscklog.new . Для просмотра используйте jfs_fscklog -d fscklog.new .
jfs_logdump Сохраняет журнал в текстовый файл. В итоговом файле будут указаны данные каждой транзакции.
jfs_mkfs Создает раздел, форматированный в JFS. Для создания внешнего журнала используйте ключ -j устройство (работает начиная с версии 1.0.18).
jfs_tune Настраивает параметры файловой системы JFS. Однако я не нашел параметры, которые могли бы ощутимо увеличить производительность. Ключ -l выводит информацию о суперблоке.

Дамп суперблока выглядит примерно так:

Испытание на устойчивость

Белая бумага и man-страницы не идут ни в какое сравнение с жесткими условиями серверной. Для проверки способности к восстановлению у JFS, я начал ронять систему (принудительное выключение компьютера) при высокой нагрузке. Я повторял каждое испытание дважды, чтобы убедиться в достоверности результатов.

Нагрузка во время испытания Восстановление
Консоль (без X), в ней запущен текстовый редактор с открытым файлом Около 2 секунд на пересмотр журнала. Несохраненные изменения потеряны, но файл оказался в порядке.
X window с запущенными KDE, GIMP, Nvu и текстовым редактором в окне xterm, все с открытыми файлами Около 2 секунд на пересмотр журнала. Все открытые файлы в порядке, несохраненные изменения пропали.
X window с запущенными KDE, GIMP, Nvu и текстовым редактором, все с открытыми файлами. В добавок запущен скрипт, вставляющий записи в таблицу MySQL (ISAM). Скрипт представляет собой бесконечный цикл, перед падением системы он работал несколько минут, чтобы записи успели записаться на диск. Около 3 секунд на пересмотр журнала. Все открытые файлы в порядке, база данных осталась целостной, несколько тысяч записей вставлено, но временная метка файла таблицы откатилась на 1 минуту.

Во всех случаях при загрузке системы появлялось сообщение: Во время аварийных проверок я не заметил повреждений файловой системы, а наибольшее время пересмотра журнала составило около 3 секунд.

Заключение

После 30 дней избиений я полностью уверен в JFS, теперь я могу доверять свои данные JFS. JFS может быть не столь известна, как другие файловые системы, но это хороший выбор в большом списке файловых систем для Linux.

Обсуждение статьи на LORe . Там, кстати, приводятся ссылки на несколько статей, в которых сравниваются разные файловые системы.

Источник

Файловые системы в Linux

XFS — начало разработки 1993 год, фирма Silicon Graphics, в мае 2000 года предстала в GNU GPL, для пользователей большинства Linux систем стала доступна в 2001-2002 гг. Отличительная черта системы — прекрасная поддержка больших файлов и файловых томов, 8 эксбибайт — 1 байт (8*2 60 -1 байт) для 64-х битных систем. Ко всему прочему обладает другими немаловажными особенностями — непрерывные области дискового пространства, задержка выделения пространства и онлайн дефрагментация. Является одной из старейших журналируемых файловых систем для *nix, и содержит в себе наиболее отлаженный, в этом контексте, исходный код.

ReiserFS (Reiser3) — одна из первых журналируемых файловых систем под Linux, разработана Namesys. Имеет некоторые врождённые головные боли, но в целом неплохая система, ведущая отсчёт дней своих с 2001 года. Оговорюсь, что смысл журналируемых систем заключается в дисковых транзакциях, которые последовательно пишутся в специальную зону диска (журнал, он же лог), перед тем как данные попадают в конечные точки файловой системы. Максимальный объём тома для этой системы равен 16 тебибайт (16*2 40 байт).

JFS (Journaled File System) — файловая система, детище IBM, явившееся миру в далёком 1990 году для ОС AIX (Advanced Interactive eXecutive). В виде первого стабильного релиза, для пользователей Linux, система стала доступна в 2001 году. Из плюсов системы — неплохая масштабируемость. Из минусов — не особо активная поддержка на протяжении всего жизненного цикла. Максимальный рамер тома 32 пэбибайта (32*2 50 байт).

ext (extended filesystem) — появилась в апреле 1992 года, это была первая файловая система, изготовленная специально под нужды Linux ОС. Разработана Remy Card с целью преодолеть ограничения файловой системы Minix.

ext2 (second extended file system) — была разработана Remy Card в 1993 году. Не журналируемая файловая система, это был основной её недостаток, который исправит ext3.

ext3 (third extended filesystem) — по сути расширение исконной для Linux ext2, способное к журналированию. Разработана Стивеном Твиди (Stephen Tweedie) в 1999 году, включена в основное ядро Linux в ноябре 2001 года. На фоне других своих сослуживцев обладает более скромным размером пространства, до 4 тебибайт (4*2 40 байт) для 32-х разрядных систем. На данный момент является наиболее стабильной и поддерживаемой файловой системой в среде Linux.

Reiser4 — первая попытка создать файловую систему нового поколения для Linux. Впервые представленная в 2004 году, система включает в себя такие передовые технологии как транзакции, задержка выделения пространства, а так же встроенная возможность кодирования и сжатия данных. Ханс Рейзер (Hans Reiser), главный разработчик системы, рекламировал использовать своё детище непосредственно как БД с улучшенными метаданными. После того, как Ханс Рейзер был осуждён за убийство в 2008 году, дальнейшая судьба системы стала сомнительной.

ext4 — попытка создать 64-х битную ext3 способную поддерживать больший размер файловой системы (1 эксбибайт). Позже добавились возможности — непрерывные области дискового пространства, задержка выделения пространства, онлайн дефрагментация и прочие. Обеспечивается прямая совместимость с системой ext3 и ограниченная обратная совместимость при недоступной способности к непрерывным областям дискового пространства.

UPD: Btrfs (B-tree FS или Butter FS) — проект изначально начатый компанией Oracle, впоследствии поддержанный большинством Linux систем. Многие считаеют систему эдаким ответом на ZFS. Ключевыми особенностями данной файловой системы являются технологии: copy-on-write, позволяющая сделать снимки областей диска (снапшоты), которые могут пригодится для последующего восстановления; контроль за целостностью данных и метаданных (с повышенной гарантией целостности); сжатие данных; оптимизированный режим для накопителей SSD (задаётся при монтировании) и прочие. Немаловажным фактором является возможность перехода с ext3 на Btrfs. С августа 2008 года данная система выпускается под GNU GPL.

Tux2 — известная, но так и не анонсированная публично файловая система. Создатель Дэниэл Филипс (Daniel Phillips), система базируется на алгоритме «Фазового Дерева», который как и журналирование защищает файловую систему от сбоев. Организована как надстройка на ext2.

Tux3 — наступая на пятки Btrfs, представлена новая файловая система. Система создана на основе FUSE (Filesystem in Userspace), специального модуля для создания файловых систем на *nix платформах. Данный проект ставит перед собой цель избавиться от привычного журналирования, взамен предлагая версионное восстановление (состояние в определённый промежуток времени). Преимуществом используемой в данном случае версионной системы, является способ описания изменений, где для каждого файла создаётся изменённая копия, а не переписывается текущая версия. Такой подход позволяет более гибко управлять версиями.

UPD: Xiafs — задумка и разработка данной файловой системы принадлежат Frank Xia, основана на файловой системе MINIX. В настоящее время считается устаревшей и практически не используется. Наряду с ext2 разрабатывалась, как замена системе ext. В декабре 1993 года система была добавлена в стандартное ядро Linux. И хотя система обладала большей стабильностью и занимала меньше дискового пространства под контрольные структуры — она оказалась слабее ext2, ведущую роль сыграли ограничения максимальных размеров файла и раздела, а так же способность к дальнейшему расширению.

UPD: ZFS (Zettabyte File System) — изначально созданная в Sun Microsystems файловая система, для небезызвестной операционной системы Solaris в 2005 году. Отличительные особенности — отсутствие фрагментации данных как таковой, возможности по управлению снапшотами (snapshots), пулами хранения (storage pools), варьируемый размер блоков, 64-х разрядный механизм контрольных сумм, а так же способность адресовать 128 бит информации! В Linux системах может использоваться посредствам FUSE.

Источник

Какую файловую систему выбрать для Linux

Если вы только переходите с Windows, то, наверное, уже привыкли, что вам доступна только одна файловая система — NTFS и выбирать просто нет из чего. Но в Linux ситуация совсем другая. Здесь существует огромное множество файловых систем и постоянно создаются новые.

В сегодняшней небольшой статье мы постараемся разобраться какую файловую систему выбрать для Linux, и какие вообще доступны варианты.

Выбор файловой системы для Linux

Все файловые системы можно разделить на два типа: это обычные файловые системы и файловые системы следующего поколения. К обычным файловым системам относится используемая в большинстве дистрибутивов Ext4, она имеет все необходимые для полноценной работы возможности, но не более того.

Файловые системы следующего поколения — это BtrFS, ZFS и другие им подобные. Кроме стандартных возможностей они добавляют такие интересные вещи как дедупликация данных, управление томами, размещение файловой системы на нескольких физических дисках, контрольные суммы для данных, прозрачное сжатие и шифрование, снимки состояния, а также многое другое. Несмотря на все эти преимущества, новые файловые системы ещё не всегда стабильны и не поддерживаются не во всех дистрибутивах, а многие из их возможностей просто не нужны обычным пользователям.

Если кратко отвечать на вопрос, какую файловую систему выбрать для Linux — то ответ — Ext4. Она разработана очень давно, но зато очень стабильна и проверена временем. Она используется по умолчанию во многих дистрибутивов, а её лимитов хватит с головой, как для домашних пользователей, так и для большинства серверов. Но эта файловая система относится к обычным. Если вы не хотите её использовать дальше мы рассмотрим несколько альтернатив, доступных для выбора в установщике Ubuntu.

1. Ext

Про семейство файловых систем Ext я больше не буду говорить в этой статье. Про всё можно подробно прочитать в статье Файловая система Ext4. Там рассказана история развития этой файловой системы, а также её плюсы и минусы. Для установки Linux лучше всего подойдёт файловая система Ext4 из-за её стабильности и огромному количеству руководств по настройке в интернете.

2. XFS

Файловая система XFS разработана в Silicon Graphics в 1994 году для операционной системы SGI IRX. Расшифровывается как eXtended File System. Для Linux она была портирована в 2001 и немного позже её начали использовать в Red Hat Enterprice Linux в качестве файловой системы по умолчанию. Хотя эту файловую можно отнести к обычным, она изначально была рассчитана на работу с большими дисками. Она очень похожа на Ext4, тоже поддерживает журналирование и не подвержена фрагментации, но её можно только увеличить, уменьшить раздел с этой файловой системой нельзя. Ещё XFS показывает хорошую производительность при работе с большими файлами, но медленее работает с большим количеством маленьких файлов по сравнению с другими файловыми системами.

3. JFS

Файловая система JFS или Journaled File System разработана компанией IBM для системы IBM AIX в 1990 году, а чуть позже она была портирована и для Linux. В отличие от Ext3, в которой был добавлен журнал для сохранения целостности файловой системы, JFS была изначально журналируемой. В журнале сохраняются только метаданные. Файловая система одинаково быстро работает с как с большими, так и с маленькими файлами, а ещё её также как и XFS нельзя уменьшить, только увеличить. Несмотря на то, что эта файловая система доступна в большинстве дистрибутивов, её редко используют, а значит и её разработка и выявление багов идет медленнее.

4. BtrFS

Мы добрались к первой файловой системе следующего поколения. Это BTree File System. Её разработал Крис Масон во время своей работы в компании Oracle в 2006 году. Она поддерживает множество интересных возможностей, таких как управление томами, снимки состояния, прозрачное сжатие и дефрагментацию в реальном времени. Файловая система разрабатывалась как качественная и новая альтернатива для файловых систем семейства Ext. Даже основной разработчик Ext4 Теодор Цо считает, что за Btrfs или подобной ей файловой системой будущее, а Ext4 рано или поздно останется в прошлом. Сейчас BtrFS используется по умолчанию в SUSE Linux, как в серверной, так и обычной редакции. Она уже считается стабильной, но многие всё ещё боятся её использовать.

5. ReiserFS

Файловую систему ReiserFS разработал Ганс Рейзер специально для Linux в 2001 году. В неё было включено множество возможностей недоступных для Ext4. Как и в Ext4 здесь есть журналирование либо только метаданных, либо вместе с данными. Поддерживается управление томами, есть возможность добавить кэширующий быстрый диск. ReiserFS — очень быстрая и умеет упаковывать несколько файлов в один блок, чтобы уменьшить использование памяти. Однако, разработка этой файловой системы была заброшена после того, как Ганс Райзер сел в тюрьму в 2008. Версия файловой системы Raiser4 всё ещё не попала в ядро, поэтому для использования на перспективу лучше выбрать Btrfs.

6. ZFS

ZFS была разработана для Solaris компанией Sun Microsystems и сейчас она принадлежит Oracle в 2005 году. Немного позже она была портирована для Linux и начиная с Ubuntu 16.04 доступна в установщике для использования в качестве корневой файловой системы. Она похожа на BtrFS, потому что поддерживает управление томами, контрольные суммы для всех данных, прозрачное сжатия и прозрачное шифрование. Её тоже можно отнести к файловым системам следующего поколения. По архитектуре, это 128 битная файловая система, в то же время как Ext4 — 64 битная. Поэтому лимиты у неё очень большие и в обозримом будущем мы к ним даже не приблизимся. Но Линус Торвальдс, создатель ядра Linux не советует использовать ZFS.

Выводы

Ещё в списке файловых систем установщика есть Swap и FAT, но обе эти файловые системы нельзя использовать для корневого раздела Linux. Первая используется для раздела подкачки и не предназначена для хранения файлов, а вторая — это старая файловая система от Microsoft, не поддерживающая многих необходимых атрибутов и возможностей.

Есть и другие файловые системы, например F2FS, разработанная специально для SSD, но они используются ещё реже. Для себя я вижу два варианта — это либо Btrfs, потому что она активно развивается, разработана для Linux и разработчики SUSE ей доверяют, а также Ext4, потому что очень стабильна и проверена временем. А какую файловую систему для Linux используете вы? Какие лучшие файловые системы Linux? Напишите в комментариях!

Источник

Читайте также:  Windows 10 звуковая схема сбрасывается
Оцените статью