SlideShare a Scribd company logo
Опыт построения и
эксплуатации
большого файлового
хранилища
Даниил Подольский
Git in Sky
или
Ночью через лес
Файловое хранилище –
что это и зачем оно
• Файл: именованный кусок данных, слишком
большой для того, чтобы обращаться с ним, как
с одним куском
• Краеугольный камень здорового питания
современного обмена данными. Так уж
получилось.
• Файловое хранилище – место, где хранятся
файлы
• Файловое хранилище – место, откуда отдаются
файлы
Большое файловое
хранилище – пришла
беда откуда не ждали
• Много байтов? Нет.
• Много файлов? Нет.
• Много обновлений? Теплее...
• Проблема управления? Тепло!
• «Большое» - описание ситуации, а не сущности!
Парадокс файлового
хранилища
• Файловое хранилище не нужно. От слова
«совсем»
• В бизнес-требованиях не написано «хранить
файлы»
– Даже когда написано – это ошибка
• В бизнес требованиях написано «отдавать
файлы»
• Но отдать можно лишь то, что имеешь
10 лет под кроватью
• Setup.Ru как источник
неограниченного количества
разнообразных файлов
• Картинки и разметка – что хранить,
а что генерировать
• Постоянные обновления – до 20М
файлов в сутки
2012, начало:
rsync, обезьяны!
Как оно было
• Локальная EXT4
• До 6М файлов
• SSD для горячего контента
• HDD для объемного контента
Проблемы
• Eventual отказоустойчивость
• Никакой статистики
2012, лето:
а они как ломанули!..
Как оно было
• 6.5М файлов
Проблемы
• 6 часов на обход дерева – контент менялся быстрее, чем
мы его синхронизировали
Решение
• Файлы – в базу!
• Большие файлы – в BLOB
• Самописная master-master репликация
2103, весна:
поиски начала конца
Как оно было
• 25М файлов
Проблемы
• Длинные транзакции, автоинкремент и проблемы
синхронизации
• Контент меняется быстрее, чем мы его синхронизируем
Решение
• Меняем бизнес-логику для преодоления проблем
eventual consistency
2103, осень:
кто съел процессор
Как оно было
• 50М файлов
Проблемы
• Долгий join
Решение
• Materialized views
2014, весна:
нам некуда больше жать
Как оно было
• 120М файлов
Проблемы
• Контент перестал помещаться на диск
Решение
• Большие файлы были вынесены на leofs хранилище
2015, начало:
все свободны, всем - спасибо
Как оно было
• 400М файлов
Проблемы
• Расширение кластера leofs привело к его разрушению
• Rakuten помощь оказать не смог
Решение
• Паниковать!
• Пробовать iSCSI квази-СХД.
• Паниковать!!!
2015, весна:
бесконечность не предел
Как оно было
• 450М файлов
Проблемы
• На leofs заканчивается место. Расширение невозможно
• Rakuten помощь оказать не смог
• Индексы PostgreSQL перестали помещаться в память
Решение
• Разработать собственное хранилище на базе NoSQL
СУБД
Чему мы научились
• Отказоустойчивость – это «отдавать» и
«обновлять», но традиционные хранилища –
такие хранилища…
• «Ничто не заменит кубы», или файловый кеш
• Распределенные системы хранения – блеск и
нищета дешевого кластера
– Мерзость eventual consistency
– Ужас strong consistency
– Беспросветность ребалансинга
– А еще оно тормозит
Чему еще мы научились
• Хорошо, когда файлы мелкие – тогда
они не файлы.
• PostgreSQL BLOB – не делай так больше
• Материализация view – иногда без этого
никак
• Самописная репликация – road to hell
• Удалять файлы придется
• Java лучше, чем Erlang
Чему мы НЕ научились
• Большая отказоустойчивая СХД:
немного слишком дорого
• Распределенные POSIX-совместимые
файловые системы: созданы под
другие задачи
Нет у революции конца
• Кластерная NoSQL СУБД
• Самописный чанкинг
• Самописное версионирование
• Самописный dedup (rolling checksum)
• Самописные транзакции
• Ну и сжатие на уровне чанка
Это работает!
Немного цифр
• 1.5М сайтов
• 450М файлов
• 6Т данных – 18Т с избыточностью
• 1.5К запросов в секунду
Все-таки
Ночью через лес
• 2Т лимит, или почему не получился
бесшовный переезд
• 3 часа на рестарт ноды
• 60 часов на ребалансинг
Вопросы?

More Related Content

PDF
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
PPTX
опыт построения и эксплуатации большого файлового хранилища
PPTX
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
PPT
Как устроен NoSQL, Андрей Аксенов (Sphinx)
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PPTX
Как устроен поиск / Андрей Аксенов (Sphinx)
PDF
ekbpy'2012 - Данила Штань - Распределенное хранилище
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
опыт построения и эксплуатации большого файлового хранилища
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Как устроен поиск / Андрей Аксенов (Sphinx)
ekbpy'2012 - Данила Штань - Распределенное хранилище

What's hot (20)

PPTX
Организация надежного резервного копирования веб-проекта. Практика и подводны...
PDF
RTB DSP на языке Go: укрощение buzzwords
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
PPTX
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PDF
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
PPTX
Open source субд глазами обычного программиста
PDF
SphinxSearch Meetup - Tips&tricks
PPTX
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
PPTX
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
PDF
Near-realtime аналитика событий в высоконагруженном проекте
PPT
Цена абстракции, Андрей Аксёнов (Sphinx)
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Frontera обход испанского интернета
PDF
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PPTX
Mysql vs postgresql
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
PPTX
Как мы готовим MySQL / Николай Королёв (Badoo)
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PDF
Redis presentation
Организация надежного резервного копирования веб-проекта. Практика и подводны...
RTB DSP на языке Go: укрощение buzzwords
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Open source субд глазами обычного программиста
SphinxSearch Meetup - Tips&tricks
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
Near-realtime аналитика событий в высоконагруженном проекте
Цена абстракции, Андрей Аксёнов (Sphinx)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Frontera обход испанского интернета
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
Mysql vs postgresql
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Как мы готовим MySQL / Николай Королёв (Badoo)
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
Redis presentation
Ad

Viewers also liked (20)

PDF
Использование haproxy/iptables+etcd+confd для автоматического service discove...
PPTX
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
PDF
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
PDF
МДМ Банк: опыт быстрой модернизации кредитного фронт-офиса
PPTX
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PDF
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
PDF
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
PPTX
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
PPTX
Эволюция службы эксплуатации «Spotify» / Лев Попов (Spotify)
PDF
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
PPTX
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
PDF
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PPTX
Highload в ВУЗе идеализм, расчётливый менеджмент или пустые надежды / Артем К...
PDF
Мой маленький уютный PaaS / Илья Беда (bro.agency)
PPTX
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Использование haproxy/iptables+etcd+confd для автоматического service discove...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
МДМ Банк: опыт быстрой модернизации кредитного фронт-офиса
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Эволюция службы эксплуатации «Spotify» / Лев Попов (Spotify)
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Как не положить тысячи серверов с помощью системы централизованного управлени...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Highload в ВУЗе идеализм, расчётливый менеджмент или пустые надежды / Артем К...
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Ad

Similar to Опыт построения и эксплуатации большого файлового хранилища / Даниил Подольский (Git in Sky) (18)

ODP
My talk on LeoFS, HappyDev 2014
PDF
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
PDF
Александр Киров — Acronis — ICBDA 2015
ODP
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
PDF
My talk on LeoFS, Highload++ 2014
PDF
Устройство современного распределенного Object Storage на примере LeoFS, Алек...
PPT
phpConf 2010 Классификация систем хранения
PDF
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
9 vinogradov
PPTX
Технологии хранения для больших проектов / Сергей Платонов (RAIDIX)
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
PPTX
Спасение 6 миллионов файлов в условиях полного Хецнера
PPTX
Введение в Docker
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
PPTX
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
ODP
Hcs3
My talk on LeoFS, HappyDev 2014
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
Александр Киров — Acronis — ICBDA 2015
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
My talk on LeoFS, Highload++ 2014
Устройство современного распределенного Object Storage на примере LeoFS, Алек...
phpConf 2010 Классификация систем хранения
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
9 vinogradov
Технологии хранения для больших проектов / Сергей Платонов (RAIDIX)
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Спасение 6 миллионов файлов в условиях полного Хецнера
Введение в Docker
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Hcs3

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

Опыт построения и эксплуатации большого файлового хранилища / Даниил Подольский (Git in Sky)

  • 1. Опыт построения и эксплуатации большого файлового хранилища Даниил Подольский Git in Sky
  • 3. Файловое хранилище – что это и зачем оно • Файл: именованный кусок данных, слишком большой для того, чтобы обращаться с ним, как с одним куском • Краеугольный камень здорового питания современного обмена данными. Так уж получилось. • Файловое хранилище – место, где хранятся файлы • Файловое хранилище – место, откуда отдаются файлы
  • 4. Большое файловое хранилище – пришла беда откуда не ждали • Много байтов? Нет. • Много файлов? Нет. • Много обновлений? Теплее... • Проблема управления? Тепло! • «Большое» - описание ситуации, а не сущности!
  • 5. Парадокс файлового хранилища • Файловое хранилище не нужно. От слова «совсем» • В бизнес-требованиях не написано «хранить файлы» – Даже когда написано – это ошибка • В бизнес требованиях написано «отдавать файлы» • Но отдать можно лишь то, что имеешь
  • 6. 10 лет под кроватью • Setup.Ru как источник неограниченного количества разнообразных файлов • Картинки и разметка – что хранить, а что генерировать • Постоянные обновления – до 20М файлов в сутки
  • 7. 2012, начало: rsync, обезьяны! Как оно было • Локальная EXT4 • До 6М файлов • SSD для горячего контента • HDD для объемного контента Проблемы • Eventual отказоустойчивость • Никакой статистики
  • 8. 2012, лето: а они как ломанули!.. Как оно было • 6.5М файлов Проблемы • 6 часов на обход дерева – контент менялся быстрее, чем мы его синхронизировали Решение • Файлы – в базу! • Большие файлы – в BLOB • Самописная master-master репликация
  • 9. 2103, весна: поиски начала конца Как оно было • 25М файлов Проблемы • Длинные транзакции, автоинкремент и проблемы синхронизации • Контент меняется быстрее, чем мы его синхронизируем Решение • Меняем бизнес-логику для преодоления проблем eventual consistency
  • 10. 2103, осень: кто съел процессор Как оно было • 50М файлов Проблемы • Долгий join Решение • Materialized views
  • 11. 2014, весна: нам некуда больше жать Как оно было • 120М файлов Проблемы • Контент перестал помещаться на диск Решение • Большие файлы были вынесены на leofs хранилище
  • 12. 2015, начало: все свободны, всем - спасибо Как оно было • 400М файлов Проблемы • Расширение кластера leofs привело к его разрушению • Rakuten помощь оказать не смог Решение • Паниковать! • Пробовать iSCSI квази-СХД. • Паниковать!!!
  • 13. 2015, весна: бесконечность не предел Как оно было • 450М файлов Проблемы • На leofs заканчивается место. Расширение невозможно • Rakuten помощь оказать не смог • Индексы PostgreSQL перестали помещаться в память Решение • Разработать собственное хранилище на базе NoSQL СУБД
  • 14. Чему мы научились • Отказоустойчивость – это «отдавать» и «обновлять», но традиционные хранилища – такие хранилища… • «Ничто не заменит кубы», или файловый кеш • Распределенные системы хранения – блеск и нищета дешевого кластера – Мерзость eventual consistency – Ужас strong consistency – Беспросветность ребалансинга – А еще оно тормозит
  • 15. Чему еще мы научились • Хорошо, когда файлы мелкие – тогда они не файлы. • PostgreSQL BLOB – не делай так больше • Материализация view – иногда без этого никак • Самописная репликация – road to hell • Удалять файлы придется • Java лучше, чем Erlang
  • 16. Чему мы НЕ научились • Большая отказоустойчивая СХД: немного слишком дорого • Распределенные POSIX-совместимые файловые системы: созданы под другие задачи
  • 17. Нет у революции конца • Кластерная NoSQL СУБД • Самописный чанкинг • Самописное версионирование • Самописный dedup (rolling checksum) • Самописные транзакции • Ну и сжатие на уровне чанка Это работает!
  • 18. Немного цифр • 1.5М сайтов • 450М файлов • 6Т данных – 18Т с избыточностью • 1.5К запросов в секунду
  • 19. Все-таки Ночью через лес • 2Т лимит, или почему не получился бесшовный переезд • 3 часа на рестарт ноды • 60 часов на ребалансинг