СХД состоит из трёх крупных частей: контроллерного модуля, дисковых полок с накопителями и программного обеспечения, которое превращает набор дисков в надёжные тома для серверов. В двухконтроллерной системе продублировано всё, от чего зависит доступ к данным: контроллеры, блоки питания, пути до каждого диска. Поэтому она продолжает работать, когда отказывает отдельный узел.
Ниже - что делает каждая часть, как через них проходит запрос и на что смотреть, когда выбираете систему.
| Узел | Что делает | На что смотреть при выборе |
|---|---|---|
| Контроллеры (обычно два) | Принимают запросы серверов, считают RAID, управляют кэшем, при отказе одного второй забирает всю нагрузку | Режим работы (симметричный active-active или ALUA), объём кэша, какие функции входят в базовую лицензию |
| Кэш и его защита | Ускоряет запись и чтение часто запрашиваемых данных; при пропадании питания содержимое сбрасывается во флеш-память | Зеркалирование кэша между контроллерами, защита батареей или суперконденсаторами |
| Порты к серверам | Подключают СХД к серверам напрямую или через коммутаторы сети хранения | Протокол и скорость: FC 32/64 Гбит/с, iSCSI 10/25/100 Гбит/с, SAS; сколько портов на контроллер |
| Подключение полок | Связывает контроллеры с дисковыми полками | SAS 12G/24G или NVMe; два независимых пути до каждой полки |
| Дисковые полки и бэкплейн | Корпус с отсеками под диски. Бэкплейн - плата, которая разводит к дискам сигналы и питание, SAS-экспандеры дают обоим контроллерам доступ к каждому диску | Число и размер отсеков (2,5" или 3,5"), сколько полок держит один контроллерный модуль |
| Накопители | HDD, SAS/SATA SSD, NVMe SSD - хранят сами данные | Тип под нагрузку, объём, поддержка двух портов |
| Блоки питания и вентиляторы | По два и больше, каждый можно заменить на работающей системе | Горячая замена, резерв по питанию |
| Микрокод и ПО управления | Пулы и тома, снапшоты, репликация, мониторинг | Что входит в базовую поставку, а что лицензируется отдельно; срок обновлений |
Путь запроса выглядит так: сервер обращается к порту СХД, контроллер сначала ищет данные в кэше, и если их там нет, идёт по SAS к нужной полке, через экспандер и бэкплейн - к диску. Ответ возвращается тем же путём. При записи сервер получает подтверждение, как только данные легли в кэш обоих контроллеров, на диски они уходят чуть позже. За счёт этого запись в СХД быстрее, чем в отдельный диск, и не теряется при отказе одного контроллера.
Контроллер в СХД - это специализированный компьютер, который управляет потоками данных, распределяет нагрузку и следит за отказоустойчивостью. У систем начального и среднего класса оба контроллера обычно стоят в одном корпусе, его называют контроллерным или головным модулем.
В профессиональных системах обычно два контроллера, которые работают в режиме Active-Active. В таком режиме оба контроллера одновременно обрабатывают запросы, синхронизируя данные между собой по высокоскоростной линии связи. Упал один - второй подхватывает всю нагрузку, а сервер через multipath переключается на оставшиеся пути. Пользователи видят в худшем случае короткую паузу ввода-вывода.
Многие СХД считают контрольные суммы для каждого блока данных и защищают их на всём пути от порта до диска. Так ловится незаметная порча данных (silent data corruption), которую не обнаружит обычная проверка.
Есть и более простая схема Active-Passive, где второй контроллер ждёт отказа первого. Она дешевле, но переключение занимает от нескольких секунд до десятков секунд. Multipath на сервере и таймауты ввода-вывода в ОС рассчитаны на такую паузу, поэтому для большинства задач малого бизнеса это приемлемо. Заранее проверить стоит только то, как переживает паузу ваше самое чувствительное приложение.
Внутри контроллера - процессор (часто многоядерный), оперативная память и кэш. Кэш заслуживает особого внимания. Это быстрая память, куда контроллер временно складывает часто запрашиваемые данные, чтобы не тормозить систему походами на медленные диски. Оперативная память отвечает за микросекунды, флеш - за доли миллисекунды, а жёсткий диск на случайном чтении тратит 5-10 мс. Поэтому многоуровневое кэширование (RAM + Flash) стало стандартом для серьёзных нагрузок.
Контроллеры также отвечают за управление трафиком. Представьте: 50 виртуальных машин одновременно просят данные. Контроллер решает, в каком порядке их обслужить, как распределить нагрузку между дисками, какие данные держать в кэше. Всё это СХД делает сама, не нагружая ваши серверы.
Ещё один плюс двухконтроллерной архитектуры - обновление прошивки без остановки системы. Обновили один контроллер, переключили трафик на второй, обновили его - готово. Простоя нет, данные доступны.
Если контроллеры - это мозг, то дисковые полки (или шелфы, от англ. shelf) - это склад. Полка - это отдельный корпус, куда устанавливаются накопители. Обычно это 12 или 24 отсека в корпусе высотой 2U, у полок высокой плотности - 60 и больше дисков в 4-5U.
Полки расширения в составе СХД почти всегда устроены как JBOD - набор дисков без собственного RAID. Внутри у них модули ввода-вывода с SAS-экспандерами, а всей работой управляет контроллер СХД. Бывают и полки со своими RAID-контроллерами (их называют RBOD), но такая полка уже сама по себе отдельная СХД и подключается к серверу напрямую.
Дисковые полки подключаются к контроллерам по SAS, у all-flash систем - по NVMe. Новые полки добавляются на работающей системе, без остановки, и так СХД растёт до петабайтных объёмов.
Что касается дисков, в полки устанавливают три типа накопителей:
| Тип накопителя | Скорость (IOPS) | Объём одного диска | Применение |
|---|---|---|---|
| HDD (7200 об/мин) | 100-200 | До 30-32 ТБ | Архивы, холодные данные |
| SSD (SATA/SAS) | 10 000-100 000 | До 30,72 ТБ | Базы данных, виртуализация |
| NVMe SSD | 200 000-1 000 000 и выше | До 122,88 ТБ, отдельные модели - 245 ТБ | Высоконагруженные приÐ |