bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward

MogileFS: распределённая файловая система для избыточного объектного хранилища

calendar_month 7 июля 2026 schedule 8 мин. чтения visibility 25 просмотров
person
Valebyte Team
MogileFS: распределённая файловая система для избыточного объектного хранилища
summarize

TL;DR

  • MogileFS — распределённая файловая система уровня приложения с открытым кодом, написанная на Perl командой Brad Fitzpatrick / Danga Interactive (команда LiveJournal) около 2004 года.
  • Каждый файл хранится целыми репликами на независимых узлах — без RAID, без страйпинга, без единой точки отказа.
  • Четыре компонента: трекеры (mogilefsd), база метаданных MySQL, узлы хранения (mogstored — HTTP-демон) и клиентская библиотека.
  • «Классы» задают число реплик для каждого типа файла (mindevcount), балансируя стоимость хранения и надёжность.
  • Оптимален для write-once/read-many blob-ов (картинки, загрузки, вложения), отдаваемых по HTTP; это не POSIX-монтирование и не для низколатентных случайных записей.
  • Продакшн-кластер естественно ложится на несколько независимых выделенных серверов в разных доменах отказа.

MogileFS — один из первых опенсорсных ответов на задачу, к которой рано или поздно приходит любая крупная веб-платформа: как надёжно и дёшево хранить десятки миллионов пользовательских файлов, не покупая SAN и не доверяя ни одному отдельному диску? В этом руководстве разбираемся, что такое MogileFS, как именно работает его архитектура, чем он отличается от современных альтернатив вроде Ceph и S3-совместимых хранилищ и как рассчитать реальный кластер на выделенных серверах.

Одним предложением: MogileFS — это распределённая файловая система уровня приложения с открытым кодом, которая хранит каждый файл несколькими целыми репликами на независимых узлах, а базой MySQL отслеживает, где лежит каждая копия — давая отказоустойчивость без RAID и общего хранилища.

MogileFS кратко

СвойствоЗначение
ТипРаспределённая ФС уровня приложения / объектное хранилище
АвторBrad Fitzpatrick — Danga Interactive (команда LiveJournal)
Первый релизСередина 2000-х (разработан ~2004 для LiveJournal)
ЯзыкPerl (серверная часть)
ЛицензияСвободное ПО — те же условия GPL / Artistic, что и у Perl
МетаданныеMySQL (единый источник истины о расположении файлов)
Демон храненияmogstored — отдаёт данные по HTTP / WebDAV
Демон-координаторmogilefsd (трекер)
Модель доступаПо непрозрачному ключу через клиентскую библиотеку — не POSIX-монтирование
ИзбыточностьРепликация целых файлов (настраиваемое число копий), без RAID
Оптимальная нагрузкаWrite-once / read-many blob-ы, отдаваемые по HTTP

Ключевая идея: без RAID, без единой точки отказа

Традиционное хранилище покупает надёжность железом — RAID-массивы, дублированные контроллеры, дорогие общие файлеры. MogileFS идёт обратным путём: считать, что железо дешёвое и обязательно откажет, а надёжность брать из софта. Каждый файл хранится как одна или несколько целых реплик на независимых узлах. Ни страйпинга, ни чётности для перестроения. Если диск умирает, копии на других узлах остаются целыми, и фоновый процесс просто до-реплицирует их до нужного числа.

Поскольку она работает на уровне приложения, а не как ядерная ФС, MogileFS не монтируется как NFS и не даёт POSIX-семантики. Приложение обращается к ней через клиентскую библиотеку и адресует файлы непрозрачным ключом, а не путём. Именно этот компромисс позволяет ей горизонтально масштабироваться на обычных дисках на бюджетных выделенных серверах.

Схема архитектуры MogileFS Приложение обращается к stateless-демонам-трекерам (mogilefsd), которые читают и пишут расположение файлов в базе метаданных MySQL. Затем клиенты передают данные файлов напрямую по HTTP на узлы хранения с mogstored, где каждый файл хранится целыми репликами на независимых дисках. MogileFS: how a file is stored and served Application MogileFS client library Tracker · mogilefsd stateless coordinator + N trackers (HA) MySQL metadata: where each file lives Storage node · mogstored local disks Storage node · mogstored local disks Storage node · mogstored local disks 1. where is key? 2. lookup 3. read / write data directly over HTTP whole-file replicas across independent nodes — no RAID, no single point of failure
Поток запроса в MogileFS: клиент спрашивает у трекера, где лежит ключ, трекер ищет это в MySQL, после чего клиент читает или пишет данные напрямую на узлы хранения по HTTP. Объёмные данные никогда не упираются в трекер.

Четыре компонента

КомпонентДемон / технологияРольХранит состояние?
ТрекерmogilefsdStateless-координатор: отвечает «где ключ X?», выдаёт места для записи, планирует репликациюНет
База метаданныхMySQLЕдиный источник истины: файл → устройства, домен, класс, состояние репликацииДа — резервируйте её
Узел храненияmogstoredЛёгкий HTTP/WebDAV-демон с данными файлов на обычных локальных ФСТолько данные
Клиентбиблиотека (Perl, PHP, Python, Ruby, Java, Go)Хранит/читает/удаляет по ключу; читает и пишет напрямую на узлыНет

Поскольку всё общее состояние лежит в MySQL, трекеры stateless и взаимозаменяемы — их запускают несколько для отказоустойчивости, и любой обслужит любой запрос. Административная утилита mogadm регистрирует хосты, устройства, домены и классы. База метаданных — единственный компонент, который нужно защищать: держите её на надёжном хранилище и реплицируйте (обычно MySQL primary/replica).

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Домены, классы и репликация

MogileFS раскладывает файлы по доменам (пространствам имён, например по одному на приложение) и классам внутри домена. Класс несёт политику репликации — прежде всего mindevcount, минимальное число отдельных устройств, на которые должен быть скопирован файл этого класса. Фоновый репликатор постоянно сверяет реальность с метаданными и создаёт или перемещает копии, пока каждый файл не удовлетворит политике класса. Тот же механизм самовосстанавливает кластер после отказа узла или диска.

Пример классаmindevcountТипичное применениеНакладные расходы
thumbnails2Дешёво пересоздаваемые производные
user_uploads3Невосстановимые оригиналы
cache1Временные, пересоздаваемые данные

Целевая надёжность имеет прямую цену: класс с mindevcount=3 утраивает сырую ёмкость, которую нужно заложить. Это число — главный драйвер того, сколько диска потребует кластер, — планируйте его до покупки узлов.

Как записывается файл

  1. Клиент просит трекер создать новый файл в заданном домене/классе.
  2. Трекер выбирает подходящие устройства и возвращает временные URL для записи.
  3. Клиент делает PUT данных напрямую на один или несколько узлов хранения по HTTP.
  4. Клиент сообщает трекеру о завершении записи; трекер фиксирует расположение файла и ключ в MySQL.
  5. Асинхронно репликатор доводит файл до полного числа реплик его класса на разных устройствах.

«MogileFS — наша распределённая файловая система с открытым кодом. Её свойства: уровень приложения — не нужны специальные модули ядра; отсутствие единой точки отказа; автоматическая репликация файлов; лучше, чем RAID; плоское пространство имён.»

— Danga Interactive, оригинальное описание проекта MogileFS

MogileFS против Ceph, GlusterFS и S3/MinIO

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

СистемаТипДоступPOSIX-монтирование?ИзбыточностьОптимальна для
MogileFSФС уровня приложенияКлюч через клиент / HTTPНетЦелые репликиМасштабные write-once/read-many blob-ы
Ceph (RADOS/RGW)Объект + блок + ФСS3/Swift, RBD, CephFSДа (CephFS)Репликация или erasure codingУниверсально, до эксабайтов
GlusterFSPOSIX распределённая ФСМонтирование (FUSE/NFS)ДаРеплицированные / dispersed томаОбщая POSIX-ФС
MinIO / S3Объектное хранилищеS3 APIНетErasure codingСовременные S3-совместимые приложения

Если нужна монтируемая POSIX-ФС, низколатентные случайные чтения/записи или стандартный S3 API — уместнее один из остальных. Если же нужно предельно простое blob-хранилище целыми репликами, переживающее потерю узла без RAID и масштабируемое добавлением дешёвых дисков, — MogileFS по-прежнему делает это чисто.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Где MogileFS уместен — и где нет

Отлично подходит: пользовательские загрузки, галереи изображений, вложения почты, статические ассеты — всё, что адресуется по ID и отдаётся по HTTP, пишется один раз и читается многократно. Сильные стороны — дешёвое горизонтальное масштабирование, устойчивость к отказу узлов без RAID и операционная простота для такой нагрузки.

Плохо подходит: монтируемая POSIX-ФС, низколатентные случайные чтения/записи, частая модификация на месте или строгая транзакционность. Здесь берите CephFS, GlusterFS или S3-совместимое хранилище.

Запуск MogileFS на выделенных серверах

Минимальный продакшн хочет как минимум два узла хранения на разных физических машинах (чтобы класс с двумя репликами пережил потерю целого хоста), плюс два трекера и реплицированную пару MySQL под метаданные. Каждый узел хранения — это просто дешёвые диски и запущенный mogstored; масштабирование — добавлением новых. Именно такая нагрузка ложится на несколько независимых выделенных серверов в разных доменах отказа, а не на одну большую машину — нужна изоляция диска и сети, а не общее шасси.

Для слоя хранения важнее ёмкость на доллар, чем сырая скорость, поэтому ёмкие HDD выделенные серверы или специализированные storage-серверы — естественный дом для реплик. Узел MySQL с метаданными и трекеры разместите на быстрых NVMe выделенных серверах, а если реплики распределены по нескольким площадкам — заложите 10 Gbps выделенные серверы, чтобы ре-репликация после сбоя не забивала каналы. Вот актуальные выделенные серверы, на которых можно поднять узлы хранения:

CPUОЗУХранилищеТрафикЦенаДействие
Intel Xeon-E 2136 3.3GHz 6 cores32 GB DDR4 ECC2x 512 GB (NVME SoftRAID)Unmetered @ 1 Gbps$59.00/moНастроить
Intel Xeon-D 2141I 2.2GHz 8 cores128 GB DDR4 ECC2x 512 GB (NVME SoftRAID)Unmetered @ 1 Gbps$74.00/moНастроить
AMD Ryzen 5 3600X 3.8GHz 6 cores64 GB DDR4 ECC2x 512 GB (NVME SoftRAID)Unmetered @ 500 Mbps$97.00/moНастроить
Intel Xeon-E 2386G 3.5GHz 6 cores32 GB DDR4 ECC2x 512 GB (NVME SoftRAID)Unmetered @ 1 Gbps$111.00/moНастроить
AMD Ryzen 7 3800X 3.9GHz 8 cores64 GB DDR4 ECC2x 960 GB (NVME SoftRAID)Unmetered @ 500 Mbps$127.00/moНастроить
AMD Ryzen 5 5600X 3.7GHz 6 cores64 GB DDR4 ECC2x 512 GB (NVME SoftRAID)Unmetered @ 1 Gbps$127.00/moНастроить
Intel Xeon-E 2388G 3.2GHz 8 cores32 GB DDR4 ECC2x 6 TB + 2x 512 GB (SATA Hybrid SoftRAID)Unmetered @ 3 Gbps$127.00/moНастроить
AMD Epyc 7371 3.1GHz 16 cores128 GB DDR4 ECC2x 6 TB + 2x 960 GB (SATA Hybrid SoftRAID)Unmetered @ 1 Gbps$161.00/moНастроить
AMD Ryzen 7 5800X 3.8GHz 8 cores64 GB DDR4 ECC2x 960 GB (NVME SoftRAID)Unmetered @ 1 Gbps$161.00/moНастроить
AMD Ryzen 9 5900X 3.7GHz 12 cores32 GB DDR4 ECC2x 4 TB (SATA SoftRAID)Unmetered @ 1 Gbps$165.00/moНастроить
Intel Xeon Silver 4214R 2.4GHz 12 cores96 GB DDR4 ECC2x 6 TB + 2x 960 GB (SATA Hybrid SoftRAID)Unmetered @ 2 Gbps$180.00/moНастроить
AMD Ryzen 7700X64GB ECC DDR52x 1 TB (NVMe)100TB @ 3Gbps$207.00/moНастроить
AMD Epyc 7313 3.0GHz 16 cores1 TB DDR4 ECC2x 6 TB + 2x 960 GB (SATA Hybrid SoftRAID)Unmetered @ 1 Gbps$286.00/moНастроить
AMD Ryzen 7 Pro 3700 3.6GHz 8 cores32 GB DDR4 ECC6x 14 TB (SAS SoftRAID)Unmetered @ 1 Gbps$295.00/moНастроить
AMD EPYC 4464P 3.7GHz 16 cores128 GB DDR4 ECC4x 7.68 TB (NVME SoftRAID)Unmetered @ 5 Gbps$304.00/moНастроить

Рекомендуемый расчёт узлов

РольCPURAMДискСеть
Узел хранения (mogstored)Скромный (2–4 ядра)8–16 ГБЁмкий HDD/SSD, JBOD — RAID не нужен1–10 Gbps
Трекер (mogilefsd)2–4 ядра4–8 ГБНебольшой SSD/NVMe1 Gbps+
MySQL с метаданными4+ ядра16 ГБ+NVMe (надёжный, реплицированный)1 Gbps+

Частые вопросы

MogileFS ещё поддерживается и используется в 2025?

MogileFS скорее зрелый и стабильный, чем активно развивающийся. Он остаётся крепким, проверенным в бою вариантом для своей ниши — объёмное blob-хранилище на серийном железе, — хотя новые объектные хранилища и кластерные ФС забрали большинство универсальных сценариев.

Использует ли MogileFS RAID?

Нет. MogileFS намеренно отказывается от RAID и вместо этого держит несколько целых копий каждого файла на разных устройствах и хостах. Проект исторически называл это «лучше, чем RAID», потому что потерянный диск или узел восстанавливается ре-репликацией с уцелевших копий, а не перестроением массива.

Можно ли смонтировать MogileFS как обычную ФС?

В привычном смысле — нет. Это хранилище уровня приложения, доступ к которому идёт по ключу через клиентскую библиотеку или по HTTP; POSIX-семантики и монтирования ядром оно не даёт. Нужна монтируемая ФС — используйте GlusterFS или CephFS.

Какая БД нужна MogileFS?

База MySQL хранит все метаданные — какие файлы существуют и на каких устройствах лежат их реплики. Трекеры stateless; именно MySQL нужно резервировать и делать высокодоступной.

Сколько серверов нужно для старта?

Для реальной избыточности — минимум два узла хранения на разных физических хостах плюс хотя бы один трекер и один MySQL (по два для отказоустойчивости). Двух независимых выделенных серверов достаточно, чтобы пережить отказ целого хоста при классе с двумя репликами.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Историческая справка и источники

MogileFS вырос из инженерного стека LiveJournal середины 2000-х и вместе с memcached, Perlbal и Gearman стал известным кирпичиком для масштабирования крупных веб-проектов на серийном железе. Сегодня он остаётся надёжным выбором для своей ниши. Первоисточники: страница и код проекта MogileFS (изначально danga.com/mogilefs, теперь на GitHub), Perl-клиент на MetaCPAN и архитектурные заметки Danga Interactive эпохи LiveJournal.

Поделиться записью:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.