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