Выбор распределенной файловой системы для Linux. Пару слов о Ceph и остальных
Существует несколько десятков файловых систем, все из них предоставляют пользовательские интерфейсы для хранения данных. Каждая из систем хороша по-своему. Однако, в наш век высоких нагрузок и петабайтов данных для обработки, оказалось довольно непросто подыскать то, что нужно, стоит лишь задуматься о распределенных данных, распределенных нагрузках, множественном монтировании rw и о прочих кластерных прелестях.
Задача: организовать распределенное файловое хранилище
— без самосборных ядер, модулей, патчей,
— с возможностью множественного монтирования в режиме rw,
— POSIX совместимость,
— отказоустойчивость,
— совместимость с уже использующимися технологиями,
— разумный overhead по I/O операциям по сравнению с локальными файловыми системами,
— простота конфигурации, обслуживания и администрирования.
В работе мы используем Proxmox и контейнерную виртуализацию OpenVZ. Это удобно, это летает, у этого решения больше плюсов, чем у аналогичных продуктов. По крайней мере для наших проектов и в наших реалиях.
Сам storage везде монтируется по FC.
OCFS2
У нас был успешный опыт использования данной файловой системы, решили сначала попробовать ее. Proxmox с недавнего времени перешел на редхатовское ядро, в нем поддержка ocfs2 выключена. Модуль в ядре есть, но на форумах openvz и proxmox не рекомендуют его задействовать. Мы попробовали и пересобрали ядро. Модуль версии 1.5.0, кластер из 4 железных машин на базе debian squeeze, proxmox 2.0beta3, ядро 2.6.32-6-pve. Для тестов использовался stress. Проблемы за несколько лет остались те же самые. Все завелось, настройка данной связки занимает полчаса от силы. Однако, под нагрузкой кластер может самопроизвольно развалиться, что ведет к тотальному kernel panic на всех серверах сразу. За сутки тестов машины перезагружались в общей сложности пять раз. Это лечится, но доводить такую систему до работоспособного состояния довольно тяжело. Пришлось также пересобирать ядро и включать ocfs2. Минус.
Хоть ядро и редхатовское, модуль по умолчанию включен, завестись мы и здесь так и не смогли. Все дело в proxmox, которые со второй версии придумали свой кластер с шахматами и поэтессами для хранения своих конфигов. Там cman, corosync и прочие пакеты из gfs2-tools, только все пересобранные специально для pve. Оснастка для gfs2, таким образом, из пакетов просто так не ставится, так как предлагает сначала снести весь proxmox, что мы сделать не могли. За три часа зависимости удалось победить, но все опять закончилось kernel panic. Попытка приспособить пакеты для proxmox для решения наших проблем успехом не увенчалась, после двух часов было принято решение отказаться от этой идеи.
Остановились пока на ней.
POSIX совместимая, высокая скорость работы, отличная масштабируемость, несколько смелых и интересных подходов в реализации.
Файловая система состоит из следующих компонентов:
1. Клиенты. Пользователи данных.
2. Сервера метаданных. Кэшируют и синхронизируют распределенные метаданные. С помощью метаданных клиент в любой промежуток времени знает, где находятся нужные ему данные. Также сервера метаданных выполняют распределение новых данных.
3. Кластер хранения объектов. Здесь в виде объектов хранятся как данные, так и метаданные.
4. Кластерные мониторы. Осуществляют мониторинг здоровья всей системы в целом.
Фактический файловый ввод/вывод происходит между клиентом и кластером хранения объектов. Таким образом, управление высокоуровневыми функциями POSIX (открытие, закрытие и переименование) осуществляется с помощью серверов метаданных, а управление обычными функциями POSIX (чтение и запись) осуществляется непосредственно через кластер хранения объектов.
Любых компонентов может быть несколько, в зависимости от стоящих перед администратором задач.
Файловая система может быть подключена как напрямую, с помощью модуля ядра, так через FUSE. С точки зрения пользователя, файловая система Ceph является прозрачной. Они просто имеют доступ к огромной системе хранения данных и не осведомлены об используемых для этого серверах метаданных, мониторах и отдельных устройствах, составляющих массивный пул системы хранения данных. Пользователи просто видят точку монтирования, в которой могут быть выполнены стандартные операции файлового ввода / вывода. С точки зрения администратора имеется возможность прозрачно расширить кластер, добавив сколько угодно необходимых компонентов, мониторов, хранилищ, серверов метаданных.
Разработчики гордо называют Ceph экосистемой.
GPFS, Lustre и прочие файловые системы, а также надстройки, мы не рассматривали в этот раз, они либо очень сложны в настройке, либо не развиваются, либо не подходят по заданию.
Конфигурация и тестирование
Конфигурация стандартная, все взято из Ceph wiki. В целом файловая система оставила приятные впечатления. Собран массив 2Тб, пополам из SAS и SATA дисков (экспорт блочных устройств по FC), партиции в ext3.
Ceph storage примонтирован внутрь 12-и виртуальных машин на 4 hardware nodes, осуществляется чтение-запись со всех точек монтирования. Четвертые сутки стресс-тестов проходят нормально, I/O выдается в среднем 75 мб/с. на запись по пику.
Мы пока не рассматривали остальные функции Ceph (а их осталось еще довольно много), также есть проблемы с FUSE. Но хотя разработчики предупреждают, что система экспериментальная, что ее не стоит использовать в production, мы считаем, что если очень хочется, то можно -_-
Прошу всех заинтересованных, а также всех сочувствующих, в личку. Тема очень интересная, ищем единомышленников, чтобы обсудить возникшие проблемы и найти способы их решения.
Источник
Какую файловую систему выбрать для 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
Мы добрались к первой файловой системе следующего поколения. Это B—Tree 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? Напишите в комментариях!
Источник
Файловые системы в 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.
Источник