SCST - SCST

SCST
Sourceforge-scst-project-logo.gif
Стабильный выпуск
3.4 / 3 декабря 2019 г. (2019-12-03)
РепозиторийSourceforge.сеть/п/ scst/ svn/ГОЛОВА/дерево/;
github.com/ bvanassche/ scst
Написано вC
Операционная системаLinux
ТипБлочное хранилище
ЛицензияСтандартная общественная лицензия GNU
Интернет сайтscst.sourceforge.сеть;
github.com/ bvanassche/ scst

SCST это GPL лицензированный Цель SCSI Программный стек. Целями проектирования этого программного стека являются высокая производительность, высокая надежность, строгое соответствие существующим SCSI стандарты, которые легко расширять и легко использовать. SCST не только поддерживает несколько протоколов SCSI (iSCSI, FC, SRP, ...), но также поддерживает несколько интерфейсов локального хранилища (сквозной SCSI, блокировать Ввода-вывода и файлового ввода-вывода), а также драйверы хранилища, реализованные в пользовательском пространстве через драйвер scst_user.[1]

Для достижения максимальной производительности SCST был реализован как набор драйверов ядра. SCST часто сочетается с RAID, дедупликация данных и / или кластер высокой доступности программное обеспечение для расширения его функциональности. Программный стек SCST является базовым программным обеспечением многих SAN системы.[2] Несколько мировых рекордов были установлены с системами SAN на основе SCST.[3][4][5][6]

SCST конкурирует с LIO Target с той же целью предоставления универсального целевого модуля SCSI внутри ядра Linux.[7] Для более узкой цели предоставление Linux цель iSCSI, более старые модули IET и STGT также пользуются отраслевой поддержкой.[8]

В период с 2013 по 2017 год поддержание ГКНТ в основном осуществлялось SanDisk персонал, после Fusion-io приобрела стартап ID7 в 2013 году, став движущей силой SCST[9][10][11] и после SanDisk приобретенный Fusion-io в 2014.[12]

Архитектура

SCST Архитектура

SCST состоит из трех групп модулей:

  • Ядро SCST, независимый от протокола механизм для обработки команд SCSI.
  • Целевые драйверы, которые получают команды SCSI от инициатора SCSI, передают эти SCSI в ядро ​​SCST и отправляют ответы инициатору.
  • Драйверы хранения, также известные как обработчики устройств, которые взаимодействуют с носителем данных. Поддерживаемые интерфейсы локального хранилища: SCSI, блочное устройство, файл и scst_user. scst_user - это специфичный для SCST протокол, который позволяет эффективно внедрять драйверы хранения в пользовательском пространстве.

Конфигурация всех этих модулей происходит через sysfs интерфейс. Хотя прямая настройка SCST через интерфейс sysfs удобна, инструмент под названием scstadmin позволяет управлять SCST через интерфейс sysfs, а также сохранять и восстанавливать конфигурацию SCST.

Следующие аспекты дизайна помогают SCST достичь высокой производительности, которой известен этот проект:

  • Количество потоков на одно устройство хранения, которое обрабатывает команды SCSI, можно настроить.
  • Все функции целевого драйвера и драйвера хранилища, вызываемые ядром SCST, являются асинхронными, по крайней мере, если это позволяет ядро ​​Linux. Это, например, пока невозможно выполнять асинхронный или прямой ввод-вывод из ядра Linux.[13]
  • Один конечный автомат связан с каждой командой SCSI. Это позволяет одному командному потоку обрабатывать несколько команд SCSI одновременно.
  • Даже при использовании нескольких потоков для каждого устройства хранения все эти потоки используют один и тот же контекст планировщика ввода-вывода. Такое совместное использование значительно повышает производительность при использовании, например, то CFQ Планировщик ввода-вывода.
  • Векторный кеш с разбросом и сборкой. Этот кеш позволяет избежать выделения памяти через ядро ​​для каждой команды SCSI.
  • Безблокирующий доступ к определенным структурам данных, необходимым для обработки команд SCSI. Это также означает, что ввод-вывод должен быть приостановлен перед изменением любой из структур данных, к которым осуществляется доступ без блокировки.[14]
  • Команды SCSI могут быть отправлены целевым драйвером в ядро ​​SCST из контекста softirq. Это приводит к меньшему количеству переключений контекста по сравнению с отправкой команд SCSI из контекста потока.[15]

История

В 2000 году целевая структура SCSI была разработана Лаборатория взаимодействия Университета Нью-Гэмпшира (UNH-IOL). Хотя целевая реализация UNH-IOL SCSI поддерживает только iSCSI протокол, он был разработан таким образом, чтобы было легко добавить поддержку других протоколов хранения.[16]

В 2004 году был анонсирован проект SCST, предусматривающий Fibre Channel и поддержка iSCSI. Первоначальная цель iSCSI в SCST была основана на реализации цели UNH-IOL iSCSI.[17]Примерно в то же время компанией Ardis Technologies был разработан альтернативный целевой программный стек iSCSI.[18]

Программное обеспечение iSCSI Enterprise Target, анонсированное в 2005 году, представляет собой дальнейшее развитие стека Ardis.[19][20]Позже в 2005 году Chelsio анонсировала целевой драйвер SCST iSCSI для семейства адаптеров Chelsio T2 Ethernet.[21]

В 2006 году был добавлен целевой драйвер для карт LSI / MPT.[22]Позже в этом году был добавлен инструмент scstadmin. Этот инструмент позволяет сохранять и восстанавливать конфигурацию SCST из файла или в файл.[23]

В 2007 году целевой патч UNH-IOL iSCSI в проекте SCST был заменен форком IET.[24]

В 2008 г. SRP целевой драйвер был подарен Mellanox.[25] Позже этот драйвер был оптимизирован Барт Ван Аше.[26]

В 2009 году Marvell пожертвовала целевой драйвер для своих карт SAS.[27]

Также в 2009 году целевой драйвер для Emulex Fibre Channel /FCoE карты адаптеров были анонсированы Emulex.[28][29][30]

В том же году интерфейс sysfs был добавлен в SCST рядом с уже существующим интерфейсом procfs.

В 2010 г. FCoE целевой драйвер был подарен Cisco[31] и Барт Ван Аше портировал IBM System p Целевой драйвер SCSI для SCST.[32]

В 2011 году неявная поддержка ALUA была добавлена ​​в ядро ​​SCST и в инструмент настройки scstadmin.[33] Три сценария инициализации (scst, iscsi-scst и qla2x00t) были объединены в один сценарий инициализации, что упростило установку и управление SCST.

В 2013 году в целевой драйвер SRP была добавлена ​​поддержка HCA QLogic InfiniBand.[34]

В январе 2014 года компания Mellanox пожертвовала реализацию целевого драйвера iSER проекту SCST.[35]

В мае 2014 года QLogic сделала доступным целевой драйвер QLogic со скоростью 16 Гбит / с, а также объявила о принятии на себя функций по сопровождению целевого драйвера SCST QLogic.[36]

В 2016 году была добавлена ​​поддержка асинхронного буферизованного и прямого файлового ввода-вывода, а также более мощная инфраструктура измерения задержки.

В 2019 году ядро ​​SCST было изменено таким образом, что ввод-вывод продолжает работать на полной скорости при добавлении или удалении LUN или устройства хранения.

Смотрите также

Рекомендации

  1. ^ Ван Аше, Барт (19 августа 2015 г.). SCST, целевая платформа SCSI (PDF). LinuxCon Северная Америка 2015. Сиэтл.
  2. ^ Болховитин, Владислав (20 декабря 2012 г.). «Пользователи SCST».
  3. ^ «Новый мировой рекорд по облачным вычислениям VMmark установлен с Cisco UCS, VMware и Fusion-io». Fusion-io. 10 мая 2013 г. Архивировано с оригинал 2 июля 2014 г.. Получено 12 августа, 2018.
  4. ^ «HP достигает двух новых результатов №1 в области виртуализации VMmark с помощью ION Data Accelerator». Fusion-io. 12 сентября 2013 г. Архивировано с оригинал 16 июня 2014 г.. Получено 12 августа, 2018.
  5. ^ «HP устанавливает мировые рекорды по производительности виртуализации серверов 2P blade и 2P в стойке в тесте VMmark 2.5.1» (PDF). HP. Октябрь 2013.
  6. ^ «K2 превысил два миллиона операций ввода-вывода в секунду при использовании одной системы хранения All-Flash». Каминарио. 4 октября 2012 г.
  7. ^ https://lwn.net/Articles/424004/
  8. ^ Флориан Хаас "Реплицируйте все! Высокодоступное хранилище iSCSI с DRBD и Pacemaker ", (Linux iSCSI: раздел" История четырех целей ") Linux журнал Выпуск № 217, май 2012 г.
  9. ^ Мейер, Дэвид (18 марта 2013 г.). «Fusion-io приобретает фирму ID7 по программно-конфигурируемой СХД для обработки SCST». Гигаом. Получено 20 июля 2014.
  10. ^ О'Брайен, Кевин (18 марта 2013 г.). «Fusion-io приобретает ID7, разработчиков SCST». Получено 20 июля 2014.
  11. ^ «Fusion-io ID7 - ускорение общего хранилища с помощью программно-определяемых решений». Fusion-io. Архивировано из оригинал 4 августа 2014 г.. Получено 12 августа, 2018.
  12. ^ Айер, Джей (23 июля 2014 г.). «SanDisk завершает приобретение Fusion-io». SanDisk.
  13. ^ Эдж, Джейк (3 апреля 2012 г.). «Саммит Linux 2012 по хранению, файловой системе и управлению памятью - День 1».
  14. ^ Ван Аше, Барт (25 декабря 2012 г.). «Более мелкая блокировка в SCST».
  15. ^ Болховитин Владислав; Ван Аше, Барт (26 сентября 2012 г.). "SCST README".
  16. ^ Палекар, Ашиш; Ганапати, Нарендран; Чадда, Аншул; Рассел, Роберт Д. (2001). «Разработка и реализация цели Linux SCSI для сетей хранения данных». Материалы 5-й ежегодной выставки и конференции Linux. Ассоциация USENIX. 5: 11–18. CiteSeerX  10.1.1.61.2706.
  17. ^ Болховитин, Владислав. "ОБЪЯВЛЕНИЕ Общий целевой средний уровень SCSI для Linux (SCST) с целевыми драйверами".
  18. ^ Фудзита, Томонори; Масанори, Огавара (2004). «Анализ целевого ПО iSCSI». Труды международного семинара по архитектуре сетей хранения данных и параллельному вводу / выводу. ACM: 25–32.
  19. ^ Фудзита, Томонори (1 июня 2004 г.). «iSCSI Enterprise Target».
  20. ^ Фудзита, Томонори (1 марта 2005 г.). «ОБЪЯВИТЬ целевое программное обеспечение iSCSI».
  21. ^ Смит, Рэнди (7 сентября 2005 г.). «Chelsio представляет семейство продуктов iSCSI нового поколения с прорывом в производительности и плотности портов». Челсио.
  22. ^ Хаббинга, Эрик (13 декабря 2006 г.). "Целевой драйвер LSI / MPT".
  23. ^ Бюхлер, Марк Р. (14 ноября 2006 г.). "Начальная фиксация scstadmin".
  24. ^ Болховитин, Владислав (15 августа 2007 г.). «Начальная фиксация iSCSI-SCST».
  25. ^ Фам, Ву (17 мая 2008 г.). «Первоначальная фиксация целевого драйвера SRP».
  26. ^ Ван Аше, Барт (20 декабря 2010 г.). "PATCH 4/7 scst: Добавить целевой драйвер SRP".
  27. ^ Ян, Анди (14 апреля 2009 г.). «Целевой драйвер для карт Marvell 88SE64xx (3G) и 88SE94xx (6G) SAS».
  28. ^ Болховитин, Владислав (8 июля 2009 г.). «ОБЪЯВЛЕНИЕ о поддержке целевого драйвера SCST для адаптеров Emulex lpfc FC / FCoE».
  29. ^ Лейн, Кэтрин (15 сентября 2009 г.). «SDK дает разработчикам решений для хранения данных в центрах обработки данных повышенную ценность и расширенные возможности рынка». Эмулекс. Архивировано из оригинал 15 октября 2009 г.. Получено 10 августа, 2018.
  30. ^ «Комплект разработчика программного обеспечения TargetConnect: ускорение, упрощение и улучшение разработки целевого драйвера». Эмулекс. 15 сентября 2009 г. Архивировано с оригинал 14 октября 2009 г.. Получено 10 августа, 2018.
  31. ^ Эйхольт, Джо (20 февраля 2010 г.). "Первоначальная фиксация целевого драйвера FCoE".
  32. ^ Ван Аше, Барт (20 декабря 2010 г.). "PATCH 5/7 ibmvstgt: порт от tgt до SCST".
  33. ^ Ван Аше, Барт (11 мая 2011 г.). "PATCH scst: Добавить неявную поддержку ALUA".
  34. ^ Ван Аше, Барт (17 марта 2013 г.). "PATCH ib_srpt: Добавить поддержку для QLogic InfiniBand HCA".
  35. ^ Бурман, Ян (21 января 2014 г.). "Поддержка PATCH 0/9 iSER для SCST".
  36. ^ Григсби, Дуэйн (20 мая 2014 г.). "Поддержка HBA 16G FC / FCoE QLogic".

внешняя ссылка