Контроллер массива дисков

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

Контроллер дискового массива часто сокращают до контроллер диска, что моет приводить к неоднозначности и относиться к схеме, отвечающей за управление внутренними операциями дискового накопителя.

Внешний и внутренний интерфейс

Контроллер массива дисков обеспечивает внешний и внутренний интерфейсы.

  • Внутренний интерфейс взаимодействует с управляемыми дисками. Следовательно, его протокол обычно представляет собой ATA (он же PATA), SATA, SCSI, FC или SAS.
  • Внешний интерфейс взаимодействует с HBA (Host Bus Adapter) компьютера и использует:
    • один из ATA, SATA, SCSI, FC; это популярные протоколы, используемые дисками, поэтому, используя один из них, контроллер может прозрачно эмулировать диск для компьютера
    • несколько менее популярные специализированные протоколы для конкретных решений: FICON/ESCON, iSCSI, HyperSCSI, ATA over Ethernet или InfiniBand.

Один контроллер может использовать разные протоколы для внутреннего и внешнего интерфейсов. Многие корпоративные контроллеры используют FC внешнего интерфейса и SATA для внутреннего.

Контроллер уровня предприятия

В современной корпоративной архитектуре контроллеры дисковых массивов (иногда называемые процессорами хранения[1]) являются частью физически независимых корпусов, таких как дисковые массивы, размещенные в сетях хранения данных (SAN) или серверах сетевого хранения данных (NAS).

Эти внешние дисковые массивы обычно приобретаются как интегрированная подсистема, состоящая из RAID-контроллеров, дисковых накопителей, блоков питания и программного обеспечения для управления. Именно контроллеры предоставляют расширенные функции (различные производители называют их по-разному):

  • Автоматическое переключение на другой контроллер (незаметное для компьютеров, передающих данные)
  • Долгосрочные операции, выполняемые без простоя
    • Создание нового RAID-массива
    • Восстановление поврежденного RAID-массива (после сбоя диска)
    • Добавление диска в RAID-массив в режиме онлайн
    • Удаление диска из RAID-массива (редкая функция)
    • Разделение RAID-массива на отдельные тома/LUN
  • Моментальные копии хранимых данных 
  • Том поддержания непрерывности бизнеса (BCV)
  • Репликация через удаленный контроллер....

Простые контроллеры

Простой контроллер массива дисков может располагаться внутри компьютера, либо в виде PCI/PCIe карт расширения, либо быть встроенным непосредственно в материнскую плату. Такой контроллер обычно сам выполняет функции хост-адаптера шины, чтобы сэкономить физическое пространство. Поэтому его иногда называют RAID-адаптером.

В феврале 2007 года Intel начала встраивать свои контроллеры Matrix RAID controller в более дорогие материнские платы, предоставляя управление четырьмя устройствами и два дополнительных разъема SATA, что в сумме дает шесть разъемов SATA (каждый по 3 Гбит/с). Для обратной совместимости также присутствует один IDE-разъем, способный подключать два ATA-устройства (100 Мбит/с).

История

Хотя аппаратные RAID-контроллеры существуют уже давно, изначально они требовали дорогих Parallel SCSI жёстких дисков и предназначались для рынка серверов и высокопроизводительных вычислений. Преимущества технологии SCSI включают возможность подключения до 15 устройств на одной шине, независимую передачу данных, горячую замену, значительно более высокую среднюю наработку на отказ.

Примерно в 1997 году с появлением стандарта ATAPI-4 (и режима Ultra-DMA-Mode, обеспечившего быструю передачу данных при меньшей загрузке процессора) были представлены первые ATA RAID-контроллеры в виде PCI-карт расширения. Эти RAID-системы нашли свое применение на потребительском рынке, предлагая пользователям отказоустойчивость RAID без необходимости приобретать дорогие SCSI-накопители.

Благодаря доступным потребительским накопителям стало возможно создавать RAID-системы дешевле, чем на базе SCSI. Однако большинство ATA RAID-контроллеров не имеют выделенного буфера или высокопроизводительного оборудования для расчета четности (XOR). Вследствие этого производительность ATA RAID оказывается значительно ниже по сравнению с большинством SCSI RAID-контроллеров. Кроме того, безопасность данных снижается при отсутствии резервного питания от батареи, которое могло бы завершить запись в случае внезапного отключения электроэнергии.

Поддержка операционной системы

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

Как правило, RAID RAID-контроллеры можно полностью настроить через BIOS до загрузки операционной системы. После загрузки операционной системы производитель каждого контроллера предоставляет проприетарные утилиты для настройки, поскольку точный набор функций каждого контроллера может быть специфичен для каждого производителя и продукта. В отличие от сетевых интерфейсных контроллеров для Ethernet, которые обычно можно настраивать и обслуживать полностью с помощью стандартных парадигм операционной системы, таких как ifconfig в Unix, без необходимости использования сторонних инструментов, каждый производитель RAID-контроллера обычно предоставляет собственное проприетарное программное обеспечение для каждой операционной системы, которую он считает нужным поддерживать. Это обеспечивает привязку к поставщику и способствует появлению проблем надёжности[2].

Например, в FreeBSD для доступа к конфигурации RAID-контроллеров торговой марки Adaptec пользователям необходимо включить совместимость с Linux и использовать инструменты Adaptec для Linux[3], что потенциально может поставить под угрозу стабильность, надежность и безопасность их системы, особенно в долгосрочной перспективе[2]. Однако это в значительной степени зависит от самого контроллера и наличия соответствующей документации на оборудование для написания драйвера. Некоторые контроллеры имеют версии своих утилит конфигурации с открытым исходным кодом. Так, для FreeBSD с версии 8.0 (2009 г.) доступны утилиты, mfiutil и mptutil[4][5], а с 2015 г. mpsutil/mprutil[6], которые поддерживают только соответствующие драйверы устройств, что приводит к разрастанию кода.

Некоторые другие операционные системы внедрили собственные универсальные фреймворки для взаимодействия с любыми RAID-контроллерами. Они предоставляют инструменты для мониторинга состояния RAID-томов, а также облегчают идентификацию дисков с помощью мигания светодиодов, управления сигнализацией, назначения горячих запасных дисков и очистки данных RAID непосредственно из операционной системы, без необходимости перезагрузки в BIOS карты. Например, такой подход был реализован в OpenBSD в 2005 году с использованием псевдо-драйвера устройства bio(4) и утилиты bioctl. Они обеспечивают отображение статуса томов, а также позволяют управлять светодиодами, сигнализацией и горячими запасными дисками, а также датчиками (включая датчик диска) для мониторинга состояния[7]. Впоследствии, в 2007 году, этот подход был принят и расширен NetBSD[8].

Инструмент bioctl намеренно имеет минимальный набор функций, чтобы обеспечить единообразную поддержку каждого контроллера. Первоначальная настройка контроллера должна выполняться через BIOS карты[7], но после этого все повседневные задачи мониторинга и обслуживания должны быть возможны с помощью унифицированных и универсальных инструментов, что и призван реализовать bioctl.

Примечания

  1. Storage Basics - Part V: Controllers, Cache and Coalescing (23 марта 2010).
  2. 1 2 3.8: "Hackers of the Lost RAID". OpenBSD Release Songs. OpenBSD (1 ноября 2005). Дата обращения: 23 марта 2019.
  3. Scott Long, Adaptec, Inc. aac(4) — Adaptec AdvancedRAID Controller driver. BSD Cross Reference. FreeBSD (2000).
    • aac -- Adaptec AdvancedRAID Controller driver // FreeBSD Manual Pages.
  4. mfiutil — Utility for managing LSI MegaRAID SAS controllers. BSD Cross Reference. FreeBSD.
  5. mptutil — Utility for managing LSI Fusion-MPT controllers. BSD Cross Reference. FreeBSD.
  6. mpsutil — Utility for managing LSI Fusion-MPT 2/3 controllers. BSD Cross Reference. FreeBSD.
  7. 1 2 Theo de Raadt (9 сентября 2005). RAID management support coming in OpenBSD 3.8. misc@ (Mailing list). OpenBSD.
  8. Constantine A. Murenin (21 мая 2010). 1.1. Motivation; 4. Sensor Drivers; 7.1. NetBSD envsys / sysmon. OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (MMath thesis). University of Waterloo: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.