Sysadminium
База знаний системного администратора
Файловые системы поддерживаемые Linux
Поддержка файловых систем – это основная функция операционных систем. В этой статье познакомимся с тем, какие файловые системы могут быть использованы в операционной системе Linux.
Что такое файловая система
Полезные данные, такие как файлы и каталоги, напрямую на диск не записываются. Между разделом диска и файлами существует прослойка в виде файловой системы.
Файловая система – это средство, которое определяет различные правила работы с файлами, например:
Метаданные – данные о данных, например файл это данные, а метаданные это:
Разные файловые системы имеют разные ограничения, например:
В этой статье пробежимся по файловым системам, которые можно выбрать при установки Debian 10 и Ubuntu 20.04. При установке Debian 10 вы можете выбрать следующие файловые системы:
Установщик Ubuntu 20.04 имеет несколько меньший выбор:
Далее пробежимся по этим файловым системам:
Файловые системы семейства ext
EXT (Extended File System) — расширенная файловая система.
Ext2 была создана в январе 1993 года для linux, вот её особенности:
Ext2 старая файловая система без журнала, но достаточно быстрая. Современные системы Linux могут работать с этой файловой системой.
Ext3 была создана в ноябре 1999 года и также стала применяться по умолчанию во многих дистрибутивах Linux. Единственное улучшение – это добавление журналирования (что сделало файловую систему надежнее, но медленнее).
Ext4 была создана в октябре 2006 года, но стабильная версия появилось в октябре 2008 года. Она сейчас является самой распространенной файловой системой для Linux. Убрали некоторые ограничения и оптимизировали:
На данный момент по моему мнению EXT4 лучший выбор для Linux систем.
btrfs
btrfs – это более функциональная и сложная файловая система чем ext4. Начали разрабатывать для Linux в 2007 году, а в 2014 году признали стабильной. Вот некоторые интересные функции:
Из минусов: файловая система не так проверена временем как ext4, активно использует оперативную память и работает медленнее чем ext4.
JFS — это журналированная файловая система. На момент выхода в свет в 1999 году была наиболее производительной из существовавших файловых систем. Сейчас по функциональности сравнима с ext4, но менее популярна.
Вот некоторые её особенности:
Так как по функциональности эта файловая система сравнима с ext4, но по характеристикам и популярности отстаёт, то в Ubintu установщик уже не предлагает использовать её. Можно использовать, если у вас будут храниться файлы размером более 16 ТБ, хотя и в этом случае лучше выбрать XFS.
XFS – это журналированная файловая система. Особенно хорошо работает с большими неизменяемыми файлами. Имеет следующие особенности:
Эта файловая система позволит хранить просто огромные файлы, размер которых может достигать 9 EB.
Файловые системы семейства fat
Эти файловые системы могут работать в linux но создавались они для windows. Могут подойти для хранения файлов, но не для работы программ. Основной недостаток FAT – медленная работа с файлами:
Кроме перечисленных файловых систем Linux может работать и с другими, например ntfs или zfs. Но так как их нельзя выбирать при установке, они были опущены. На этом сайте я планирую познакомить вас с файловой системой zfs, так как имею большой опыт работы с ней, но не в этом курсе, а в отдельных статьях.
Типы файловых систем для Linux
Операционная система Windows может быть установлена только на файловую систему NTFS, поэтому обычно у пользователей не возникает вопросов какую ФС лучше использовать. Но Linux очень сильно отличается, здесь в ядро системы встроены и могут использоваться несколько файловых систем, каждая из которых оптимизирована для решения определенных задач и лучше подходит именно для них.
Новые пользователи не всегда понимают что такое раздел жесткого диска и файловая система. В нашей сегодняшней статье мы попытаемся разобраться во всех этих понятиях, рассмотрим что такое файловая система, а также рассмотрим самые распространенные типы файловых систем Linux. Но начнем с самых основ, разделов диска.
Жесткий диск и разделы
Что такое файловая система?
Дальше больше. Чтобы на каждом разделе можно было работать с файлами и каталогами, необходима файловая система. Мы могли бы писать просто содержимое файлов на диск, но нужно еще где-то хранить данные о папках, имена файлов, их размер, адрес на жестком диске, атрибуты доступа. Всем этим занимается файловая система.
От файловой системы зависит очень многое, скорость работы с файлами, скорость записи и даже размер файлов. Также от стабильности файловой системы будет зависеть сохранность ваших файлов.
Типы файловых систем Linux
Файловые системы в Linux используются не только для работы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время работы системы. Дальше мы рассмотрим типы файловых систем Linux, включая специальные файловые системы.
Основные файловые системы
Каждый дистрибутив Linux позволяет использовать одну из этих файловых систем, каждая из них имеет свои преимущества и недостатки. Все они включены в ядро и могут использоваться в качестве корневой файловой системы. Давайте рассмотрим каждую из них более подробно.
Другие файловые системы, такие как NTFS, FAT, HFS могут использоваться в Linux, но корневая файловая система linux на них не устанавливается, поскольку они для этого не предназначены.
Специальные файловые системы
Ядро Linux использует специальные файловые системы, чтобы предоставить доступ пользователю и программам к своим настройкам и информации. Наиболее часто вы будете сталкиваться с такими вариантами:
Виртуальные файловые системы
Не все файловые системы нужны в ядре. Существуют некоторые решения, которые можно реализовать и в пространстве пользователя. Разработчики ядра создали модуль FUSE ( filesystem in userspace), который позволяет создавать файловые системы в пространстве пользователя. К виртуальным файловым системам можно отнести ФС для шифрования и сетевые файловые системы.
Таких файловых систем очень много, и мы не будем перечислять все их в данной статье. Есть даже очень экзотические варианты, обратите внимание на проект PIfs.
Выводы
На завершение видео о том, что такое файловая система и ее структура в linux:
Какую файловую систему выбрать для Linux
В сегодняшней небольшой статье мы постараемся разобраться какую файловую систему выбрать для Linux, и какие вообще доступны варианты.
Выбор файловой системы для Linux
Все файловые системы можно разделить на два типа: это обычные файловые системы и файловые системы следующего поколения. К обычным файловым системам относится используемая в большинстве дистрибутивов Ext4, она имеет все необходимые для полноценной работы возможности, но не более того.
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
Мы добрались к первой файловой системе следующего поколения. Это B—Tree File System. Её разработал Крис Масон во время своей работы в компании Oracle в 2006 году. Она поддерживает множество интересных возможностей, таких как управление томами, снимки состояния, прозрачное сжатие и дефрагментацию в реальном времени. Файловая система разрабатывалась как качественная и новая альтернатива для файловых систем семейства Ext. Даже основной разработчик Ext4 Теодор Цо считает, что за Btrfs или подобной ей файловой системой будущее, а Ext4 рано или поздно останется в прошлом. Сейчас BtrFS используется по умолчанию в SUSE Linux, как в серверной, так и обычной редакции. Она уже считается стабильной, но многие всё ещё боятся её использовать.
5. ReiserFS
6. ZFS
Выводы
Файловые системы в Linux
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 в 2020 году: плюсы, минусы, подводные камни
Как вы знаете, перед установкой любой операционной системы Linux вам нужно отформатировать жесткий диск и выбрать наиболее предпочтительную файловую систему. Тут у нас, в 2020, в фаворитах ходит EXT4, и она кажется лучшим вариантом из возможных, но давайте рассмотрим альтернативы, прежде чем слепо отказываться от них?
«Fourth Extended Filesystem», что дословно переводится как «Четвертая расширенная файловая система» полностью обратно совместима с EXT2 и EXT3 и считается стандартом для большинства дистрибутивов Linux, оставаясь такой же популярной, как и ее предшественники.
На сегодняшний день это один из самых безопасных и стабильных вариантов, поскольку он поддерживает ведение журнала, предотвращая (насколько это возможно) потерю данных после сбоя системы или потери питания.
Двумя мощнейшими функциями EXT4 являются так называемые «экстенты» и «отложенное распределение», которые разумно управляют тем, как данные записываются на носитель, для повышения производительности и уменьшения фрагментации.
BtrFS
«b-tree file system» изначально была разработана Oracle и продолжает расти в популярности, так что многие считают ее истинным преемником династии EXT.
Btrfs поставляется с расширенными функциями, такими как автоматическая дефрагментация и прозрачное сжатие. Он следует принципу копирования при записи, сохраняя новые итерации данных и метаданных вместо того, чтобы воздействовать на существующие («теневое копирование»). Это также позволяет делать снимки различных состояний файловой системы, а также легко реплицировать, переносить и инкрементировать резервные копии. Оперативные и автономные проверки файловой системы еще больше снижают вероятность потери данных.
Отдельно стоит отметить, что BtrFS весьма SSD-френдли, поскольку она автоматически отключает свои функции, которые полезны для механических жестких дисков, но могут изнашивать SSD.
XFS была создана Silicon Graphics почти три десятилетия назад для их графических рабочих станций, специализирующихся на рендеринге 3D-графики.
Однако, её поддержка журналирования ограничена, особенно если сравнивать с более современными альтернативами, и, возможно, она более склонна к потере данных. Также плохо масштабируется для более типичных повседневных и, в основном, однопоточных сценариев, например, при удалении нескольких фотографий из папки «Изображения». Другими словами, это история про настройку собственного дата-центра, а не обычной домашней машины.
Одна из (относительно) более новых файловых систем, «Flash-Friendly File System», как следует из самого названия, является одним из лучших вариантов для использования с хранилищем на основе флешь-памяти.
Изначально созданный для этой цели компанией Samsung, F2FS разбивает носитель на более мелкие части, которые в свою очередь делит на еще более мелкие части, которые в свою очередь делит, ну вы поняли. А дальше она старается использовать множество этих зон вместо повторного использования одних и тех же. В сочетании с поддержкой TRIM / FITRIM это делает её более удобной для флешь-носителей с ограниченным числом операций записи.
Нет смысла углубляться в возможности F2FS, потому что, если речь идет об использовании с обычными носителями, она – абсолютно заурядная заурядность, не выделяющаяся ни в отношении скорости, ни в отношении безопасности, и любая другая файловая система предложит вам набор функций получше. Хотя, стоит отметить, что дискуссия принимает совершенно другой оборот, когда речь заходит за флешь-хранилища, для которых она и разрабатывалась.
OpenZFS/ZFS
ZFS отличается от всех альтернатив тем, что сочетает файловую систему с менеджером томов. По этой причине он управляет не только файлами и каталогами, но и физическими носителями, на которых они находятся. Благодаря этому каждое устройство хранения может быть назначено пулу, который обрабатывается как один ресурс. Если вам не хватает места, вы можете добавить новое хранилище в этот пул, чтобы расширить его, позволяя ZFS позаботиться о деталях.
ZFS также следует принципу copy-on-write, так называемого, копирования при записи, где вместо изменения существующих данных он сохраняет только изменения («дельты») между старой и новой версиями. Это обеспечивает прозрачное, интеллектуальное хранение нескольких копий данных, не занимая много места, которое может работать как резервное копирование или снэпшоты. Пользователь может откатиться к предыдущим состояниям файловой системы, отменить изменения или наоборот: перенести все изменения в клоны существующих данных.
Журналируемая файловая система от IBM была одной из первых файловых систем, которая поддерживала журналирование, что привело к снижению вероятности потери данных. Она использует экстенты, как и многие другие современные альтернативы, а также группы размещения, такие как XFS, с целью обеспечения высокой производительности чтения / записи.
Не отдавая предпочтения какой-либо одной функции, она отлично подходит для различных задач при разных нагрузках.
К сожалению, это также означает, что она не является превосходной ни в одной. Кроме того, есть кое-какие проблемы, которые негативно влияют на оценку пользователей при выборе файловой системы для своего хранилища. Например, она может отложить обновление своего журнала на неопределенное время, увеличивая вероятность потери данных и почти сводя на нет тот факт, что это файловая система журналирования. Лучше параллельные записи, которые наиболее полезны для серверов и больших баз данных, но работают хуже, чем EXT4 в более популярных сценариях использования настольных компьютеров.
Это, вероятно, причины, по которым она не так популярна, как другие файловые системы, которые либо быстрее работают, либо лучше защищают данные от потери.
Что вам стоит использовать?
Если вы не боитесь иметь дело с несколько менее зрелой экосистемой, вам стоит также рассмотреть BtrFS.
Для использования на сервере, где вы хотите полностью исключить любую возможность потери данных, там, где стабильность – второе имя, вам стоит попробовать ZFS. Впрочем, чтобы смочь использовать ее на всю катушку, вам придется уйти в чтение с головой.
Для флэш-носителей F2FS является лучшим вариантом, это даже не обсуждается.
Какую бы файловую систему вы ни выбрали, не забудьте заранее полностью стереть ваш жесткий диск, если вы хотите сделать его существующий контент практически не восстанавливаемым.
Не забывайте использовать комментарии, чтобы высказать ваше ценное мнение по поводу файловых систем и статьи в общем.










