SlideShare a Scribd company logo
Распределенное файловое хранилище (Nginx, Perl, ZFS) Mons Anderson Олег Мамонтов
NAS, SAN or custom? SAN: FC/iSCSI NAS: NFS/CIFS/... Custom: *
Что нам нужно? –  отдавать данные –  по протоколу HTTP
HTTP это  nginx  ;)
Что нам нужно? User -> nginx -> SAN ? User -> nginx -> NAS ? User -> nginx -> nginx ?
Стоимость решений Nginx: $ NAS: $$ SAN: $$$$$$$
Наше хранилище 8 U, 24Tb 4 x ( 2U, 6Tb ( 2+10 Tb raw ) 4 x redundancy for each file
Что нам нужно от хранилища? CRUD! ( C reate,  R ead,  U pdate,  D elete )
Что нам нужно от хранилища? Read -> HTTP C, U, D -> ?
Что нам нужно от хранилища? Read -> HTTP C, U, D ->  HTTP!
WebDAV –  Простой –  Прозрачный –  Поддерживаемый в  nginx* –  Легко реализуемый
* WebDAV + ACL Patch: –  X-ACL: 0644 –  X-Time: 1234567890
Step by step: Front
Front
Front
Front
Storage N Tb =  storage N/2 storage N/2
Storage N Tb hash storage storage
Storage N Tb hash storage storage
Storage hash storage storage storage storage
Storage hash storage storage storage storage
Resizer hash storage storage storage image_filter() storage image_filter()
Resizer hash Low CPU storage storage storage image_filter() storage image_filter()
Resizer storage storage storage storage Resize Resize Resize
Hashing ? Hash storage storage storage storage Resize Resize Resize
Hashing ScaleHash(time,id) storage storage storage storage Resize Resize Resize
Hashing URL: http://…/ObjectID ObjectID = (xxx)-(xxx)-… ID Time
Hashing Timeline past upgrade over future start a b d c 0x0010 0x00FF 0x02FF 0x0FFF e 0x0000
Hashing TimeHash(Time) { 0x0000 - 0x00FF -> [ a, b ] 0x00FF - 0x02FF -> [ a, c, d ] 0x02FF - 0x0FFF -> [ c, d ] 0x0FFF - 0xFFFF -> [ f ] } -> groups
Hashing IDHash(ID, groups) -> group
Hashing TimeHash(const Time) = const IDHash(const ID, groups) = const
Access Control DB Perl: - AnyEvent::HTTPD - AnyEvent::HTTP - AnyEvent::DBI storage storage group
Access Control: Public object -> GET /XXX Perl handler (check perms) ← 200 OK
Access Control: Protected object ->  GET /XXX ->  Perl handler ←  X-Accel-Redirect: /access/... ->  GET /access/... ->  proxy_pass http://ACLD  ←  X-Accel-Redirect: /int/.. ->  GET /int/.. ←  ←  200 OK
Result?
2+2=4, 2+2=4, 2+2=4, … ! CPU Cache?
Cache…
Cache is a problem :(
/cache proxy: //resize /source/ ?q=/i/AxB /i proxy://store resize() /internal 200 OK /i proxy: //storage /i/AxB /i proxy: //cache /i/AxB /source handler() XAccel: /cache/i/AxB+ (mtime:ctime:status) /i/AxB+ /source/ ?q=/i/AxB cache store 200 OK HIT /source handler() /source/ ?q=/i/AxB+ /source/ ?q=/i/AxB+ XAccel: /int 200 OK 200 OK 200 OK
Combine? MEM CPU HDD
Combined! Money are saved :) Deployed on same hosts Full resource consumption
Combined, but scalable! Cache cluster Resize cluster Storage cluster + MEM + CPU + HDD
Create, Update, Delete? PUT DELETE OPTIONS GET GET storage storage
Temporary loss PUT DELETE OPTIONS GET GET storage storage
Flashing error GET GET storage storage
No file? Ask a friend! GET GET 404 fallback  proxy_pass storage storage
404 Fallback: avoiding recursion GET ask  next… unless asked storage storage
404 Fallback Just... proxy_next_upstream  http_404 storage storage
Again about PUT PUT storage storage
How about single PUT? PUT DELETE OPTIONS ZFS «replication» storage storage
Приоритеты выбора решения Надежность / избыточность хранения
Производительность чтения и записи
Возможность распределения нагрузки
Потенциальная масштабируемость
Стандартные аппаратные компоненты
Простота в настройке и обслуживании
Традиционная работа с диском Имя <=> объект (inode) объект <=> LBA тома LBA тома <=> LBA RAID LBA RAID <=> LBA диска Файловая система Файловая система Менеджер томов RAID контроллер Дисковые устройства
Rampant layering violation  ;) Файловая система (zfs) Модель агрегации (zpool) Дисковые устройства
stripe / mirror / raidz / ? stripe  –  быстро ,  дешево ,  ненадежно mirror  –  быстро ,  надежно ,  дорого raidz  –  относительно  надежно ,  недорого ,  медленно :(
Универсального решения нет :( Конфигурация Объем, GB IOPS stripe 1 x 100 10000 20000 mirror 2 x 50 5000 20000 raidz 1 x ( 99 + 1 ) 9900 200 raidz 5 x ( 19 + 1 ) 9500 1000 raidz 33 x ( 2 + 1 ) 6600 6600 Дано:  100 дисков по 100GB, 200 IOPS
Наше хранилище — 6TB / 2U mirror raidz1 raidz1 raidz1 stripe spare 2U:  2 x 500MB + 10 x 1TB, SATA-2

More Related Content

What's hot (19)

PDF
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
PDF
Механика DDoS (Александр Крижановский)
Ontico
 
PPTX
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Ontico
 
PPT
введение в Gpu
Anatoliy Sviridenkov
 
PDF
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
PPTX
Docker & Badoo: 
никогда не останавливайся на достигнутом
Anton Turetsky
 
PPTX
Антон Турецкий
CodeFest
 
PDF
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
PDF
Марина Широчкина: Верстка. Вид снизу
Yandex
 
PPTX
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
PDF
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
PDF
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
Ontico
 
PDF
My talk on monitoring systems at RootConf 2016
Alex Chistyakov
 
PPTX
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
Ontico
 
PPTX
DataCore case studies
korn_aaf
 
PDF
03 - Hadoop. HDFS Shell-команды
Roman Brovko
 
PDF
Александр Крижановский, NatSys Lab
Ontico
 
PPTX
Mysql vs postgresql
Daniel Podolsky
 
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
Механика DDoS (Александр Крижановский)
Ontico
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Ontico
 
введение в Gpu
Anatoliy Sviridenkov
 
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
Docker & Badoo: 
никогда не останавливайся на достигнутом
Anton Turetsky
 
Антон Турецкий
CodeFest
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
Марина Широчкина: Верстка. Вид снизу
Yandex
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
Ontico
 
My talk on monitoring systems at RootConf 2016
Alex Chistyakov
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
Ontico
 
DataCore case studies
korn_aaf
 
03 - Hadoop. HDFS Shell-команды
Roman Brovko
 
Александр Крижановский, NatSys Lab
Ontico
 
Mysql vs postgresql
Daniel Podolsky
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 

Similar to распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2 (20)

PDF
Extreme cloud storage on free bsd (Андрей Пантюхин)
Ontico
 
PDF
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Fuenteovejuna
 
PPT
phpConf 2010 Классификация систем хранения
Slach
 
PDF
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
PDF
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
rit2011
 
PDF
Isilapp — Extreme Cloud Storage on FreeBSD
Andrew Pantyukhin
 
PDF
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
PPTX
Hosting for forbes.ru_
drupalconf
 
ODP
Hcs3
Ontico
 
PPT
распределенная архитектура Lamp приложений петр зайцев
Media Gorod
 
PDF
Sun Microsystems открытые системы хранения данных
Nick Turunov
 
PDF
Andrew Pantyukhin P Nf Sv4
guest092df8
 
PDF
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Siel01
 
PPTX
Cassandra
Ilya Medvedev
 
PDF
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
rit2011
 
PDF
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
HappyDev
 
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Extreme cloud storage on free bsd (Андрей Пантюхин)
Ontico
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Fuenteovejuna
 
phpConf 2010 Классификация систем хранения
Slach
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
rit2011
 
Isilapp — Extreme Cloud Storage on FreeBSD
Andrew Pantyukhin
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Hosting for forbes.ru_
drupalconf
 
Hcs3
Ontico
 
распределенная архитектура Lamp приложений петр зайцев
Media Gorod
 
Sun Microsystems открытые системы хранения данных
Nick Turunov
 
Andrew Pantyukhin P Nf Sv4
guest092df8
 
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Siel01
 
Cassandra
Ilya Medvedev
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
rit2011
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
HappyDev
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Ad

More from rit2011 (20)

PPT
классификация Ddos. александр лямин, артем гавриченков. зал 2
rit2011
 
PDF
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
rit2011
 
PPT
как объяснить заказчику, что он не прав. денис тучин. зал 3
rit2011
 
PDF
классификация Ddos. александр лямин, артем гавриченков. зал 2
rit2011
 
PPTX
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
rit2011
 
PDF
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
rit2011
 
PDF
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
rit2011
 
PPT
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
rit2011
 
PDF
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
rit2011
 
PPT
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
rit2011
 
PDF
как стать хорошим веб технологом. нарек мкртчян. зал 4
rit2011
 
PPTX
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
rit2011
 
PPT
выращиваем интерфейс своими руками. ольга павлова. зал 3
rit2011
 
PPT
от Flash к html5. александр бацуев. зал 4
rit2011
 
PPTX
Ie9 и ie10. алекс могилевский. зал 2
rit2011
 
PPTX
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
rit2011
 
PDF
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
rit2011
 
POTX
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
rit2011
 
PPTX
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
rit2011
 
PPTX
круглый стол по найму. александр зиза. зал 2
rit2011
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
rit2011
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
rit2011
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
rit2011
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
rit2011
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
rit2011
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
rit2011
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
rit2011
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
rit2011
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
rit2011
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
rit2011
 
от Flash к html5. александр бацуев. зал 4
rit2011
 
Ie9 и ie10. алекс могилевский. зал 2
rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
rit2011
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
rit2011
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
rit2011
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
rit2011
 
круглый стол по найму. александр зиза. зал 2
rit2011
 
Ad

распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2