40
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo Какое ПО и “железо” использует Badoo, для хранения фотографий и видео более 300 млн пользователей

Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

  • Upload
    ontico

  • View
    357

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Эволюция программно-аппаратного

обеспечения хранения фотографий в Badoo

Какое ПО и “железо” использует Badoo, для хранения фотографий и видео более 300 млн пользователей

Anton Turetsky
Здесь должно быть:- Имя - [Должность]- Компаниявсё
Page 2: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Вступление

Мы храним много фото:• Количество пользователей - более 320 млн.• Число стран и регионов - 237?• Общий объем хранимых фотографий и видео ~ 3 PTiB

Anton Turetsky
Не Вступление, а "Badoo"/"о Badoo".Ну это стандартный слайд о конторе, что мы большие и крутые.В нем, конечно, можно сделать упор на фотографии.
Page 3: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Производительность, стоимость, надежность. Поиск компромисса.

Сочетание производительности, надежности и стоимости - определяет то как будет выглядеть ваша СХД

Page 4: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Первый рабочий вариант СХД - 2009

Page 5: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Использование классических мультиконтроллерных СХД

Основные компоненты:• SAN - Fibre Channel

• Коммутаторы Qlogic/Brocade (4/8 Gbit)• Адаптеры шины HBA (Emulex/Qlogic)

• Хранилища на базе LSI Engenio - Active-Passive• Хранилища на базе Hitachi AMS 2500/2300 - Active-Active (ALUA)• Вычислительные узлы - Oracle SunFire / HP ProLiant

Anton Turetsky
Желательно по очереди про каждый пункт, желательно с картинками.Если написать так, то все прочитают и не будут слушать то, что ты будешь говорить.
Page 6: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Хранилище с двум

я контроллерам

и

Page 7: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Проблемы в ходе эксплуатации

Технические:• Переполнение очереди (512/число хостов/число lun <=32)• Десинхронизация контроллеров• Одновременный сбой носителей• Ограничение числа конфигураций LUN-Masking• Недостаточный инструментарий мониторинга

Anton Turetsky
Если лепить вот эту кучу текста на один слайд - будешь читать и ты и все остальные.Можно выделить 3 основных момента, а про остальные рассказать вслух.Есть еще вариант разделить проблемы железа и проблемы логистики, так тоже станет понятнее.
Dmitry Likhachev
Да учту, разумно сделать разбивку, и более последовательное изложение.
Page 8: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Проблемы в ходе эксплуатации

Организационные:• Сложность резервирования и восстановления конфигураций • Отсутствие документации• Затянутые сроки ремонта и закупки компонентов• Отсутствие оборудования на рынке

Page 9: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Доработка системы хранения и кэширования фотографий

• Кэширование чтений на отдельной ферме машин.• Унификация узлов. Отказ от Polyserve и переход на Ext3• Замена RDAC на Linux MP/IO• Реконфигурация SAN - Zoning, Fabric Interconnect.• Ограничение зон видимости LUN - LUN Masking• Введение кэширующего слоя на вычислительных узлах• (flashcache/dm-cache)• Увеличение объема ОЗУ на узлах• Увеличение объема хранилищ - замена накопителей и

подключение новых дисковых полок

Anton Turetsky
Может с графикой: было/стало?
Dmitry Likhachev
Диаграммы я как раз отрисовываю сейчас. Там будут схемы первоначального состояния и пошагового изменения. Текста на слайдах очень много - на это мне уже указал Роман Поборчий, и кое то будет сокращено, а кое что анимировано и разнесено на разные слайды.
Anton Turetsky
про это было сказано ранее?
Anton Turetsky
"Кэшенирование чтений", может "чтения"?
Page 10: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)
Page 11: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

СХД после доработки

● Все узлы - bphotos● FS - ext3● Кэш на SSD● Уточнен Lun-masking

Page 12: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Причины замены хранилищ на собственныеВыработка ресурса, сбоиИсчерпание возможностей к расширениюОтсутствие приемлемой по цене альтернативыНедостаточная производительностьОтсутствие документацииНизкая оперативность поддержки и ремонтаНизкая плотность

Page 13: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Переходный вариант.

Page 14: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Проектирование новых хранилищ

• Прогнозирование роста объемов данных на ближайшие два года, на основе накопленной статистики.

• Сравнительная оценка производительности (IO Capacity)• Составление требований к функционалу. • Обзор существующих решений и технологий.• Выбор наиболее доступных и способных к быстрому введению в

эксплуатацию

Page 15: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Требования к функционалу - 1• Узлы и SAN остаются прежними • ПО - доступно, документировано и желательно открытым• Знакомый инструментарий отладки и мониторинга• Аппаратные компоненты - стандартны и доступны из разных

источников, с возможностью замены на другую модель• Высокая дисковая плотность • Данные доступны при замене компонентов системы. • Конфигурация воспроизводима, изменения протоколируются

Page 16: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

• Данные дублируются на двух хранилищах и доступны одновременно

• изменять уровень RAID(Raid Level Migration) • создавать снимки томов (snapshots) • клонировать тома • замены носителей на более емкие• изменение объема тома “на лету” • Хранилище модифицируемо, tiered storage, кэширование на

высокопроизводительных носителях.• Поддержка Multipath IO.• Различные транспорт - FC/FCOE/iSCSI/SRP и пр

Artem Denisov
не надо клонировать Томма :)))
Page 17: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Физическая компоновка хранилищ

Page 18: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Выбор аппаратных компонентов

НосителиНоситель информации используемый в СХД является расходным материалом, а его тип - одним из определяющих условий, того какова будет ее цена/надежность/производительность

Page 19: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Выбор носителей

Тип носителя (Media): SSD/HDDSSD: - малое время доступа/высокая производительность, низкое энергопотребление, толерантность к вибрации, малые объемы, небольшое время наработки на отказ (MTBF) , высокая цена

HDD: умеренная цена, большой объем, долгий период наработки на отказ, низкая производительность

Page 20: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Форм-фактор - 2.5” или 3.5”?

2.5”:

• Pro: малые физические размеры, высокая плотность, низкая вибрация, высокие скорости вращения, малое время доступа

• Contra: малый объем, высокая цена за 1Mb.

3.5”:

• Pro: большой объем, низкая цена, широкая доступность на рынке

• Contra: большой размер-низкая плотность per unit, высокая вибрация, низкие скорости вращения, большое время доступа

Page 21: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Выбор интерфейса - SATA или SAS

SATA - широко доступны и имеют низкую цену, SATA может работать поверх SAS, одноканальный доступ к диску (от одного Initiator-а), а так же имеют меньший буфер под очередь команд (NCQ). Система внутреннего мониторинга SMART сильно различается между моделями и производителямиSAS - позволяет организовать двухканальный доступ к диску, имеет более изощренные методы коррекции ошибок и позиционирования, традиционно считаются более надежными и имеющими больший ресурс

Page 22: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

SAS-SATA MUX (Интерпозер)

Мультиплексор SAS-SATA, позволяет использовать SATA диски в HA-конфигурациях

Page 23: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Схема работы SAS-SATA MUX

Page 24: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Дисковые полки - JBODДве основные составляющие стоимости СХД:1.Стоимость носителя - цена за Mb 2.Стоимость размещения - цена за слот

Размещение в дисков в расширениях JBOD, позволяет получить высокую плотность компоновки и сравнительно небольшую цену за один дисковый слот. В настоящее время доступны JBOD высокой плотности - 90x3.5” на 4U, т.е более 22 дисков в 1U

Page 25: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Компоненты JBOD:

• Корпус, дисковые слоты• Источники питания (PSU)• Контроллер питания (PDB)• Система охлаждения, вентиляторы и датчики• Бэкплейны• Экспандер - один или несколько• Интерфейсные кабели и разъемы

Page 26: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Экспандер - LSI SAS2x36Экспандер - SAS-коммутатор. Осуществляет контроль и мониторинг питания и охлаждения. Управляет LED.

Page 27: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Управляющий блок. Компоненты.

• CPU • Mainboard• RAM • SAS HBA-адаптеры шины• FibreChannel/IB/10GigE-контроллеры • Локальный RAID (OS/Support Tools)

Page 28: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Программное обеспечение.• OS - SLES 11.3/12• DeviceMapper - Multipath I/O• MDRaid - программный RAID• LVM - менеджер томов• Утилиты: sg3_utils, smp_utils• SCSI Target - LIO, SCST или иное ПО, реализующее Target• Smartmontools - мониторинг состояния носителей• Puppet Agent - управление конфигурациями• Zabbix Agent - агент системы мониторинга• Набор хелперов для конфигурации

Page 29: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Логика работы хранилищаДля балансировки нагрузки на ядра CPU и поддержки HA, используется DM Multipath

t3d11 (35000c5005050c73a) dm-31 ATA,size=1.8T features='0' hwhandler='0' wp=rw`-+- policy='queue-length 0' prio=2 status=active |- 6:0:36:0 sdal 66:80 active ready running `- 8:0:61:0 sded 128:80 active ready running

Page 30: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Конфигурация SCSI Target (SCST)

HANDLER vdisk_fileio {DEVICE private30170 { filename /dev/lv0/private30170 usn private30170 nv_cache 1 threads_pool_type shared }TARGET_DRIVER qla2x00t {TARGET 21:00:00:1b:32:89:00:1c { HW_TARGET enabled 1

GROUP dphotos30 { INITIATOR 21:00:00:1b:32:1f:14:b5 INITIATOR 21:01:00:1b:32:3f:14:b5 LUN 0 private30170

Конфигурация бэкенда - устройства хранения

Конфигурация драйвера FC HBA и lun-masking

Page 31: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Подключение хранилищ к хостам

Конфигурация multipath.confdevice { vendor "SCST_FIO" product "*"

path_grouping_policy group_by_prio path_checker tur uid_attribute "ID_SCSI_SERIAL" path_selector "round-robin 0" rr_weight uniform rr_min_io 2 failback manual }

Атрибут агрегации путей

scsi_id --export --whitelisted /dev/sdc ID_SCSI_SERIAL=private30170

scsi_id --export --whitelisted /dev/sdbk ID_SCSI_SERIAL=private30170

Отображение путейprivate30170 dm-4 SCST_FIO,private30170size=510G features='0' hwhandler='0' wp=rw`-+- policy='round-robin 0' prio=1 status=active |- 3:0:0:0 sdc 8:32 active ready running |- 3:0:1:0 sdbk 67:224 active ready running |- 4:0:1:0 sdga 131:96 active ready running `- 4:0:0:0 sdds 71:160 active ready running

Page 32: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Тестирование перед вводом в эксплуатацию.

Нагрузочный тест для CPU/RAM: - LinpackВнутренний тест SMART - Long Offline TestЗапись значений SMART - AСинтетический тест чтения/записи: - IOZONEЗапись значений SMART - B и их сравнение с AНагрузочный тест FIO - выполняется одновременно на всех подключенных узлах

Page 33: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Регламент действий при устранении сбоев

1.Отключение нагрузки, остановка записи2.Демонтаж разделов. При невозможности - отключение

вычислительного узла3.Проведение расследования, поиск и установка причины4.Устранение5.Проверка целостности данных, HDD -> RAID -> Volume -> FS6.Синхронизация разницы

Page 34: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Расследование причин сбоев и обработка нештатных ситуаций

1)Получение системных журналов с узла, записей контроллера BMC, крашдампов ядра ОС, логирование через последовательную консоль

2)Выяснение какие версии ПО/Firmware были активны на момент сбоя

3)Определение порядка сбоя - (Order of Failure), какой именно компонент, в каком хронографическом порядке вышел из строя

Page 35: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Типовые ошибки и проблемы ведущие к сбоям

• Некорректная настройка Time Long Error Recovery у HDD• Некорректная настройка DM Multipath (queue_if_no_path)• Неверное сочетания драйвера-прошивки HBA• Ошибка адресации памяти, неверная настройка NUMA• Отключение питания, выход из строя PSU• Перегрев носителей, выход из строя вентиляторов• Переполнение очередей, настройки Queue Depth• Использование нестабильных версий ПО, баги• Компоненты низкого качества, (экономия на мелочах)

Page 36: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Возможности для изменения и модернизации

Добавление кэширующего уровня - установка PCIe SSD и решения на базе dm-cache/lvmcache/bcache Замена транспортного протокола (FC/FCOE/iSCSI/iSER/SRP): - установка адаптера и реконфигурация SCSTУвеличение объемов и увеличение производительности - масштабирование: установка более емких носителей и модулей расширения JBOD

Page 37: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Статистика по отказам носителей

SeagateToshibaHitcachiHGST SATAHGST SASWDC Green

Page 38: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Статистика по производительности

Page 39: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Некоторые данные по известным ценам на компоненты (GPL)

Page 40: Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)

Заключение