УНИВЕРСАЛЬНАЯ ЦЕЛЕВАЯ ПОДСИСТЕМА SCSI ДЛЯ LINUX

  • Михаил
  • 12 мин. на прочтение
  • 190
  • 10 Jul 2022
  • 10 Jul 2022

Универсальная целевая подсистема SCSI для Linux (SCST) позволяет создавать сложные устройства хранения данных из любой машины Linux. Эти устройства могут предоставлять расширенные функции, такие как репликация, тонкое выделение ресурсов, дедупликация, высокая доступность, автоматическое резервное копирование и т. д. Еще одним классом таких устройств являются виртуальные ленточные библиотеки (VTL), а также другие решения для резервного копирования на основе дисков.

Устройства SCST могут использовать любой канал, поддерживающий обмен данными в стиле SCSI: iSCSI , Fibre Channel , FCoE , SAS , InfiniBand (SRP) , Wide (параллельный) SCSI и т. д.

Вполне может быть, что ваше любимое устройство хранения использует SCST в прошивке.

Проект SCST состоит из набора подпроектов: самого общего целевого среднего уровня SCSI (ядра SCST) с набором обработчиков устройств, а также целевых драйверов и утилит пользовательского пространства.

ОСОБЕННОСТИ ЯДРА SCST

  • Ядро SCST обеспечивает унифицированный, согласованный интерфейс между целевыми драйверами SCSI и ядром Linux, а также между ядром Linux и серверными обработчиками хранилища, соединяя целевые драйверы с реальным или эмулированным сервером хранилища.
  • Ядро SCST выполняет всю необходимую пред- и пост-обработку входящих запросов, а также необходимое восстановление после ошибок.
  • Ядро SCST берет на себя большинство проблем, связанных с контекстами выполнения, тем самым практически устраняя одну из самых сложных проблем при разработке драйверов ядра. Например, целевые драйверы для адаптеров Marvell SAS или InfiniBand SRP содержат менее 3000 строк кода.
  • Очень низкие накладные расходы и мелкозернистые блокировки позволяют достичь максимальной производительности и масштабируемости. В частности, входящие запросы могут обрабатываться в контексте вызывающей стороны или в одном из тасклетов внутреннего ядра SCST без каких-либо дополнительных переключений контекста.
  • Архитектура обработчиков устройств допускает различные режимы ввода-вывода при обработке резервного хранилища. Например, обработчики сквозных устройств позволяют экспортировать реальное оборудование SCSI, а обработчик устройств vdisk позволяет экспортировать файлы как виртуальные диски.
  • Расширенное управление видимостью устройств для каждого инициатора (маскирование LUN) позволяет разным инициаторам видеть разные наборы устройств с разными правами доступа. Например, инициатор A мог видеть экспортированные из целевого T устройства X и Y доступными для чтения и записи, а инициатор B из того же целевого T мог видеть устройства Y только для чтения и Z доступными для чтения и записи. Эта функция требуется для аппаратных целей, у которых нет возможности создавать виртуальные цели (например, адаптеры SAS).
  • Ядро SCST эмулирует необходимую функциональность хост-адаптера SCSI, поскольку с точки зрения удаленных инициаторов цель SCSI действует как хост SCSI со своими собственными устройствами. Это особенно важно в режиме сквозной передачи с отношением один ко многим, т. е. когда несколько инициаторов могут подключаться к экспортируемым устройствам сквозной передачи. Вы можете найти более глубокую проработку, почему это необходимо, в этом сообщении в ветке "Вопрос по сквозному целевому дизайну" в списке рассылки linux-scsi. Вот некоторые из эмулируемых функций:
    • Генерация необходимых UNIT ATTENTIONS, их хранение и доставка всем подключенным удаленным инициаторам.
    • РЕЗЕРВ/РАЗБЛОКИРОВКА.
    • Все типы RESET и другие функции управления задачами.
    • Команда REPORT LUNS, а также управление адресным пространством SCSI, чтобы иметь согласованное адресное пространство на всех удаленных инициаторах, поскольку локальные устройства SCSI не могли знать друг о друге, чтобы сообщить через команду REPORT LUNS. Кроме того, ядро ??SCST отвечает ошибкой на все команды несуществующим устройствам и обеспечивает контроль доступа, поэтому разные удаленные инициаторы могут видеть разные наборы устройств.
    • Другие необходимые функции (атрибуты задач и т. д.), указанные в стандартах SCSI.
  • Ядро SCST имеет многопоточный дизайн и полную поддержку SMP, поэтому при необходимости все ядра вашего процессора будут участвовать в обработке команд.
  • Хорошо документированы.

Взаимодействие между удаленными и локальными инициаторами SCSI (например, sd, st и т. д.) является дополнительной проблемой, которую собирается решить SCST (она еще не реализована). Это необходимо, т.к. локальные инициаторы SCSI могут изменить состояние устройства, например ЗАРЕЗЕРВИРОВАТЬ устройство, или какие-то его параметры и это можно было бы сделать за SCST, т.е. удаленные инициаторы не будут об этом знать, что может привести к различным проблемам , включая повреждение данных. Таким образом, команды RESERVE/RELEASE, локально генерируемые UNIT ATTENTION и т. д. должны перехватываться и передаваться через ядро ??SCST.

Вы можете найти сравнение SCST с другими целями SCSI на странице сравнения . Некоторые сведения о том, что это может означать для конечных пользователей, вы можете найти на странице iSCSI-SCST .

ЯДРО SCST ПОДДЕРЖИВАЕТ СЛЕДУЮЩИЕ РЕЖИМЫ ВВОДА/ВЫВОДА

  • Сквозной режим с отношением один ко многим, т. е. когда несколько инициаторов могут подключаться к экспортируемым сквозным устройствам практически для всех типов SCSI-устройств: дисков (тип 0), лент (тип 1), процессоров (тип 3), компакт-дисков. (тип 5), MO-диски (тип 7), устройства смены носителей (тип 8) и RAID-контроллеры (тип 0xC). В этом режиме вы можете, например, совместно использовать вашу параллельную ленту SCSI или устройство SATA DVD-RW в вашей сети iSCSI.
  • Режим FILEIO, который позволяет использовать файлы в файловых системах или блочных устройствах в качестве виртуальных удаленно доступных SCSI-дисков или компакт-дисков с преимуществами кэша Linux.
  • Режим BLOCKIO, который выполняет прямой блочный ввод-вывод с блочным устройством, минуя кеш страниц для всех операций. Этот режим хорошо работает с высокопроизводительными HBA-адаптерами хранилища и для приложений, которым либо не требуется кэширование между приложением и диском, либо требуется пропускная способность больших блоков.
  • Режим пользовательского пространства с использованием обработчика устройств scst_user, который позволяет реализовать в пользовательском пространстве высокопроизводительные виртуальные SCSI-устройства. По сравнению с обработчиками, полностью встроенными в ядро, этот режим имеет очень низкие накладные расходы (несколько %%).
  • Обработчики устройств для тестирования производительности, а также режим NULLIO, чтобы предоставить способ прямого измерения производительности без накладных расходов на фактическую передачу данных с/на базовые устройства SCSI.

СЕРТИФИКАЦИЯ

Ядро SCST прошло сертификацию VMware как часть технологии интеллектуального кластерного хранения Scale и решения ISS STORCIUM . Он также прошел сертификацию VMware и Microsoft как часть SanDisk ION Accelerator и массивов хранения, разработанных Open-E , Inc.

В октябре 2012 года Hewlett-Packard ProLiant BL465c Gen8 с хранилищем на основе SCST получил максимальный балл 59,99 при 62 элементах в VMmark версии 2.1.1 . В июне 2016 г. этот результат был обновлен HPE ProLiant DL580 Gen9.