- Выбор распределенной файловой системы для Linux. Пару слов о Ceph и остальных
- Xubuntu-ru.net
- Жесткий диск и разделы
- Что такое файловая система?
- Типы файловых систем Linux
- Основные файловые системы
- Специальные файловые системы
- Виртуальные файловые системы
- Выводы
- Поддерживаемые и рекомендуемые файловые системы в Linux
- Файловые системы Linux
- Рекомендуемые файловые системы
- Характеристики файловой системы
- Отдельные узловые (локальные) файловые системы
- ext2, ext3, ext4
- ReiserFS
- Btrfs
- Многоузловые (разделяемые / кластерные) файловые системы
- Raw Partitions
- Файловая система Oracle Cluster (OCFS)
- OCFS2
Выбор распределенной файловой системы для 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, мы считаем, что если очень хочется, то можно -_-
Прошу всех заинтересованных, а также всех сочувствующих, в личку. Тема очень интересная, ищем единомышленников, чтобы обсудить возникшие проблемы и найти способы их решения.
Источник
Xubuntu-ru.net
Операционная система Windows может быть установлена только на файловую систему NTFS, поэтому обычно у пользователей не возникает вопросов какую ФС лучше использовать. Но Linux очень сильно отличается, здесь в ядро системы встроены и могут использоваться несколько файловых систем, каждая из которых оптимизирована для решения определенных задач и лучше подходит именно для них.
Новые пользователи не всегда понимают что такое раздел жесткого диска и файловая система. В нашей сегодняшней статье мы попытаемся разобраться во всех этих понятиях, рассмотрим что такое файловая система, а также рассмотрим самые распространенные типы файловых систем Linux. Но начнем с самых основ, разделов диска.
Жесткий диск и разделы
Обычно в компьютере используется один жесткий диск, но для удобства все доступное пространство разделяется на разделы, в Windows они известны как диски, в Linux же их принято называть разделами. Чтобы операционная система знала сколько разделов есть на диске и их физические границы используется таблица разделов. Она может быть двух типов — GPT или MBR. В этой статье мы не будем рассматривать ее подробно. Скажу только, что там находится метка раздела, его порядковый номер и адрес начала и конца на жестком диске.
Что такое файловая система?
Дальше больше. Чтобы на каждом разделе можно было работать с файлами и каталогами, необходима файловая система. Мы могли бы писать просто содержимое файлов на диск, но нужно еще где-то хранить данные о папках, имена файлов, их размер, адрес на жестком диске, атрибуты доступа. Всем этим занимается файловая система.
От файловой системы зависит очень многое, скорость работы с файлами, скорость записи и даже размер файлов. Также от стабильности файловой системы будет зависеть сохранность ваших файлов.
Типы файловых систем Linux
Файловые системы в Linux используются не только для работы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время работы системы. Дальше мы рассмотрим типы файловых систем Linux, включая специальные файловые системы.
Основные файловые системы
Каждый дистрибутив Linux позволяет использовать одну из этих файловых систем, каждая из них имеет свои преимущества и недостатки:
Все они включены в ядро и могут использоваться в качестве корневой файловой системы. Давайте рассмотрим каждую из них более подробно.
Ext2, Ext3, Ext4 или Extended Filesystem — это стандартная файловая система для Linux. Она была разработана еще для Minix. Она самая стабильная из всех существующих, кодовая база изменяется очень редко и эта файловая система содержит больше всего функций. Версия ext2 была разработана уже именно для Linux и получила много улучшений.
В 2001 году вышла ext3, которая добавила еще больше стабильности благодаря использованию журналирования. В 2006 была выпущена версия ext4, которая используется во всех дистрибутивах Linux до сегодняшнего дня. В ней было внесено много улучшений, в том числе увеличен максимальный размер раздела до одного экзабайта.
JFS или Journaled File System была разработана в IBM для AIX UNIX и использовалась в качестве альтернативы для файловых систем ext. Сейчас она используется там, где необходима высокая стабильность и минимальное потребление ресурсов. При разработке файловой системы ставилась цель создать максимально эффективную файловую систему для многопроцессорных компьютеров. Также как и ext, это журналируемая файловая система, но в журнале хранятся только метаданные, что может привести к использованию старых версий файлов после сбоев.
ReiserFS — была разработана намного позже, в качестве альтернативы ext3 с улучшенной производительностью и расширенными возможностями. Она была разработана под руководством Ганса Райзера и поддерживает только Linux. Из особенностей можно отметить динамический размер блока, что позволяет упаковывать несколько небольших файлов в один блок, что предотвращает фрагментацию и улучшает работу с небольшими файлами.
Еще одно преимущество — в возможности изменять размеры разделов на лету. Но минус в некоторой нестабильности и риске потери данных при отключении энергии. Раньше ReiserFS применялась по умолчанию в SUSE Linux, но сейчас разработчики перешли на Btrfs.
XFS — это высокопроизводительная файловая система, разработанная в Silicon Graphics для собственной операционной системы еще в 2001 году. Она изначально была рассчитана на файлы большого размера, и поддерживала диски до 2 Терабайт. Из преимуществ файловой системы можно отметить высокую скорость работы с большими файлами, отложенное выделение места, увеличение разделов на лету и незначительный размер служебной информации.
XFS — журналируемая файловая система, однако в отличие от ext, в журнал записываются только изменения метаданных. Она используется по умолчанию в дистрибутивах на основе Red Hat. Из недостатков — это невозможность уменьшения размера, сложность восстановления данных и риск потери файлов при записи, если будет неожиданное отключение питания, поскольку большинство данных находится в памяти.
Btrfs или B-Tree File System — это совершенно новая файловая система, которая сосредоточена на отказоустойчивости, легкости администрирования и восстановления данных. Файловая система объединяет в себе очень много новых интересных возможностей, таких как размещение на нескольких разделах, поддержка подтомов, изменение размера не лету, создание мгновенных снимков, а также высокая производительность. Но многими пользователями файловая система Btrfs считается нестабильной. Тем не менее, она уже используется как файловая система по умолчанию в OpenSUSE и SUSE Linux.
Другие файловые системы, такие как NTFS, FAT, HFS могут использоваться в Linux, но корневая файловая система linux на них не устанавливается, поскольку они для этого не предназначены.
Специальные файловые системы
Ядро Linux использует специальные файловые системы, чтобы предоставить доступ пользователю и программам к своим настройкам и информации. Наиболее часто вы будете сталкиваться с такими вариантами:
Файловая система tmpfs позволяет размещать любые пользовательские файлы в оперативной памяти компьютера. Достаточно создать блочное устройство нужного размера, затем подключить его к папке, и вы можете писать файлы в оперативную память.
procfs — по умолчанию смонтирована в папку proc и содержит всю информацию о запущенных в системе процессах, а также самом ядре.
sysfs — с помощью этой файловой системы вы можете задавать различные настройки ядра во время выполнения.
Виртуальные файловые системы
Не все файловые системы нужны в ядре. Существуют некоторые решения, которые можно реализовать и в пространстве пользователя. Разработчики ядра создали модуль FUSE ( filesystem in userspace), который позволяет создавать файловые системы в пространстве пользователя. К виртуальным файловым системам можно отнести ФС для шифрования и сетевые файловые системы.
EncFS — файловая система, которая шифрует все файлы и сохраняет их в зашифрованном виде в нужную директорию. Получить доступ к расшифрованным данным можно только примонтировав файловую систему.
Aufs (AnotherUnionFS) — позволяет объединять несколько файловых систем (папок) в одну общую.
NFS (Network Filesystem) — позволяет примонтировать файловую систему удаленного компьютера по сети.
Таких файловых систем очень много, и мы не будем перечислять все их в данной статье. Есть даже очень экзотические варианты, обратите внимание на проект PIfs.
Выводы
В этой статье мы рассмотрели типы файловых систем Linux. Как видите, здесь все намного запутаннее чем в Windows. Но на самом деле все просто. Если вам нужна максимально стабильная файловая система linux — то лучшим решением будет ext4, хотите новых технологий — btrfs, для маленьких файлов — raiser4, для больших — XFS. А какие файловые системы linux предпочитаете вы? Напишите в комментариях!
На завершение видео о том, что такое файловая система и ее структура в linux:
Источник
Поддерживаемые и рекомендуемые файловые системы в Linux
Цель этой публикации – дать системным администраторам обзор и сравнение файловых систем, доступных в Linux.
Файловые системы Linux
Одной из наиболее интересных особенностей ОС Linux является разнообразие файловых систем.
Файловые системы могут быть определены и построены на основе разделов.
Файловые системы VFAT, ext2, ext3, ext4 и Reiser могут сосуществовать в одной и той же системе Linux, а также с несколькими файловыми системами и необработанными разделами.
Ваш выбор, будет основываться на поддержке, надежности, безопасности и производительности.
Oracle обычно не сертифицирует свои продукты в отношении файловых систем, но сертифицирует операционные системы.
Однако для некоторых дистрибутивов Linux Oracle может выбирать сертификаты для разных файловых систем.
В зависимости от версии Linux может включать в себя системы хранения ext2, ext3, ext4, btrfs и NFS (например, NetApp).
Рекомендуемые файловые системы
Для ОС Linux доступны различные файловые системы:
- Файловые системы ext2, ext3, ext4 являются надежными. ext2 была файловой системой по умолчанию в ядре 2.2. ext3 – это просто расширенная файловая система ext2 с функцией ведения журнала. ext3 является файловой системой по умолчанию для RHEL 3 и 4. ext4 был разработан как преемник ext3. Он предоставляет функции для больших файловых систем, производительности, повышенных ограничений и надежности.
- Файловая система Oracle Cluster (OCFS) – это общая файловая система, разработанная специально для Oracle Real Application Cluster (RAC). OCFS устраняет необходимость привязки файлов базы данных Oracle к логическим драйверам. Токи OCFS могут охватывать один общий диск или несколько разделяемых дисков для избыточности и повышения производительности.
- OCFS2 – это следующее поколение файловой системы Oracle Cluster для Linux. Это основанная на степени POSIX-совместимая файловая система. В отличие от предыдущего выпуска (OCFS), OCFS2 – это универсальная файловая система, которая может использоваться для общих домашних объектов Oracle, что упрощает управление установками Oracle Real Application Cluster (RAC).
- XFS разработан для высокой масштабируемости и обеспечивает почти собственную производительность ввода-вывода, даже если файловая система охватывает несколько устройств хранения данных
Таким образом, рекомендуемыми файловыми системами являются:
- Единый узел: любая файловая система, поддерживаемая поставщиком Linux. Обратите внимание, что любые проблемы с файловой системой должны решаться поставщиком Linux.
- Многоузловые (RAC): системы хранения данных OCFS, raw, NFS (например, NetApp).
Характеристики файловой системы
При выборе файловой системы производительность не является самым важным моментом.
Например, если существует риск того, что данные могут быть повреждены, потеряны или скомпрометированы, не следует использовать быструю файловую систему.
Oracle не поддерживает файлы в файловых системах, которые не имеют возможности сквозного кэширования.
Файловая система должна подтвердить операции записи.
Например, стандартная NFS основана на UDP, которая является сетевым протоколом, который не включает механизм подтверждения.
Одним из поставщиков, который предоставляет поддерживаемую сетевую файловую систему, является Network Appliance, и они используют модифицированный протокол NFS.
Существуют требования безопасности.
Oracle RDBMS и файлы базы данных требуют специальных разрешений для файлов, которые недоступны в некоторых файловых системах (например, VFAT). Если определенные права доступа к файлам не установлены должным образом, СУБД Oracle работает неправильно.
Файлы данных должны быть доступны только для владельца базы данных. Сервер базы данных должен иметь возможность контролировать все другие доступ к файлам и данным.
Журналирование – популярная характеристика.
Основное преимущество заключается в том, что изменения в файловой системе записываются в файл журнала.
Если сервер дал сбой или завершение работы без синхронизации диска, файл журнала может быть применен к файловой системе.
Проверки целостности и восстановление для таких файловых систем очень быстрые.
Это очень заметно при загрузке системы.
Команда fsck быстрее проверяет журналированные файловые системы по сравнению с файловыми система без журналов.
Отдельные узловые (локальные) файловые системы
Примечание: файловые системы НЕ ДОЛЖНЫ быть разделены между отдельными серверами.
ext2, ext3, ext4
– Файловые системы ext2, ext3 и ext4 тесно связаны.
– ext2 можно преобразовать в ext3.
– ext3 может быть установлена как файловая система ext2.
– ext3 – это журналированная файловая система.
– ext3 имеет несколько улучшений производительности по сравнению с ext2.
– ext3 может быть установлен как ext4.
– ext4 имеет все функции, предоставляемые ext3, и предоставляет функции для более крупных файловых систем, производительности, повышенных ограничений, надежности.
ReiserFS
– Это стандартная файловая система для Novell / SuSE Linux. В дистрибутивах RedHat он не установлен по умолчанию, но необходимые пакеты находятся на носителе распространения.
– ReiserFS в настоящее время находится в режиме обслуживания с SuSE / Novell.
Btrfs
– Из Btrfs wiki: Btrfs – это новая копия файловой системы write (CoW) для Linux, предназначенная для реализации расширенных функций, с уделением особого внимания отказоустойчивости, ремонту и простоте администрирования.
– Совместно разработанный в Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO и многих других, Btrfs лицензируется под лицензией GPL и открыт для участия от кого-либо.
Дополнительную информацию см. На странице https://btrfs.wiki.kernel.org.
XFS разработан для обеспечения высокой масштабируемости и обеспечивает почти собственную производительность ввода-вывода, даже если файловая система охватывает несколько устройств хранения. Дополнительную информацию см. В Файловой системе XFS в Oracle Linux.
Многоузловые (разделяемые / кластерные) файловые системы
Raw Partitions
– Считаются высокопроизводительным решением.
– Чтение и запись не используют буфер буфера ОС.
– Чтение и запись могут перемещать большие буферы, чем входы / выходы файловой системы.
– Требует более опытного администрирования.
Файловая система Oracle Cluster (OCFS)
– Oracle Cluster File System предназначена для использования с RAC. Oracle поддерживает OCFS для использования с файлами баз данных. OCFS не является журналируемой файловой системой, но имеет очень хорошие показатели производительности.
– Его производительность менее чем на 5% медленнее по сравнению с сырыми устройствами, а в большинстве тестов только на 2% медленнее.
– Начиная с версии OCFS. 1.0.14-1, OCFS поддерживают Async I / O.
OCFS2
OCFS2 – это следующее поколение файловой системы Oracle Cluster для Linux. Это основанная на степени POSIX-совместимая файловая система. В отличие от предыдущего выпуска (OCFS), OCFS2 – это универсальная файловая система, которая может использоваться для общих домашних объектов Oracle, что упрощает управление установками Oracle Real Application Cluster (RAC). Среди новых возможностей и преимуществ:
Источник