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

Отримати VPS arrow_forward

MogileFS: розподілена файлова система для надлишкового об'єктного сховища

calendar_month July 07, 2026 schedule 8 хв. читання visibility 23 переглядів
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.