Bioctl

bioctlутилита и связанный с ней драйвер "bio" для реализации единого интерфейса управления RAID-массивами в OpenBSD и NetBSD.

Общие сведения
bioctl
Тип управление RAID, системный мониторинг
Автор Marco Peereboom (2005)
Разработчик OpenBSD
Написана на C
Операционные системы OpenBSD (с версии 3.8, 2005); NetBSD (с версии 4.0, 2007)
Первый выпуск 23 августа 2005
Репозиторий bxr.su/o/sbin/bioctl/
Лицензия BSD-лицензия
Сайт mdoc.su/o/bioctl.8

Функционал

Идея проекта аналогична подходу ifconfig: одна утилита из состава операционной системы позволяет управлять любым RAID-контроллером через общий интерфейс (вычислительная техника), вместо множества проприетарных и специализированных утилит для каждого отдельного производителя аппаратных RAID.[1] Среди возможностей — мониторинг состояния массивов, идентификация устройств с помощью мигания светодиодов, управление звуковыми сигналами, а также назначение горячих резервных дисков (hot spare disk). Кроме того, конфигурация softraid в OpenBSD также выполняется через bioctl; однако создание томов и первичная настройка аппаратных RAID по-прежнему осуществляются через BIOS карты и становятся несущественными после загрузки ОС. Взаимодействие ядра и пользовательских приложений реализовано через системный вызов ioctl и устройство-псевдоустройство /dev/bio.[2]

Обзор

Подсистема bio/bioctl считается важной частью позиции OpenBSD относительно открытой документации на оборудование: выпуск 3.8 и одноимённая композиция были посвящены этой теме — «Hackers of the Lost RAID». Разработка велась в период конфликта, когда компания Adaptec отказалась предоставить необходимую документацию по оборудованию для корректной работы драйвера aac(4), после чего поддержка этого драйвера была отключена в OpenBSD.

В официальном комментарии к выпуску 3.8 разработчики подчёркивали иронию аппаратных RAID-контроллеров: несмотря на заявленную надёжность за счёт избыточности и восстановления, многие вендоры требуют устанавливать и использовать крупные закрытые бинарные модули, чтобы оценивать состояние томов или обслуживать дисковый массив. В частности, сравнивалась практика FreeBSD, где документация по драйверу aac(4) Adaptec рекомендует включать слой совместимости с Linux для использования управляющих утилит — причём даже не указывается, где эти утилиты взять и какие версии совместимы, поскольку проприетарные инструменты могут устареть или недоступны.

Разработчики OpenBSD сознательно сконцентрировались только на базовых функциях каждого контроллера, одинаковых для всех моделей и брендов; при этом необходимость предварительной настройки контроллера через BIOS всегда прямо указывалась в релизах bio/bioctl. Для сравнения, в FreeBSD для каждой независимой реализации RAID существует своя собственная утилита, и интерфейсы этих программ отличаются друг от друга; например, по состоянию на март 2019 года, в FreeBSD входят отдельные утилиты mfiutil, mptutil, mpsutil/mprutil и sesutil — каждая со своими опциями и особенностями, что приводит к избыточности кода и усложнению системы, при этом для некоторых драйверов вообще не существует открытых инструментов. В OpenBSD 6.4 (2018 год) с фреймворком bio работают более десятка драйверов.

Сенсоры drive

Состояние каждого логического диска также дублируется в системы аппаратного мониторинга и соответствующие утилиты в обеих системах, где доступен bioctl: hw.sensors и sensorsd в OpenBSD и sysmon envsys с envstat и powerd в NetBSD. Например, начиная с OpenBSD 4.2, статус сенсоров-дисков контролируется автоматически: для мониторинга достаточно просто запустить sensorsd без дополнительной настройки. С каждым выпуском всё больше драйверов интегрируется с фреймворком bio и sensors.[3]

SES/SAF-TE

В OpenBSD поддержка SCSI Enclosure Services (SES) и SAF-TE реализована с версии 3.8 (2005): обе технологии позволяют идентифицировать устройства внутри корзин посредством мигания светодиодов через bioctl (реализация ioctl BIOCBLINK). Кроме того, драйверы SES и SAF-TE в OpenBSD поддерживают мониторинг таких параметров, как температура, скорость вентиляторов, состояние БП, замки и сигналы тревоги; все эти данные передаются в систему hw.sensors, где могут быть доступны через утилиты sysctl, SNMP и sensorsd.

По состоянию на 2019 год, в NetBSD используется устаревший драйвер SES/SAF-TE, созданный NASA в 2000 году: он не интегрирован ни с bio, ни с envsys, а использует собственные файлы устройств и отдельные SCSI-утилиты с уникальным ioctl-интерфейсом; аналогичная реализация применялась в OpenBSD с 2000 по 2005 год, после чего её (вместе с пользовательскими утилитами) убрали, и были внедрены новые упрощённые драйверы на базе bio и hw.sensors. В OpenBSD SES и SAF-TE поддерживаются как отдельные драйверы и не требуют специальных пользовательских программ, сокращая объём кода и количество строк исходного текста.

Примечания

  1. ONLamp.com: OpenBSD 3.8: Hackers of the Lost RAID. web.archive.org. Дата обращения: 26 сентября 2025.
  2. 'RAID management support coming in OpenBSD 3.8' - MARC. marc.info. Дата обращения: 26 сентября 2025. Архивировано 20 сентября 2025 года.
  3. Federico Biancuzzi. PuffyTron recommends OpenBSD 4.5 - O'Reilly Broadcast. web.archive.org. Дата обращения: 26 сентября 2025.