Download - Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дмитрий Лихачев (Badoo)
Эволюция программно-аппаратного
обеспечения хранения фотографий в Badoo
Какое ПО и “железо” использует Badoo, для хранения фотографий и видео более 300 млн пользователей
Вступление
Мы храним много фото:• Количество пользователей - более 320 млн.• Число стран и регионов - 237?• Общий объем хранимых фотографий и видео ~ 3 PTiB
Производительность, стоимость, надежность. Поиск компромисса.
Сочетание производительности, надежности и стоимости - определяет то как будет выглядеть ваша СХД
Первый рабочий вариант СХД - 2009
Использование классических мультиконтроллерных СХД
Основные компоненты:• 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
Хранилище с двум
я контроллерам
и
Проблемы в ходе эксплуатации
Технические:• Переполнение очереди (512/число хостов/число lun <=32)• Десинхронизация контроллеров• Одновременный сбой носителей• Ограничение числа конфигураций LUN-Masking• Недостаточный инструментарий мониторинга
Проблемы в ходе эксплуатации
Организационные:• Сложность резервирования и восстановления конфигураций • Отсутствие документации• Затянутые сроки ремонта и закупки компонентов• Отсутствие оборудования на рынке
Доработка системы хранения и кэширования фотографий
• Кэширование чтений на отдельной ферме машин.• Унификация узлов. Отказ от Polyserve и переход на Ext3• Замена RDAC на Linux MP/IO• Реконфигурация SAN - Zoning, Fabric Interconnect.• Ограничение зон видимости LUN - LUN Masking• Введение кэширующего слоя на вычислительных узлах• (flashcache/dm-cache)• Увеличение объема ОЗУ на узлах• Увеличение объема хранилищ - замена накопителей и
подключение новых дисковых полок
СХД после доработки
● Все узлы - bphotos● FS - ext3● Кэш на SSD● Уточнен Lun-masking
Причины замены хранилищ на собственныеВыработка ресурса, сбоиИсчерпание возможностей к расширениюОтсутствие приемлемой по цене альтернативыНедостаточная производительностьОтсутствие документацииНизкая оперативность поддержки и ремонтаНизкая плотность
Переходный вариант.
Проектирование новых хранилищ
• Прогнозирование роста объемов данных на ближайшие два года, на основе накопленной статистики.
• Сравнительная оценка производительности (IO Capacity)• Составление требований к функционалу. • Обзор существующих решений и технологий.• Выбор наиболее доступных и способных к быстрому введению в
эксплуатацию
Требования к функционалу - 1• Узлы и SAN остаются прежними • ПО - доступно, документировано и желательно открытым• Знакомый инструментарий отладки и мониторинга• Аппаратные компоненты - стандартны и доступны из разных
источников, с возможностью замены на другую модель• Высокая дисковая плотность • Данные доступны при замене компонентов системы. • Конфигурация воспроизводима, изменения протоколируются
• Данные дублируются на двух хранилищах и доступны одновременно
• изменять уровень RAID(Raid Level Migration) • создавать снимки томов (snapshots) • клонировать тома • замены носителей на более емкие• изменение объема тома “на лету” • Хранилище модифицируемо, tiered storage, кэширование на
высокопроизводительных носителях.• Поддержка Multipath IO.• Различные транспорт - FC/FCOE/iSCSI/SRP и пр
Физическая компоновка хранилищ
Выбор аппаратных компонентов
НосителиНоситель информации используемый в СХД является расходным материалом, а его тип - одним из определяющих условий, того какова будет ее цена/надежность/производительность
Выбор носителей
Тип носителя (Media): SSD/HDDSSD: - малое время доступа/высокая производительность, низкое энергопотребление, толерантность к вибрации, малые объемы, небольшое время наработки на отказ (MTBF) , высокая цена
HDD: умеренная цена, большой объем, долгий период наработки на отказ, низкая производительность
Форм-фактор - 2.5” или 3.5”?
2.5”:
• Pro: малые физические размеры, высокая плотность, низкая вибрация, высокие скорости вращения, малое время доступа
• Contra: малый объем, высокая цена за 1Mb.
3.5”:
• Pro: большой объем, низкая цена, широкая доступность на рынке
• Contra: большой размер-низкая плотность per unit, высокая вибрация, низкие скорости вращения, большое время доступа
Выбор интерфейса - SATA или SAS
SATA - широко доступны и имеют низкую цену, SATA может работать поверх SAS, одноканальный доступ к диску (от одного Initiator-а), а так же имеют меньший буфер под очередь команд (NCQ). Система внутреннего мониторинга SMART сильно различается между моделями и производителямиSAS - позволяет организовать двухканальный доступ к диску, имеет более изощренные методы коррекции ошибок и позиционирования, традиционно считаются более надежными и имеющими больший ресурс
SAS-SATA MUX (Интерпозер)
Мультиплексор SAS-SATA, позволяет использовать SATA диски в HA-конфигурациях
Схема работы SAS-SATA MUX
Дисковые полки - JBODДве основные составляющие стоимости СХД:1.Стоимость носителя - цена за Mb 2.Стоимость размещения - цена за слот
Размещение в дисков в расширениях JBOD, позволяет получить высокую плотность компоновки и сравнительно небольшую цену за один дисковый слот. В настоящее время доступны JBOD высокой плотности - 90x3.5” на 4U, т.е более 22 дисков в 1U
Компоненты JBOD:
• Корпус, дисковые слоты• Источники питания (PSU)• Контроллер питания (PDB)• Система охлаждения, вентиляторы и датчики• Бэкплейны• Экспандер - один или несколько• Интерфейсные кабели и разъемы
Экспандер - LSI SAS2x36Экспандер - SAS-коммутатор. Осуществляет контроль и мониторинг питания и охлаждения. Управляет LED.
Управляющий блок. Компоненты.
• CPU • Mainboard• RAM • SAS HBA-адаптеры шины• FibreChannel/IB/10GigE-контроллеры • Локальный RAID (OS/Support Tools)
Программное обеспечение.• 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 - агент системы мониторинга• Набор хелперов для конфигурации
Логика работы хранилищаДля балансировки нагрузки на ядра 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
Конфигурация 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
Подключение хранилищ к хостам
Конфигурация 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
Тестирование перед вводом в эксплуатацию.
Нагрузочный тест для CPU/RAM: - LinpackВнутренний тест SMART - Long Offline TestЗапись значений SMART - AСинтетический тест чтения/записи: - IOZONEЗапись значений SMART - B и их сравнение с AНагрузочный тест FIO - выполняется одновременно на всех подключенных узлах
Регламент действий при устранении сбоев
1.Отключение нагрузки, остановка записи2.Демонтаж разделов. При невозможности - отключение
вычислительного узла3.Проведение расследования, поиск и установка причины4.Устранение5.Проверка целостности данных, HDD -> RAID -> Volume -> FS6.Синхронизация разницы
Расследование причин сбоев и обработка нештатных ситуаций
1)Получение системных журналов с узла, записей контроллера BMC, крашдампов ядра ОС, логирование через последовательную консоль
2)Выяснение какие версии ПО/Firmware были активны на момент сбоя
3)Определение порядка сбоя - (Order of Failure), какой именно компонент, в каком хронографическом порядке вышел из строя
Типовые ошибки и проблемы ведущие к сбоям
• Некорректная настройка Time Long Error Recovery у HDD• Некорректная настройка DM Multipath (queue_if_no_path)• Неверное сочетания драйвера-прошивки HBA• Ошибка адресации памяти, неверная настройка NUMA• Отключение питания, выход из строя PSU• Перегрев носителей, выход из строя вентиляторов• Переполнение очередей, настройки Queue Depth• Использование нестабильных версий ПО, баги• Компоненты низкого качества, (экономия на мелочах)
Возможности для изменения и модернизации
Добавление кэширующего уровня - установка PCIe SSD и решения на базе dm-cache/lvmcache/bcache Замена транспортного протокола (FC/FCOE/iSCSI/iSER/SRP): - установка адаптера и реконфигурация SCSTУвеличение объемов и увеличение производительности - масштабирование: установка более емких носителей и модулей расширения JBOD
Статистика по отказам носителей
SeagateToshibaHitcachiHGST SATAHGST SASWDC Green
Статистика по производительности
Некоторые данные по известным ценам на компоненты (GPL)
Заключение