Распределенная отказоустойчивая система хранения статичных данных Глеб Воронич
Требования к системе хранения Надежность Простота эксплуатации для админов Простота для разработчиков Прозрачность для пользователей Возможность вносить изменения в схему отдачи
Распределенные ФС Плюсы: Репликация происходит сама по себе Минусы: Недостаточная производительность Зависимость от Fiber/10GE/InfiniBand Сложность настройки и сопровождения Сложность восстановления ФС Lock Managers, blah-blah-blah
А что еще есть? Плюсы: Отказоустойчивость Поддержка сторонними специалистами Backup не нужен (если верить на слово) Минусы: Географическая удаленность Цена! Хранение 100Tb $7168/мес
MogileFS
What did u say?
MogileFS Brad Fitzpatrick Создатель LiveJournal Основатель Danga Interactive Сейчас работает в Google Danga Interactive memcached OpenID What did u say?
MogileFS Brad Fitzpatrick Создатель LiveJournal Основатель Danga Interactive Сейчас работает в Google Danga Interactive memcached OpenID
Преимущества Уровень приложения Отсутствие SPOF Автоматическая репликация на основе классов RAID больше не нужен Свобода выбора ФС
API Java Perl PHP Python Ruby
Архитектура Tracker (mogilefsd) Database (MySQL/PostgreSQL) Storage Node (mogstored)
Термины и определения Домен namespace Класс политика Хост Storage Node Девайс виртуальное устройство
Flat Namespaces (домены) namespace1:/path/to/file namespace2:/path/to/file namespaceN:/path/to/file
Storage Node изнутри Любой дистрибутив Linux Не требуется делать все с нуля WebDAV Server (e.g. Nginx) /var/mogdata VS /home/ivan/WTF Девайс = директория /dev132/0/178/804/ fid
Можно даже...
Но лучше так
Command Line Interface mogadm host add node1.project.com --ip= status=alive mogadm device add node1.project.com dev10 mogadm domain add project.com mogadm domain add happycontent.net mogadm class add project.com images --mindevcount=4 -- replpolicy="MultipleHosts"
Command Line Interface mogadm settings set network_zones near,far mogadm settings set zone_near /16 mogadm settings set zone_far /16 mogadm class add happycontent.net images --mindevcount=1 --replpolicy="HostsPerNetwork(near=2,far=1)"
Как это выглядит в коде? ##
Как это отдается? Nginx + mogilefs_module Простота настройки location /mogile {mogilefs_domain test.mogile;mogilefs_class class2;mogilefs_tracker :7001;mogilefs_pass {proxy_pass $mogilefs_path;}} Минимальные ресурсы Высокая скорость Собственный backend Гибкость и безграничные возможности
Где отказоустойчивость?
Master - Master Active - Standby Состояние storage проверяет сам tracker
Где отказоустойчивость?
host device size(G) used(G) free(G) use% ob state I/O% [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % down 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 [ 1] dev % writeable 0.0 Автоматическое определение недоступности девайсов и хостов
Девайсы alive down dead readonly drain Device Weight dev10 weight=100 dev15 weight=200 dev20 weight=400
Плюшки FSCK Rebalancing Поддержка memcached mogadm rebalance settingsrebal_policy = from_percent_used=95 to_percent_free=50
Rebalancing Source:from_hostsfro m_devicesfrom_perce nt_usedfrom_percent_ freefrom_space_usedf rom_space_freefid_ag elimit_typelimit_bylimit Target:to_hoststo_devi cesto_percent_usedto _percent_freeto_spac e_usedto_space_free not_to_hostsnot_to_d evicesuse_dest_devsl eave_in_drain_mode # host ids# device ids# 0.nn * 100 # old | new # global | device # size | count | percent | none # 100g | 10% | 5000 # all | N (list up to N devices to rep pol) $ mogadm rebalance status Rebalance is running Rebalance status: bytes_queued = completed_devs = 102,125,151,148 fids_queued = sdev_current = 119 sdev_lastfid = sdev_limit = source_devs = 108,115,103,113,152,142,107 $ mogadm rebalance test Tested rebalance policy... Policy: etc Source devices: Destination devices:
Быстро, масштабно, надежно. 23 млн файлов 180 Tb данных mysql> select count(fid) as files, sum(length)/ as size from file\G******************files: size:
Быстро, масштабно, надежно. Ни единого разрыва Ни одного утраченного файла
Быстро, масштабно, надежно. Ежедневно: 2.5 млн просмотров 350 тыс пользователей Ежемесячно: 3.5 Tb данных 30 тыс файлов
Быстро, масштабно, надежно. Min 4 Gbps Max 13 Gbps
Спасибо! Глеб Воронич