SCST — это целевой программный стек SCSI с лицензией GPL . Целями разработки этого программного стека являются высокая производительность, высокая надежность, строгое соответствие существующим стандартам 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 год SCST в основном обслуживался персоналом SanDisk , после того как Fusion-io приобрела стартап ID7 в 2013 году, движущую силу SCST [9] [10] [11] и после того как SanDisk приобрела Fusion-io в 2014 году. [12]
Архитектура
Архитектура СКСТ
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 .
Векторный кэш scatter-gather. Этот кэш позволяет избежать необходимости выделять память через ядро для каждой команды SCSI.
Доступ без блокировки к определенным структурам данных, необходимым для обработки команд SCSI. Это также означает, что ввод-вывод должен быть приостановлен, прежде чем любая из структур данных, к которым осуществляется доступ без блокировки, может быть изменена. [14]
Команды SCSI могут быть отправлены целевым драйвером ядру SCST из контекста softirq. Это приводит к меньшему количеству переключений контекста по сравнению с необходимостью отправки команд SCSI из контекста потока. [15]
История
В 2000 году Лабораторией взаимодействия Университета Нью-Гемпшира (UNH-IOL) была разработана целевая структура SCSI . Хотя реализация целевой среды SCSI UNH-IOL поддерживает только протокол iSCSI , она была разработана таким образом, чтобы можно было легко добавить поддержку других протоколов хранения. [16]
В 2004 году был анонсирован проект SCST, обеспечивающий поддержку Fibre Channel и iSCSI. Первоначальная цель iSCSI в SCST была основана на реализации цели iSCSI UNH-IOL. [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 году Mellanox предоставил целевой драйвер SRP . [25] Позднее этот драйвер был оптимизирован Бартом Ван Ашем. [26]
В 2009 году Marvell предоставила целевой драйвер для своих карт SAS. [27]
Также в 2009 году компания Emulex анонсировала целевой драйвер для адаптерных карт Emulex Fibre Channel / FCoE . [28] [29] [30]
В том же году в SCST был добавлен интерфейс sysfs к уже существующему интерфейсу procfs.
В 2010 году Cisco предоставила целевой драйвер FCoE [31] , а Барт Ван Аш перенес целевой драйвер IBM System p SCSI на SCST. [32]
В 2011 году неявная поддержка ALUA была добавлена в ядро SCST и в инструмент конфигурации scstadmin. [33] Три сценария инициализации (scst, iscsi-scst и qla2x00t) были объединены в один сценарий инициализации, что упростило установку и управление SCST.
В 2013 году в целевой драйвер SRP была добавлена поддержка QLogic InfiniBand HCA. [34]
В январе 2014 года Mellanox пожертвовал реализацию целевого драйвера iSER проекту SCST. [35]
В мае 2014 года компания QLogic выпустила целевой драйвер QLogic со скоростью 16 Гбит/с, а также объявила о том, что возьмет на себя поддержку целевого драйвера SCST QLogic. [36]
В 2016 году была добавлена поддержка асинхронного буферизированного и прямого файлового ввода-вывода, а также более мощная инфраструктура измерения задержки.
В 2019 году ядро SCST было модифицировано таким образом, что ввод-вывод продолжает работать на полной скорости при добавлении или удалении LUN или устройства хранения данных.
^ Ван Ашше, Барт (19 августа 2015 г.). SCST, целевая платформа SCSI (PDF) . LinuxCon North America 2015. Сиэтл.
↑ Болховитин, Владислав (20 декабря 2012 г.). «Пользователи SCST».
^ "Новый мировой рекорд VMmark Cloud Computing установлен с Cisco UCS, VMware и Fusion-io". Fusion-io. 10 мая 2013 г. Архивировано из оригинала 2 июля 2014 г. Получено 12 августа 2018 г.
^ "HP Achieves Two New #1 VMmark Virtualization Benchmarks with ION Data Accelerator". Fusion-io. 12 сентября 2013 г. Архивировано из оригинала 16 июня 2014 г. Получено 12 августа 2018 г.
^ "HP устанавливает мировые рекорды по производительности виртуализации двухпроцессорных блейд-серверов и двухпроцессорных стоечных серверов по результатам теста VMmark 2.5.1" (PDF) . HP. Октябрь 2013 г.
^ «K2 достигает двух миллионов IOPS с использованием одной системы хранения All-Flash». Каминарио. 4 октября 2012 г.
^ «Рассказ о двух целях SCSI [LWN.net]».
^ Флориан Хаас, «Реплицируйте все! Высокодоступное хранилище iSCSI с DRBD и Pacemaker», (раздел Linux iSCSI: история четырех целей) Linux Journal Issue #217, май 2012 г.
^ Мейер, Дэвид (18 марта 2013 г.). «Fusion-io выбирает фирму программно-определяемого хранилища ID7 для SCST chops». Gigaom . Получено 20 июля 2014 г.
^ О'Брайен, Кевин (18 марта 2013 г.). "Fusion-io приобретает ID7, разработчиков SCST" . Получено 20 июля 2014 г.
^ "Fusion-io ID7 - Ускорение общего хранилища с помощью программно-определяемых решений". Fusion-io . Архивировано из оригинала 4 августа 2014 г. . Получено 12 августа 2018 г. .
↑ Айер, Джей (23 июля 2014 г.). «SanDisk завершает приобретение Fusion-io». SanDisk .
↑ Эдж, Джейк (3 апреля 2012 г.). «Саммит по управлению хранилищами, файловыми системами и памятью Linux 2012 — день 1».
↑ Ван Аш, Барт (25 декабря 2012 г.). «Более тонкая блокировка в SCST».
^ Болховитин, Владислав; Ван Аш, Барт (26 сентября 2012 г.). «SCST README».
^ Palekar, Ashish; Ganapathy, Narendran; Chadda, Anshul; Russell, Robert D. (2001). «Проектирование и реализация Linux SCSI target для сетей хранения данных». Труды 5-й ежегодной выставки и конференции Linux . 5. Ассоциация USENIX: 11–18. CiteSeerX 10.1.1.61.2706 .
^ Болховитин, Владислав. «АНОНСИРОВАНО Generic SCSI Target Middle Level для Linux (SCST) с целевыми драйверами».
^ Фудзита, Томонори; Масанори, Огавара (2004). «Анализ целевого программного обеспечения iSCSI». Труды международного семинара по архитектуре сетей хранения данных и параллельному вводу-выводу - SNAPI '04 . ACM. стр. 25–32. doi :10.1145/1162628.1162632. ISBN9781450378222. S2CID 14730273.
↑ Фудзита, Томонори (1 июня 2004 г.). «iSCSI Enterprise Target».
^ Фудзита, Томонори (1 марта 2005 г.). «АНОНСИРОВАНО корпоративное целевое программное обеспечение iSCSI».
^ Смит, Рэнди (7 сентября 2005 г.). «Chelsio представляет семейство продуктов iSCSI следующего поколения, отличающееся прорывами в производительности и плотности портов». Chelsio.
↑ Хаббинга, Эрик (13 декабря 2006 г.). «Целевой драйвер LSI/MPT».
^ Бюхлер, Марк Р. (14 ноября 2006 г.). «Первоначальная фиксация scstadmin».
↑ Болховитин, Владислав (15 августа 2007 г.). «Начальная фиксация iSCSI-SCST».
^ Фам, Ву (17 мая 2008 г.). «Первоначальная фиксация целевого драйвера SRP».
↑ Ван Аш, Барт (20 декабря 2010 г.). «ИСПРАВЛЕНИЕ 4/7 scst: Добавить целевой драйвер SRP».
^ Ян, Энди (14 апреля 2009 г.). «Целевой драйвер для карт Marvell 88SE64xx(3G) и 88SE94xx(6G) SAS».
↑ Болховитин, Владислав (8 июля 2009 г.). «ОБЪЯВЛЕНИЕ о поддержке драйвера SCST Target для адаптеров Emulex lpfc FC/FCoE».
^ Лейн, Кэтрин (15 сентября 2009 г.). «SDK приносит повышенную ценность и расширяет рыночные возможности разработчикам решений для хранения данных в центрах обработки данных». Emulex. Архивировано из оригинала 15 октября 2009 г. Получено 10 августа 2018 г.
^ "TargetConnect Software Developer Kit: Accelerate, Simplify and Enhance Target Driver Development". Emulex. 15 сентября 2009 г. Архивировано из оригинала 14 октября 2009 г. Получено 10 августа 2018 г.
↑ Эйкхольт, Джо (20 февраля 2010 г.). «Первоначальная фиксация целевого драйвера FCoE».
↑ Ван Аш, Барт (20 декабря 2010 г.). «ИСПРАВЛЕНИЕ 5/7 ibmvstgt: Порт с tgt на SCST».
↑ Ван Аш, Барт (11 мая 2011 г.). «PATCH scst: добавить неявную поддержку ALUA».
↑ Ван Аш, Барт (17 марта 2013 г.). «ИСПРАВЛЕНИЕ ib_srpt: добавить поддержку QLogic InfiniBand HCA».
^ Берман, Ян (21 января 2014 г.). «Поддержка iSER PATCH 0/9 для SCST».
↑ Григсби, Дуэйн (20 мая 2014 г.). «Поддержка HBA 16G FC/FCoE от QLogic».
Внешние ссылки
Enterprise Storage OS (ESOS) — высокопроизводительная платформа хранения данных на уровне блоков с открытым исходным кодом.
Билл Чайлдерс, OpenFiler: сетевое устройство хранения данных с открытым исходным кодом, Linux Journal, выпуск 181, май 2009 г.
Эррол Нил, SSD + ZFS/bcache/EnhanceIO + SCST = гибридный массив хранения?, ha-guru.com, 22 июля 2014 г.