джуниор
402
0
24 сентября 2024
джуниор

Не только диски: как устроена СХД enterprise-класса

Изображение создано
с помощью нейросети
Изображение создано с помощью нейросети
402
0
24 сентября 2024

Буквально каждое наше действие в цифровой среде провоцирует увеличение общего объема данных. Выложили фото в соцсети, оплатили коммунальные услуги в приложении, заказали продукты на ужин — все это информация, которая должна где-то храниться. И не просто лежать, записанная на дисках, и «пылиться», но еще и выдаваться нам при необходимости. Как организовать это море данных и настроить их хранение так, чтобы они не терялись и были доступны? Об этом знают разработчики систем хранения данных — инженеры, которые создают эти сложные аппаратно-программные комплексы.

Один из таких инженеров, Денис Довженко, рассказал, как может быть устроена СХД enterprise-класса для корпоративных систем различных сервисов на примере TATLIN.UNIFIED от YADRO. Текст рассчитан на новичков, которые только начинают узнавать о системах хранения данных.

Из статьи вы узнаете
  • что такое система хранения данных и какие они бывают
  • как найти баланс между производительностью и надежностью
  • что внутри системы хранения данных TATLIN.UNIFIED
  • какие задачи решают разработчики ПО для СХД

Что такое СХД

Системы хранения данных — это важный элемент инфраструктуры цифровых приложений для централизованного управления данными. Часто там хранятся конфиденциальные данные, персональная информация о пользователях или сведения об интеллектуальной собственности. Поэтому для таких систем нужно особое место — в подсобке офиса их лучше не размещать. СХД «живут» в дата-центрах, или центрах обработки данных (ЦОД).

СХД размещают в отдельных подготовленных помещениях по многим причинам. Среди них — системы контроля доступа и охраны, существующие в ЦОД, эффективное управление температурным режимом, предотвращение перегрева оборудования, круглосуточное и бесперебойное электропитание. Кроме того, размещение в дата-центрах позволяет быстрее масштабировать существующую инфраструктуру: добавлять новые СХД или серверы.

Давайте посмотрим, из чего, в целом, строится система хранения данных. Некоторые элементы показаны упрощенно для облегчения восприятия.

упрощенная схема системы хранения данных

Конечного пользователя на этой схеме нет — он находится за пределами дата-центра и «общается» с сервером приложений через сеть Ethernet. Сервер приложений взаимодействует с СХД по локальной сети ЦОД.

Осуществляется взаимодействие с помощью контроллера. По историческим причинам контроллер хранения данных в TATLIN.UNIFIED называется «Storage processor», и его не следует путать с центральным процессором CPU (Central processing unit). CPU изображен в правой части Storage processor (квадрат с ножками по сторонам).

Контроллер помогает управлять дисковыми массивами, рассчитывает контрольные суммы для проверки целостности данных и выполняет служебные операции, например, резервное копирование. В нем есть три основных компонента:

  • сетевые интерфейсы (Network Interface Card),
  • некоторое количество памяти,
  • процессорный узел, который производит различные манипуляции с проходящими через него данными.

В процессоре с оперативной памятью мы можем «задерживать» проходящие данные и корректно записывать их на накопители. Более того, до записи на накопители над этими данными можно провести некоторые манипуляции: они могут включать не только вычисление контрольных сумм, но и, например, поиск повторяющихся блоков.

Предположим, у вас есть клиент с базой данных. В этой базе данных есть индексная таблица, которая содержит много повторяющихся данных. Чтобы не хранить эти данные целиком, можно использовать ссылки на них. Это означает, что вы отмечаете, что определенный блок данных повторяется и находится в другом месте.

Как и накопители, контроллер тоже может выйти из строя. И самое неприятное, если это произойдет, когда контроллер еще не успел записать данные на диск, то есть операция записи «застрянет».

Тут стоит добавить, что для пользователя транзакция успешно отработана в тот момент, когда она доходит до контроллера, — это помогает минимизировать задержку. Контроллер продолжает разбираться с данными, а пользователю мы сообщаем, что все хорошо, данные сохранены. Однако, если контроллер выйдет из строя, пользователь будет думать, что данные записаны, хотя на самом деле они еще не достигли дисковой системы.

Способ борьбы с подобными ситуациями — резервирование. Мы устанавливаем второй такой же контроллер рядом и создаем перекрестные соединения от сетевых интерфейсов, а также двухпортовый интерфейс к дисковой системе. Таким образом, контроллеры выполняют работу независимо друг от друга.

Система хранения данных с двумя контроллерами

Оба контроллера обрабатывают транзакции, но один из них должен поддерживать интерфейс управления. Такая схема называется Active-Active: каждый из контроллеров отвечает за свою часть работы и следит за состоянием другого. Например, при обновлении программного обеспечения один контроллер продолжает работать и берет на себя задачи другого, пока тот перезагружается. После обновления первого контроллера они меняются ролями, чтобы завершить процесс без прерываний.

Это не показано на схеме, но контроллеры фактически образуют кластер ​​— объединение нескольких блоков в единую систему для управления и оптимизации ресурсов хранения. Все узлы в нем однородны и подключены к одной сети, по которой передаются данные, что позволяет организовать переключение (handover). Между контроллерами проложена отдельная линия связи с низкой задержкой, которая позволяет одному процессору обращаться к памяти другого через специальный интерфейс.

Пользователь взаимодействует с обоими сетевыми маршрутизаторами, которые затем решают, какому из контроллеров передать данные. В зависимости от конфигурирования он получает либо виртуальный диск (LUN) определенного размера, либо файловую систему, с которой работает, а все вопросы о физическом размещении данных решают контроллеры. Они также договариваются между собой, кто из них главный в данный момент.

Подробнее про классификацию СХД: DAS, NAS, SAN

Системы хранения данных характеризуются по различным критериям в зависимости от архитектуры, используемых технологий, способов доступа и типа хранимых данных. По типу подключения СХД можно разделить на несколько видов:

DAS (Direct Attached Storage) — это тип системы хранения данных, в котором подключение накопителя осуществляется напрямую к серверу или компьютеру, сеть для доступа не нужна. DAS представляет собой простейшую и наиболее традиционную архитектуру хранения данных. Основная проблема в такой СХД — это сложность доступа нескольких хостов из-за прямого подключения. Если какой-либо из компонентов системы (сервер, интерфейс или накопители) достигает своего предела по нагрузке, вся система начинает работать медленнее, так как все элементы связаны. Например, даже если сервер мощный, но интерфейс медленный, система в целом будет тормозить. DAS часто встречается в небольших и средних компаниях, где требования к масштабируемости и общей доступности данных невысоки.

Альтернативой является использование нескольких накопителей для каждого сервера, что может увеличить производительность и надежность. С такой системой чаще всего мы работаем, если используем файловые серверы для удаленного доступа. NAS (Network Attached Storage) — это устройство хранения данных, которое предоставляет доступ к данным множеству пользователей и устройств через сетевое соединение. Один из основных протоколов, по которому передаются данные, — SMB/CIFS (Server Message Block/Common Internet File System). Этот протокол разработан компанией Microsoft для предоставления доступа к файлам и принтерам в сети. Протокол SMB/CIFS используется на Windows, macOS и Linux. Он поддерживает расширенные функции, такие как блокировка файлов, уведомления об изменениях и настройка аутентификации.

В отличие от NAS, который обрабатывает данные на уровне файлов, SAN (Storage Area Network) предоставляет блочное хранилище. Данные передаются и хранятся в виде блоков, а не файлов, что обеспечивает более высокую производительность и гибкость, особенно для приложений, требующих высокой скорости доступа к данным. Еще одно отличие кроется уже в названии: SAN — это сеть хранилищ, а NAS — устройство хранения, доступ в которое осуществляется по сети. SAN использует высокоскоростные сети, такие как Fibre Channel (FC) или iSCSI (Internet Small Computer System Interface) для передачи данных.

Классификация систем хранения данных

TATLIN.UNIFIED, на примере которого мы говорим об СХД, предоставляет как файловый (NAS), так и блочный (SAN) доступ, что позволяет ресурсам сосуществовать и работать эффективно.

TATLIN.UNIFIED в стойке

Как оценить работу СХД

Основные требования к работе системы хранения данных сводятся к ее производительности и надежности. Высокая надежность СХД гарантирует, что данные не потеряются и всегда будут доступны. Производительность показывает способность системы обрабатывать запросы на чтение и запись данных в заданный промежуток времени. Параметр оценивают двумя важными характеристиками: пропускная способность (throughput) и задержка (latency).

Пропускная способность измеряет объем данных, которые могут быть переданы через систему за определенный период времени. Обычно выражается в мегабайтах в секунду (MB/s) или гигабайтах в секунду (GB/s).

Задержка определяется как время, которое проходит от момента запроса данных до момента получения ответа. Она измеряется в миллисекундах (ms) или микросекундах (µs) и является критически важным параметром, особенно для приложений, чувствительных к времени доступа: баз данных, транзакционных систем и высокопроизводительных вычислительных приложений. В некоторых приложениях можно пожертвовать шириной полосы для достижения минимальной задержки. Для этого используют приоритизацию трафика, отправку меньших пакетов данных или снижение количества промежуточных узлов. Все это помогает добиться минимальной задержки, например, в банковских приложениях, где уведомления о транзакциях должны приходить незамедлительно.

Высокую пропускную способность обмена данными с удаленным ЦОД можно обеспечить, даже отправив ящик «флешек» с данными в другой город на реактивном самолете, но задержка получения ответа в таком случае будет недопустимо высокой.

Как обеспечивается надежность хранения данных

Хранение информации в дата-центрах происходит на HDD-накопителях, флеш-дисках или SSD. Для повышения надежности и оптимизации ширины полосы используется концепция RAID. Redundant Array of Independent Disks (RAID) — это технология для объединения нескольких жестких дисков в один логический массив.

«Базовые» конфигурации дисков — RAID 0 и RAID 1 — изображены на рисунке ниже.

Конфигурация RAID 0 и RAID 1

В RAID 0 данные разбиваются на блоки (A1, A2, B1 и т. д.) и записываются последовательно на каждый диск в массиве. Это повышает производительность за счет параллельного чтения и записи данных, но не обеспечивает резервирования данных. При выходе одного диска из строя все данные теряются.

Для RAID 1 данные дублируются и записываются на два (или более) диска. С одной стороны, при выходе одного диска из строя у нас всегда есть запасной, который подхватит работу. С другой — мы занимаем полезное дисковое пространство резервной копией, что снижает общую емкость СХД.

Существуют и другие конфигурации RAID, которые стараются нивелировать недостатки первых двух схем RAID. Так, в СХД можно встретить RAID 5 и RAID 6. RAID 5 обеспечивает надежность при выходе из строя одного диска, но требует времени на восстановление.

Для проверки целостности данных и обнаружения ошибок, которые могут возникнуть из-за сбоев в оборудовании или передаче данных, рассчитывают контрольную сумму (P). Контрольные суммы используют метод паритета (четности данных), который помогает обнаруживать ошибки в цифровой информации. Под контрольными суммами подразумевается результат операции XOR (исключающее «ИЛИ»). Например, если у нас есть четыре компонента, обозначенные как A1, A2, A3 и AP, любые три из них позволяют восстановить четвертый. Не имеет значения, какой накопитель выходит из строя, — мы просто заменяем поврежденный диск и выполняем процедуру восстановления (rebuild), чтобы заполнить его данными и обеспечить возможность замены следующего неисправного диска.

Конфигурация RAID 5

RAID 6 обеспечивает надежность при выходе из строя двух накопителей и балансировку нагрузки между дисками. Такая система наиболее распространена в СХД. Она схожа с RAID 5, но здесь используется два блока четности для выравнивания нагрузки между накопителями (на рисунке ниже — AP, AQ). Система высоконадежна, так как массив может пережить выход из строя сразу двух дисков. К недостаткам RAID 6 относят сниженную производительность записи по сравнению с RAID 5 из-за необходимости вычисления двойной четности AP и AQ. Кроме того, требуется больше дискового пространства для хранения резервных копий данных.

Конфигурация RAID 6

В TATLIN.UNIFIED установлена защита целостности данных T-RAID, опирающаяся на коды Рида-Соломона и реализованная на основе разработки YADRO. Они работают с группами символов, а не с отдельными битами, и помогают передавать данные правильно, даже если есть помехи или шум. Если вам интересно больше узнать про T-RAID, то пишите в комментариях — сделаем отдельную статью.

Что внутри TATLIN.UNIFIED

На иллюстрации ниже — архитектура контроллерного шасси СХД TATLIN.UNIFIED. Хорошо видны два контроллера хранения со слотами под процессоры, сетевой блок (коммутаторы Ethernet), которые мы рассматривали ранее.

Архитектура контрольного шасси

Но есть отличие: добавлен важный элемент в правом верхнем углу — аккумулятор. В случае аварии с отключением электропитания к СХД система продолжит работать от аккумулятора, но не будет откликаться на запросы пользователя, сообщая о неполадке. Питание от аккумулятора необходимо, чтобы система успела записать данных из кэша на накопители.

Расположение портов в TATLIN.UNIFIED подписано на рисунке ниже. Подробно о каждом:

  • Порты frontend (FE). Предназначены для Frontеnd-части (но не той, о которой вы подумали). Они нужны для подключения серверов либо напрямую через Fibre Channel, либо с помощью Ethernet.
  • Backend-порты (BE) используются для подключения полок расширения.
  • Карты Cluster Interconnect (CI) для реализации кластерного интерконнекта Ethernet.
  • Management Interface (MI). Интерфейсы для подключения клиентской сети управления.
Расположение портов в TATLIN.UNIFIED

Все части архитектуры СХД компактно размещены в плоском корпусе на три юнита (3U). Юнит — единица измерения высоты серверного оборудования, один юнит (1U) равен 1.75 дюйма (4.45 см) по высоте. Блоки устанавливается в стойку в дата-центре. Если необходимо подключить дополнительные накопители к основной системе хранения, то используют полки расширения DBS по четыре юнита (4U).

Как общаются между собой блоки СХД

Выше мы рассмотрели аппаратную часть СХД, но, чтобы система работала, необходим софт, или программное обеспечение, которое обеспечивает «‎общение"‎ между разными частями системы. Созданием или адаптацией софта занимаются инженеры по разработке.

Программное обеспечение, необходимое для СХД, можно условно поделить на три категории:

  • ПО для ядра и драйверы ядра,
  • Data Path,
  • Control Path.
Примерная схема центра обработки данных

Давайте рассмотрим их подробнее.

Ядро и драйверы. Ядро — это основная часть операционной системы, которая управляет аппаратным обеспечением и ресурсами. В СХД ядро отвечает за управление доступом к дискам и другим компонентам системы хранения данных. Драйверы — специализированные программы, которые служат интерфейсом между операционной системой и аппаратным обеспечением.

Data Path. Блок включает несколько компонентов, таких как реализация RAID и многослойный кэш. Поддерживается создание мгновенных снимков данных (snapshots), которые фиксируют текущее состояние системы в определенный момент времени.

Некоторые задачи можно было бы реализовать аппаратно, но исправление ошибок в таком случае обходится дороже. Исправление ошибки на стороне заказчика потребует замены компонентов. Более экономически эффективный подход — использование универсального процессора с определенным количеством памяти, что позволяет решать проблемы с помощью программного обеспечения.

Control Path. CХД предоставляет пользователю графический интерфейс для взаимодействия с административными приложениями. Как правило, это веб-страница, через которую администратор СХД общается с системой. Для него в Control Path есть такие возможности, как выбор диска использования, управление доступом к системе, конфигурирование параметров, настройка сетевых интерфейсов, IP-адресов и многое другое.

Mgmt. Теперь поговорим о менеджмент-порте. Менеджмент подразумевает отдельный порт и сеть, которая используется исключительно для администрирования системы хранения данных. Менеджмент-порт специально выделен, чтобы не смешивать его с пользовательским потоком данных.

Пользовательское приложение для мониторинга работы TATLIN.UNIFIED

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

Производительность системы хранения данных

Графики с характеристиками СХД

В верхней части находятся два графика производительности (IOPS, количество операций ввода-вывода в секунду) и пропускная способность (MB/s), а в нижней — график времени отклика (ms), или задержки (latency). На картинке мы наблюдаем результаты работы тестового стенда, не «боевой» системы.

График с пропускной способностью (правый верхний) отражает объем данных на чтение и запись. Текущий тест показывает, что в единицу времени записывается в три раза больше данных, чем читается. При этом количество операций чтения и записи приблизительно одинаково, что видно на левом верхнем графике.

Общая емкость системы

В пользовательском приложении СХД также можно посмотреть на заполняемость дисковых накопителей. Ниже отражена общая емкость системы: 204.49 терабайт, из которых занято чуть больше половины. На основе этих данных клиент может делать выводы — например, о том, как скоро понадобится масштабирование инфраструктуры.

Диаграмма с емкостью СХД

Помимо общих данных по емкости накопителей, в приложении можно посмотреть на статус емкости пулов, в которые объединены накопители. Такое объединение позволяет создать единое хранилище с большой емкостью и улучшенной производительностью.

Отображение накопителей, пулов и портов

На рисунке выше их два. Первый пул — hdd_pool0 — содержит традиционные вращающиеся диски, второй пул (ssd_pool2) — это энергонезависимая память с доступом через шину, обеспечивающую высокую скорость доступа. При максимальной конфигурации TATLIN.UNIFIED обеспечивает доступ к данным при одновременной потере до восьми дисков в рамках одного пула.

Информация о загрузке портов

Важной информацией для администратора СХД является загрузка портов. Если система не может сбалансировать нагрузку между портами и какой-то порт остается пустым долгое время, это может сообщать о проблеме — например, обрыве кабеля. В таком случае важно проверить целостность кабеля на месте размещения СХД — в дата-центре.

Квоты на потребление ресурсов

Приложение не только позволяет мониторить состояние системы хранения данных, но и управлять рядом характеристик. Например, на вкладке «Ресурсы» можно ограничивать максимальное количество операций ввода-вывода в секунду или показатели пропускной способности.

Страница для управления СХД

Такие ограничения важны, когда один клиент монополизирует ресурсы СХД, превращаясь в «‎шумного соседа"‎ (Noisy Neighbor). Благодаря квотам администратор может предотвратить такие ситуации.

Вместо заключения

Разработка систем хранения данных предоставляет широкое поле для улучшений. Несмотря на наличие устоявшихся алгоритмов, таких как RAID, есть много областей, где программисты могут внести значительный вклад, применяя новые подходы и технологии. Например, алгоритмы хэширования и сжатия позволяют повысить эффективность хранения данных, а базы данных NoSQL внутри системы хранения помогают анализировать статистику и оптимизировать использование пространства.

Перед разработчиками систем хранения данных стоят вызовы как на аппаратном уровне — например, как оптимизировать расположение комплектующих внутри системы и улучшить их охлаждение, так и на программном. И всем этим можно заниматься в YADRO. Эти задачи открывают неизведанное поприще для инженеров по разработке ПО.

Наверх
Будь первым, кто оставит комментарий