Интерфейс малых компьютерных систем ( SCSI , / ˈs kʌz i / SKUZ -ee ) [2] — это набор стандартов для физического соединения и передачи данных между компьютерами и периферийными устройствами , наиболее известный по использованию с устройствами хранения данных , такими как жесткие диски . SCSI был представлен в 1980-х годах и широко использовался на серверах и высокопроизводительных рабочих станциях, а новые стандарты SCSI были опубликованы совсем недавно, в 2017 году, как SAS-4 .
Стандарты SCSI определяют команды , протоколы, электрические, оптические и логические интерфейсы . Стандарт SCSI определяет наборы команд для определенных типов периферийных устройств ; наличие «неизвестного» в качестве одного из этих типов означает, что теоретически его можно использовать в качестве интерфейса практически для любого устройства, но стандарт весьма прагматичен и ориентирован на коммерческие требования. Первоначальный Parallel SCSI чаще всего использовался для жестких дисков и ленточных накопителей , но он может подключать широкий спектр других устройств, включая сканеры и CD- приводы , хотя не все контроллеры могут работать со всеми устройствами.
Предковый стандарт SCSI, X3.131-1986, обычно называемый SCSI-1, был опубликован техническим комитетом X3T9 Американского национального института стандартов (ANSI) в 1986 году. SCSI-2 был опубликован в августе 1990 года как X3.T9.2/86-109, с дальнейшими изменениями в 1994 году и последующим принятием множества интерфейсов. Дальнейшие усовершенствования привели к улучшению производительности и поддержке постоянно растущей емкости хранения данных. [3]
SCSI произошел от системного интерфейса Shugart Associates (SASI) [4] , разработанного в начале 1979 года [5] и публично представленного в 1981 году. [1] Ларри Буше считается «отцом» SASI и, в конечном итоге, SCSI благодаря его новаторской работе сначала в Shugart Associates, а затем в Adaptec , которую он основал в 1981 году. [6]
Контроллер SASI обеспечивал мост между низкоуровневым интерфейсом жесткого диска и хост-компьютером, которому требовалось считывать блоки данных. Платы контроллеров SASI обычно были размером с жесткий диск и обычно физически монтировались на шасси диска. SASI, который использовался в мини- и ранних микрокомпьютерах, определял интерфейс как использование 50-контактного плоского ленточного разъема, который был принят как разъем SCSI-1. SASI является полностью совместимым подмножеством SCSI-1, так что многие, если не все, из существовавших тогда контроллеров SASI были совместимы с SCSI-1. [7]
Около 1980 года корпорация NCR разрабатывала конкурирующий стандарт интерфейса под названием BYSE. Летом 1981 года NCR отказалась от своих внутренних усилий в пользу SASI и улучшения его дизайна для своих собственных компьютерных систем. Однако, опасаясь, что их расширение стандарта SASI вызовет путаницу на рынке, NCR на короткое время расторгла свой контракт с Shugart. Предложенные NCR улучшения дизайна SCSI вызвали интерес у Optimem, дочерней компании Shugart, которая попросила NCR и Shugart сотрудничать над единым стандартом. В октябре 1981 года две компании договорились о совместной разработке SASI и совместном представлении своего стандарта с ANSI. [8] [9]
По крайней мере до февраля 1982 года ANSI разрабатывал спецификацию как «SASI» и «Shugart Associates System Interface». [10] Однако комитет, документирующий стандарт, не позволил назвать его в честь компании. Почти целый день был посвящен согласованию названия стандарта «Small Computer System Interface», которое Буше намеревался произнести как «sexy», но Дал Аллан из ENDL [11] произнес новую аббревиатуру как «scuzzy», и она прижилась. [12]
На заводе NCR в Уичито, штат Канзас, был разработан первый в отрасли чип контроллера SCSI, NCR 5385, выпущенный в 1983 году. По словам разработчиков, чип заработал с первого раза, когда его протестировали. [13] [14] Ряд компаний, таких как Adaptec и Optimem, были ранними сторонниками SCSI. [10] К концу 1990 года по крайней мере 45 производителей предложили 251 модель параллельных хост-адаптеров SCSI. [15] Сегодня такие хост-адаптеры в значительной степени вытеснены более быстрыми последовательными хост-адаптерами SCSI (SAS). [16]
Упоминание слова «малый» в термине «интерфейс малой компьютерной системы» является историческим: с середины 1990-х годов SCSI стал доступен даже на самых крупных компьютерных системах.
С момента стандартизации в 1986 году SCSI широко использовался в компьютерных линейках Amiga , Atari , Apple Macintosh и Sun Microsystems , а также в серверных системах ПК. Apple начала использовать менее дорогой параллельный ATA (PATA, также известный как IDE ) для своих бюджетных машин с Macintosh Quadra 630 в 1994 году и добавила его к своим высокопроизводительным настольным компьютерам, начиная с Power Macintosh G3 в 1997 году. Apple полностью отказалась от встроенного SCSI в пользу IDE и FireWire с (сине-белым) Power Mac G3 в 1999 году, при этом по-прежнему предлагая хост-адаптер PCI SCSI в качестве опции для моделей вплоть до Power Macintosh G4 (AGP Graphics). [17] Sun переключила свой нижний диапазон на Parallel ATA (PATA) с выпуском своих рабочих станций начального уровня Ultra 5 и 10, использующих контроллер CMD640 IDE, и продолжила эту тенденцию с более поздними системами начального уровня Blade 100 и 150 и не перешла на современный интерфейс SATA даже с выпуском Blade 1500 в 2003 году, в то время как более высокий уровень Blade 2500, выпущенный в то же время, использовал Ultra320 Parallel SCSI-3. Sun перешла на интерфейсы SATA и SAS со своими последними рабочими станциями на базе UltraSPARC-III в 2006 году с начальным уровнем Ultra 25 и средним уровнем Ultra 45. Commodore включила SCSI в системы Amiga 3000/3000T, и это было дополнением к предыдущим моделям Amiga 500/2000. Начиная с систем Amiga 600/1200/4000 Commodore перешла на интерфейс IDE. Atari включила SCSI в качестве стандарта в свои компьютерные модели Atari MEGA STE , Atari TT и Atari Falcon . SCSI никогда не пользовался популярностью в мире недорогих IBM PC из-за более низкой стоимости и адекватной производительности стандарта жесткого диска ATA. Однако диски SCSI и даже SCSI RAID стали обычным явлением на рабочих станциях ПК для видео- или аудиопроизводства.
Последние физические версии SCSI — Serial Attached SCSI (SAS), SCSI-over- Fibre Channel Protocol (FCP) и USB Attached SCSI (UAS) — отходят от традиционной параллельной шины SCSI и выполняют передачу данных через последовательные коммуникации с использованием соединений точка-точка . Хотя большая часть документации SCSI говорит о параллельном интерфейсе, все современные разработки используют последовательные интерфейсы. Последовательные интерфейсы имеют ряд преимуществ по сравнению с параллельным SCSI, включая более высокую скорость передачи данных, упрощенную прокладку кабелей, большую дальность действия, улучшенную изоляцию неисправностей и возможность полнодуплексного режима . Основной причиной перехода на последовательные интерфейсы является проблема перекоса тактовой частоты высокоскоростных параллельных интерфейсов, что делает более быстрые варианты параллельного SCSI восприимчивыми к проблемам, вызванным прокладкой кабелей и терминацией. [18]
Нефизический iSCSI сохраняет базовую парадигму SCSI , особенно набор команд, почти неизмененной, посредством внедрения SCSI-3 поверх TCP/IP . Поэтому iSCSI использует логические соединения вместо физических ссылок и может работать поверх любой сети, поддерживающей IP. Фактические физические ссылки реализуются на нижних сетевых уровнях , независимо от iSCSI. Преимущественно используется Ethernet , который также имеет последовательную природу.
SCSI популярен на высокопроизводительных рабочих станциях, серверах и устройствах хранения данных. Почти все подсистемы RAID на серверах десятилетиями использовали какой-либо тип жестких дисков SCSI (первоначально Parallel SCSI, временно Fibre Channel, недавно SAS), хотя ряд производителей предлагают подсистемы RAID на основе SATA в качестве более дешевого варианта. Более того, SAS обеспечивает совместимость с устройствами SATA, создавая гораздо более широкий спектр возможностей для подсистем RAID вместе с существованием дисков Nearline SAS (NL-SAS). Вместо SCSI современные настольные компьютеры и ноутбуки обычно используют интерфейсы SATA для внутренних жестких дисков, при этом NVMe через PCIe набирает популярность, поскольку SATA может стать узким местом современных твердотельных накопителей .
SCSI доступен в различных интерфейсах. Первым был параллельный SCSI (также называемый параллельным интерфейсом SCSI или SPI), который использует параллельную конструкцию шины . С 2005 года SPI постепенно заменялся последовательным SCSI (SAS), который использует последовательную конструкцию, но сохраняет другие аспекты технологии. Многие другие интерфейсы, которые не полагаются на полные стандарты SCSI, по-прежнему реализуют протокол команд SCSI; другие полностью отказываются от физической реализации, сохраняя архитектурную модель SCSI . Например, iSCSI использует TCP/IP в качестве транспортного механизма, который чаще всего передается по Gigabit Ethernet или более быстрым сетевым каналам.
Интерфейсы SCSI часто включались в компьютеры от различных производителей для использования под Microsoft Windows , классическими Mac OS , Unix , Amiga и Linux операционными системами, либо реализованными на материнской плате , либо с помощью подключаемых адаптеров. С появлением дисков SAS и SATA обеспечение параллельного SCSI на материнских платах было прекращено. [19]
Первоначально SCSI Parallel Interface (SPI) был единственным интерфейсом, использующим протокол SCSI. Его стандартизация началась как однопроводная 8-битная шина в 1986 году, передающая до 5 МБ/с, и эволюционировала в низковольтную дифференциальную 16-битную шину, способную передавать до 320 МБ/с. Последний стандарт SPI-5 от 2003 года также определял скорость 640 МБ/с, которую не удалось реализовать.
Спецификации параллельного SCSI включают несколько синхронных режимов передачи для параллельного кабеля и асинхронный режим. Асинхронный режим — это классический протокол запроса/подтверждения, который позволяет системам с медленной шиной или простым системам также использовать устройства SCSI. Более быстрые синхронные режимы используются чаще.
Внутренние параллельные кабели SCSI обычно представляют собой ленты с двумя или более 50–, 68– или 80–контактными разъемами. Внешние кабели обычно экранированы (но могут и не быть), с 50– или 68–контактными разъемами на каждом конце, в зависимости от поддерживаемой ширины шины SCSI. 80–контактный Single Connector Attachment (SCA) обычно используется для устройств с возможностью горячей замены
Fibre Channel может использоваться для передачи информационных блоков SCSI, как определено в протоколе Fibre Channel для SCSI (FCP). Эти соединения поддерживают горячее подключение и обычно реализуются с помощью оптоволокна.
Последовательный интерфейс SCSI (SAS) использует модифицированный кабель данных и питания Serial ATA .
iSCSI (Интернет-интерфейс малых компьютерных систем) обычно использует разъемы и кабели Ethernet в качестве физического транспорта, но может работать на любом физическом транспорте, способном передавать IP .
Протокол SCSI RDMA (SRP) — это протокол, который определяет, как передавать команды SCSI по надежному соединению RDMA. Этот протокол может работать через любой физический транспорт с поддержкой RDMA, например InfiniBand или Ethernet при использовании RoCE или iWARP .
USB Attached SCSI позволяет устройствам SCSI использовать универсальную последовательную шину .
Интерфейс автоматизации/привода − Транспортный протокол (ADT) используется для соединения съемных носителей, таких как ленточные накопители, с контроллерами библиотек (устройств автоматизации), в которых они установлены. Стандарт ADI определяет использование RS-422 для физических соединений. Стандарт второго поколения ADT-2 определяет iADT, использование протокола ADT через соединения IP (Internet Protocol), такие как Ethernet . Стандарты интерфейса автоматизации/привода − Команды (ADC, ADC-2 и ADC-3) определяют команды SCSI для этих установок.
В дополнение к множеству различных аппаратных реализаций стандарты SCSI также включают обширный набор определений команд. Архитектура команд SCSI изначально была определена для параллельных шин SCSI, но была перенесена с минимальными изменениями для использования с iSCSI и последовательным SCSI. Другие технологии, которые используют набор команд SCSI, включают ATA Packet Interface , USB Mass Storage class и FireWire SBP-2 .
В терминологии SCSI связь происходит между инициатором и целью . Инициатор отправляет команду цели, которая затем отвечает. Команды SCSI отправляются в блоке дескриптора команды ( CDB ). CDB состоит из однобайтового кода операции, за которым следуют пять или более байтов, содержащих параметры, специфичные для команды.
В конце последовательности команд цель возвращает байт кода состояния , например 00h для успеха, 02h для ошибки (называемой Check Condition ) или 08h для занятости. Когда цель возвращает Check Condition в ответ на команду, инициатор обычно затем выдает команду SCSI Request Sense для получения квалификатора кода ключа ( KCQ ) от цели. Последовательность Check Condition и Request Sense включает специальный протокол SCSI, называемый Contingent Allegiance Condition .
Существует четыре категории команд SCSI: N (не данные), W (запись данных от инициатора к цели), R (чтение данных) и B (двунаправленный). Всего существует около 60 различных команд SCSI , наиболее часто используемые из которых:
Каждому устройству на шине SCSI назначается уникальный идентификационный номер SCSI или ID. Устройства могут охватывать несколько логических единиц, которые адресуются по логическому номеру единицы (LUN). Простые устройства имеют только один LUN, более сложные устройства могут иметь несколько LUN.
Устройство хранения данных «прямого доступа» (т. е. дискового типа) состоит из ряда логических блоков, адресуемых с помощью логического адреса блока ( LBA ). Типичный LBA равен 512 байтам памяти. Использование LBA со временем изменилось, поэтому для чтения и записи данных предусмотрено четыре различных варианта команд. Команды Read(6) и Write(6) содержат 21-битный адрес LBA. Команды Read(10), Read(12), Read Long, Write(10), Write(12) и Write Long содержат 32-битный адрес LBA, а также различные другие параметры.
Емкость устройства «последовательного доступа» (т. е. ленточного типа) не указывается, поскольку она зависит, помимо прочего, от длины ленты, которая не идентифицируется машиночитаемым способом. Операции чтения и записи на устройстве последовательного доступа начинаются с текущей позиции ленты, а не с определенного LBA. Размер блока на устройствах последовательного доступа может быть фиксированным или переменным в зависимости от конкретного устройства. Ленточные устройства, такие как полудюймовая 9-дорожечная лента , DDS (4-миллиметровые ленты, физически аналогичные DAT ), Exabyte и т. д., поддерживают переменные размеры блоков.
На параллельной шине SCSI устройство (например, хост-адаптер, дисковод) идентифицируется «SCSI ID», который представляет собой число в диапазоне 0–7 на узкой шине и в диапазоне 0–15 на широкой шине. В более ранних моделях физическая перемычка или переключатель управляет SCSI ID инициатора ( хост-адаптера ). В современных хост-адаптерах (примерно с 1997 года) выполнение ввода-вывода на адаптере устанавливает SCSI ID; например, адаптер часто содержит программу Option ROM (SCSI BIOS), которая запускается при загрузке компьютера, и эта программа имеет меню, которые позволяют оператору выбирать SCSI ID хост-адаптера. В качестве альтернативы хост-адаптер может поставляться с программным обеспечением, которое должно быть установлено на хост-компьютере для настройки SCSI ID. Традиционный SCSI ID для хост-адаптера — 7, так как этот ID имеет наивысший приоритет во время арбитража шины (даже на 16-битной шине).
SCSI-идентификатор устройства в корпусе привода, имеющем заднюю панель, устанавливается либо перемычками, либо слотом в корпусе, в который установлено устройство, в зависимости от модели корпуса. В последнем случае каждый слот на задней панели корпуса подает сигналы управления на привод для выбора уникального SCSI-идентификатора. Корпус SCSI без задней панели часто имеет переключатель для каждого привода для выбора SCSI-идентификатора привода. Корпус упакован с разъемами, которые должны быть подключены к приводу, где обычно расположены перемычки; переключатель эмулирует необходимые перемычки. Хотя нет стандарта, который бы заставлял это работать, разработчики приводов обычно устанавливают свои заголовки перемычек в согласованном формате, который соответствует способу реализации этих переключателей.
Установка загрузочного (или первого) жесткого диска на SCSI ID 0 является общепринятой рекомендацией ИТ-сообщества. SCSI ID 2 обычно отводится для дисковода гибких дисков, а SCSI ID 3 — для привода CD-ROM. [20]
Обратите внимание, что целевое устройство SCSI (которое можно назвать «физическим блоком») иногда делится на более мелкие «логические блоки». Например, высокопроизводительная дисковая подсистема может быть одним устройством SCSI, но содержать десятки отдельных дисковых накопителей, каждый из которых является логическим блоком. Кроме того, массив RAID может быть одним устройством SCSI, но может содержать много логических блоков, каждый из которых является «виртуальным» диском — набором полос или зеркальным набором, созданным из частей реальных дисковых накопителей. В этом случае идентификатор SCSI, WWN и т. д. идентифицирует всю подсистему, а второе число, номер логического блока (LUN), идентифицирует дисковое устройство (реальное или виртуальное) в подсистеме.
Довольно распространено, хотя и неверно, называть саму логическую единицу «LUN». [21] Иногда, излишне, фактический LUN может называться «номером LUN» или «идентификатором LUN». [22]
В современных транспортных протоколах SCSI существует автоматизированный процесс «обнаружения» идентификаторов. Инициатор SSA (обычно хост-компьютер через «хост-адаптер») «обходит петлю», чтобы определить, какие устройства подключены, а затем назначает каждому из них 7-битное значение «скоросшивателя». Инициаторы Fibre Channel – Arbitrated Loop (FC-AL) используют LIP (протокол инициализации петли) для опроса каждого порта устройства на предмет его WWN ( всемирного имени ). Для iSCSI, из-за неограниченной области действия сети (IP), процесс довольно сложен. Эти процессы обнаружения происходят во время включения питания/инициализации, а также при последующем изменении топологии шины, например, при добавлении дополнительного устройства.
SCSI имеет механизм идентификации CTL (канал, целевой или физический номер устройства, логический номер устройства) для каждого адаптера шины хоста или механизм идентификации HCTL (HBA, канал, PUN, LUN), один адаптер хоста может иметь более одного канала. [23]
Хотя все контроллеры SCSI могут работать с устройствами хранения данных с возможностью чтения/записи, то есть дисками и лентами, некоторые из них не будут работать с некоторыми другими типами устройств; старые контроллеры, вероятно, будут более ограниченными, [24] иногда из-за их программного обеспечения драйвера, и по мере развития SCSI было добавлено больше типов устройств. Даже CD-ROM не обрабатываются всеми контроллерами. Тип устройства — это 5-битное поле, сообщаемое командой запроса SCSI; определенные типы периферийных устройств SCSI включают в себя, помимо многих разновидностей устройств хранения, принтер, сканер, устройство связи и всеобъемлющий тип «процессора» для устройств, не указанных в другом месте.
В более крупных серверах SCSI дисковые устройства размещаются в интеллектуальном корпусе, который поддерживает SCSI Enclosure Services (SES) . Инициатор может взаимодействовать с корпусом, используя специализированный набор команд SCSI для доступа к питанию, охлаждению и другим характеристикам, не связанным с данными.
В 1979 г. компания разработала первый контроллер, использующий интерфейс SASI... совместно с Shugart Associates
NCR Corp., Microelectronics Division объявила о выпуске своего однокристального контроллера NCR 5385. NCR является первой компанией, использующей протокол Small Computer System Interface (SCSI).
Команда lun используется для создания и управления lun[...]
Если идентификатор LUN не указан, автоматически выбирается наименьшее число [...].