HeadlinesBriefing HeadlinesBriefing.com

SBD: более простая файловая система для Sprites

Hacker News •
×

Даниэль Бота утверждает, что при создании инфраструктуры целью должно быть простое и надёжное решение, например пачка спагетти за 1 доллар, а не хитроумное. Когда началась работа над Sprites, команда не нашла подходящей готовой файловой системы и создала свою. Этот дизайн был хитроумным, и именно поэтому команда в итоге невзлюбила его. Эта статья представляет его замену — Sprites Block Device (SBD).

Корень диска Sprite по-прежнему находится в объектном хранилище, а не на NVMe-накопителе сервера, на котором работает Sprite. Именно это позволяет Sprite уснуть, проснуться на другом сервере и всё равно найти свои файлы. Поскольку объектные хранилища не могут изменить часть объекта, необходимо что-то, что преобразует редактирование файлов на месте в запись целых объектов. На момент запуска эту роль выполнял сильно модифицированный JuiceFS с хранилищем метаданных на основе переписанного SQLite, которое сохранялось надёжно с помощью Litestream. Он хранил один дисковый образ объёмом 100 ГБ с файловой системой ext4 внутри, а контрольные точки были быстрыми, потому что в основном лишь перемещали метаданные.

С ростом нагрузки начали появляться трещины. Система опиралась на две отдельно сохраняемые базы данных — одну для метаданных фрагментов и одну для контрольных точек, и любая из них могла быть корректной, пока другая была неверной. Запуск JuiceFS в режиме отложенной записи означал, что при сбое метаданные могли указывать на фрагменты, которые так и не были загружены. Верхний слой ext4 тогда не проходил проверку контрольных сумм и переходил в режим только для чтения, а контрольные точки, использующие те же фрагменты, не могли исправить повреждение.

SBD заменяет этот дизайн более традиционным подходом, стремясь сохранить то же простое поведение, но с большей надёжностью.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing