Sata hot plug что это

Обновлено: 04.07.2024

Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).

Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.

(x — буква устройства, sda, sdb, etc).

Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.

К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.

Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.


X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.

Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).

Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).

Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».

Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".

За последние годы интерфейс eSATA уже перестал быть чем-то экзотическим, превратившись во вполне нормальное средство подключения к компьютеру внешних жестких дисков. Многие им уже пользуются, благо и альтернатив особых нет — USB 3.0 все еще маячит на горизонте, а все остальные внешние интерфейсы слишком медленные. Даже былой король по скорости — FireWire 800, на практике, обеспечивает лишь порядка 80 МБ/с, в то время как даже одиночные настольные винчестеры перешагнули границу в 100 МБ/с, а есть ведь еще и внешние массивы из нескольких дисков. При этом практическое применение FW800 под управлением наиболее распространенных на сегодня операционных систем семейства Microsoft Windows сопряжено с рядом трудностей. Да и поддержку этого интерфейса к компьютеру, как правило, приходится «прикручивать» самостоятельно, причем она обходится не так и дешево. Массовые внешние интерфейсы (такие, как повсеместно представленный USB 2.0 и немного более редкий, но тоже часто встречающийся FW400), на практике. обеспечивают лишь 30-40 МБ/с, чего даже для портативных винчестеров уже маловато, не говоря уже об их более крупных собратьях. А у eSATA таких проблем нет — по скорости он в точности соответствует внутреннему SATA, на который винчестеры и рассчитаны. Причем поддержка eSATA обходится очень дешево — иногда можно и просто один из чипсетных портов наружу вывести, а уж поставить копеечный контроллер вообще дело не хитрое.

Производители ВЖД это учитывают, так что сейчас в ассортименте практически всех их (неважно — о крупной или не очень компании идет речь) есть стационарные модели, поддерживающие eSATA. А для портативных все вендоры предпочитают продолжать использовать «обычный» USB чаще всего — модели с eSATA до сих пор можно пересчитать по пальцам. Причина этого проста, и заключается она в отсутствии питания на eSATA. Стационарные накопители все равно нуждаются в собственном БП, так что там замена одного интерфейсного кабеля другим никаких неудобств не приносит, зато производительность значительно возрастает. А с портативным ВЖД хуже — им вполне достаточно того количества электричества, которое обеспечивает один USB-порт, так что при задействовании этого интерфейса можно обойтись всего одним кабелем. Но если нам хочется увеличить скорость работы, то и для обмена данными придется использовать один кабель, и для подвода энергии (с того же USB, например) еще один. Разумеется, это неудобно, да и прирост скорости все же не настолько радикальный, как в случае стационарных ВЖД. И новый интерфейс крайне медленно прокладывает путь в этот сегмент рынка, поскольку при выборе между «быстрее» и «удобнее» 90% пользователей компьютеров, все-таки, выберут второе.

Но в компаниях-производителях оборудования конструкторы получают зарплату далеко не за красивые глаза. И как-то раз кому-то из них, после длительной медитации над портами USB и eSATA, пришла в голову здравая идея — а почему бы их не совместить? У такого решения не наблюдается особых недостатков, зато достоинств масса: во-первых, накопители, которым достаточно 2,5 Вт, можно подключать всего одним кабелем, но получать при этом большую скорость работы, чем при применении только USB. Во-вторых, такой подход место экономит. Просто потому, что никто не мешает нам использовать данный комбинированный порт и как обычный eSATA, и как обычный USB — получается три в одном. В настольных компьютерах это не очень актуально, но для ноутбука (особенно, компактного) размещение большого количества портов - задача не всегда тривиальная. Так же получается добавить поддержку eSATA (причем «более качественную», чем при простом припаивании разъема eSATA) и количество USB-портов не уменьшать. А выглядит это примерно так:


Мы взяли картинку с сайта компании MSI, поэтому о ней и упоминаем. На самом деле, «Power eSATA» хоть и не является уже принятым межотраслевым стандартом, но вряд ли стандартизация за горами — очень простое решение, тем более уже используемое не одним производителем, а несколькими. Правда, несколько менее активно, чем хотелось бы. В частности, MSI применяет порты такого типа пока всего в одной модели материнских плат (MSI 790FX-GD70 под АМ3) и в восьми моделях ноутбуков. И у других производителей есть ноутбуки с Power eSATA, а наиболее активным пользователем этой технологии среди производителей материнских плат является компания ASRock — все три модели на чипсете Х58, и одна — на Р45 снабжены таким портом.

Но, разумеется, этого всего достаточно мало. А оборудование, рассчитанное на порт Power eSATA, уже начало появляться, так что и нам в лаборатории потребовалось уже что-нибудь такое эдакое. Причем идея со сменой материнской платы на тестовом стенде как-то не прельщала. Попытка найти контроллер с интерфейсом PCIe (или, на худой конец, PCI) с Power eSATA успехом не увенчалась — с «простым» eSATA их множество, но от этого не легче. Выяснилось, что компания Kanguru свою флэшку, рассчитанную на этот интерфейс, продает в комплекте со специальным кабелем-переходником, превращающим пару портов eSATA и USB в порт eSATA. Но продукция этого производителя не поставляется к нам на рынок, а найти такой кабель отдельно не удалось. Зато нам посчастливилось обнаружить в продаже столь необходимый адаптер в формате ExpressCard. А поскольку поддержка этого ноутбучного интерфейса к нашему тестовому стенду была уже «прикручена» ранее (когда потребовалось протестировать флэш-накопители в этом формате), так что это оказалось решением проблемы.


Оплатив покупку на eBay, вскоре мы дождались посылки, в которой оказалась небольшая картонная коробка без опознавательных знаков. Из нее был извлечен искомый адаптер, тоже почти без опознавательных знаков (во всяком случае, все найденное в интернете по несколько неприличному на вид сочетанию «A&S» к теме явно не относилось), бумажная инструкция в виде одного сложенного листа, CD с драйверами (огромной кучей для всех контроллеров, вообще выпускаемых этим заводом) и очень интересный кабель, позволяющий подключить любой мобильный SATA-винчестер к порту Power eSATA без использования каких-либо дополнительных коробочек и прочего. Последнему мы обрадовались лишь немногим меньше, чем самому адаптеру — во-первых, наглядная демонстрация полезности такого решения, во-вторых, хороший способ протестировать на практике его способности в плане производительности.

Но сначала закончим с изучением устройства. Как всем известно (написал Татарский через двадцать минут после того, как это стало ему известно), интерфейс ExpressCard содержит две группы контактов — PCIe 1x и USB. Второй в данном адаптере просто выводится на соответствующие контакты разъема Power eSATA, а первый нужен как раз для реализации этого eSATA. Для этого используется контроллер Silicon Image SiI3531, технические характеристики которого как раз и отвечают всем необходимым условиям. Логика работы адаптера понятна и отвечает чаяниям пользователей, мечтающих добавить к ноутбуку порт eSATA, да еще и не простой, а с питанием . А что со скоростью? Это мы и проверим.

Для проверки возьмем недавно протестированный SSD-накопитель Kingston SSDNow SNE125-S2/32GB на 32 ГБ, который, напомню, при подключении к SATA-порту ICH10R выдавал нам до 250 МБ/с при чтении данных и 200 МБ/с при записи. А к адаптеру Power eSATA vs подключали его двумя способами. Во-первых, воспользовавшись комплектным кабелем eSATA-SATA, что позволяет нам задействовать всю мощь высокоскоростного интерфейса. Во-вторых, при помощи почти так же выглядящего адаптера USB-SATA из комплекта Apacer SAFD 253. Внешне - полное равенство: всего один кабель, так что и степень удобства одинаковая. А для тестирования производительности мы воспользовались двумя подтестами IOMeter, измеряющими скорости последовательного чтения и записи данных блоками разного размера — думаем, для качественной оценки этих двух «слайдов» всем будет достаточно.

Итак, с глубоким прискорбием вынуждены констатировать факт, что использование SiI3531 скорость весьма заметно «режет». Теоретически, пропускная способность PCIe 1x хоть и недостаточна для полноценной реализации заявленного режима SATA300, однако каких-никаких 250 МБ/с составляет, то есть для нашего тестового носителя данных могла бы оказаться достаточной. Но на практике, данная компактная микросхема до теоретических возможностей шины далеко «не добирает» — что при чтении, что при записи данных все уперлось ровно в 118 МБ/с. Справедливости ради, должны заметить, что скорбь наша имеет, скорее, теоретический характер — просто были надежды, что хотя бы 200 МБ/с от данного контроллера удастся получить. А на практике, и 118 МБ/с — это пусть не идеально, но очень хорошо — редкий винчестер даже на внешних дорожках способен на большее. Это если говорить про стационарные, а не стоит забывать, что наиболее интересна модификация eSATA с питанием для винчестеров портативных, где все гораздо скромнее. Однако при этом по удобству подключения при таком использовании она вполне сравнима с USB, а сравнивать эти два способа по скорости подключения — сами видите, несерьезно просто. Сколь бы неудачным не оказался конкретный контроллер, попавшийся вам в руки, все равно, можно быть уверенным, что вся «неудачность» может быть лишь при сравнении с чипсетным SATA-контроллером, но никак не с другими интерфейсами.

Таким образом, свою проблему мы решили — постепенно появляющиеся в продаже флэш-накопители с интерфейсом Power eSATA есть на чем тестировать, да и освоение этой модификации интерфейса производителями ВЖД тоже теперь нас врасплох не застанет. Впрочем, очевидно, что адаптеры, типа изученного сегодня, будут интересны не только для тестирования оборудования, но и для практического использования. Ведь на данный момент, мягко говоря, не каждый ноутбук снабжен даже «простым» разъемом eSATA, а эксплуатировать ВЖД без скоростных ограничений хочется многим пользователям. Для стационарных моделей, впрочем, гоняться именно за Power eSATA не требуется, однако если и покупать дополнительное оборудование, то есть смысл позаботиться о том, чтобы его функциональность была максимальной (тем более, когда не приходится платить за это лишних денег). Очевидно, что с этой задачей протестированное устройство справляется несколько лучше, чем более привычные eSATA-адаптеры в том же формате ExpressCard. Но пользователей десктопов пока, к сожалению, порадовать нечем — им нужно либо заранее подбирать соответствующую модель материнской платы, либо ждать появления в широкой продаже подходящих карт расширения с интерфейсом PCIe.

Функции AHCI и как включить его поддержку в Windows 7

Основные функции AHCI

Применительно к настольным компьютерам эта опция будет крайне полезной тем, кто работает с накопителями, подключаемыми по интерфейсу eSATA, или SATA дисками, устанавливаемыми в мобилрек.

До установки AHCI драйверов Intel в Windows это может выглядеть так:

Горячее отключение дисков в Windows

Через значок «Безопасное извлечение устройств и дисков» можно отключать SATA диски.

HDD AHCI Hot Plug с драйверами Intel

NCQ (Native Command Queuing) – организация очереди команд

Представим себе такую аналогию NCQ. Курьер (головки HDD) обслуживает некое офисное здание, на нескольких этажах которого размещаются различные организации. Каждый день курьер приносит и забирает корреспонденцию. Особенностью функционирования этих многочисленных организаций является то, что их канцелярии работают на прием и выдачу в строго определенные, причем разные, часы и прийти надо обязательно к самому началу, иначе окошко закроется. У курьера есть список организаций, которые он должен обслужить в ближайшее время.

Теперь представим себе, что курьер посещает организации строго по списку в порядке их очередности. Предположим, что первой в перечне числится организация, расположенная на n-ом этаже здания. Рано утром курьер поднимается на этот этаж, подходит к окну канцелярии и выясняет, что оно откроется ближе к вечеру (Этажи, в нашем случае, это треки, или цилиндры, жесткого диска, а часы работы – его сектора). Если курьер должен обходить организации строго по списку, то он прождет без дела до вечера, заберет документы и пойдет во вторую по списку организацию на другой этаж. Вероятность того, что приемные часы в этой организации уже закончились, достаточно высока и значит, в этот день курьер может уже ничего не забрать/передать, а будет ждать следующего дня (оборота диска HDD). Ну и так далее. Не слишком продуктивно.

Однако если изменить порядок обхода, то за один день (оборот диска) можно посетить значительно большее число организаций. Для этого надо расставить их по времени начала работы канцелярий но с учетом того, что лифт, перемещающий курьера в нашем гипотетическом здании, сам по себе не слишком быстрый (время перемещения головок на нужный трек). Если времена (сектора) близки, то начав движение на выбранный этаж к открытию окна можно и не успеть.

С другой стороны, очевидно, что если в списке на день будет всего одна организация, то никакого выигрыша не получится.

NCQ по большей части актуальна для нагруженных серверов и систем хранения с SATA дисками. Ожидать некого драматического увеличения скорости работы обычного настольного компьютера или ноутбука от включения этой опции не стоит. Но хуже не будет точно.

Тема AHCI стала вновь актуальной в связи с широким распространением твердотельных накопителей (SSD-дисков). Режим работы Advanced Host Controller Interface включает в себя ряд функций, необходимых для быстрой и правильной работы SATA SSD-дисков. Очень важной является команда TRIM.

Команда TRIM

Команда TRIM была включена в AHCI после появления твердотельных накопителей и специально для них. Дело в том, что логика процесса записи в SSD-дисках значительно отличается от таковой в традиционных механических жестких дисках.

Наверняка многим знакомы утилиты, типа Undelete Plus, позволяющие восстановить недавно стертые файлы. Их работа основана на том, что файл только помечается в каталоге как удаленный, но физически с жесткого диска не стирается. Более того, сам накопитель ничего не знает о статусе записанной на нем информации. Помеченный как удаленный файл может оставаться на диске сколь угодно долго, до тех пор, пока он, или его части, не будут перезаписаны новыми данными.

Для обычных HDD такое положение вещей не несло в себе никакой опасности, в связи с тем, что стирание или перезапись по своей сути были одной и той же операцией и занимали одинаковое время.

В твердотельных накопителях это не так. Внутренняя логика их работы не допускает простой перезаписи данных в ячейке памяти. Для того чтобы в ранее уже задействованную ячейку памяти можно было бы что-то записать повторно, ее содержимое должно быть предварительно «обнулено». А эта операция требует дополнительного времени. Таким образом, по мере эксплуатации SSD-диска в составе компьютера с течением времени все больше и больше места на нем будет затронуто и потребуется все больше операций «обнуления» ячеек.

На самом деле все еще хуже, так как «обнулить можно» только блок памяти целиком. Чтобы не потерять записанную на нем информацию она предварительно считывается в кеш, выполняется стирание блока, данные в кеше модифицируются с учетом новых и только затем записываются на накопитель. В общем случае требуется четыре операции. Все это приводит к серьезной деградации скорости записи на твердотельный накопитель.

Команда TRIM служит связующим звеном между контроллером SSD-диска и операционной системой. Она сообщает контроллеру, какие блоки на диске действительно можно считать незанятыми, и помогает таким образом заранее физически стереть их в фоновом режиме и реально освободить место на диске. Это позволяет не допустить падения производительности операций записи на SSD.

В контексте команды TRIM уместным будет вспомнить о динамических виртуальных дисках. Такой диск представляет собой файл, который непосредственно после создания имеет небольшой физический размер, определяемый размещенной на нем системной и служебной информацией.

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

Для SSD-диска этот момент будет означать начало деградации скорости.

Увеличение размера диска будет происходить даже в том случае, если перед записью часть данных с него удалить. Дело в том, что все новые блоки информации всегда записываются в конец диска.

Для того, чтобы привести размер динамического виртуального диска в соответствие с объемом записанных на него данных, системы виртуализации предусматривают процедуру сжатия. В разных системах виртуализации эти процедуры несколько отличаются, но суть при этом не меняется – если попытаться сжать динамический виртуальный диск без его предварительной подготовки, то ничего не произойдет. Физический размер диска не изменится.

Для того, чтобы процедура сжатия отработала корректно, незанятые на диске блоки должны быть предварительно обнулены. В Windows для этой цели можно использовать Precompact.iso или sdelete –c, в Linux – zerofree. Утилиты обнуления запускаются в среде виртуальной машины. Вот и аналогия с TRIM – та же пометка незанятых областей диска, без которой физическое удаление стертых блоков невозможно.

Так как TRIM полностью стирает содержимое ячеек диска, восстановление удаленных данных становится невозможным.

В Windows встроенная поддержка TRIM появилась в 2009 году начиная с Windows 7. В Linux чуть позднее – в начале 2010 года.

Проблема с AHCI в Windows 7

На самом деле никакой проблемы нет. Однако если операционная система была установлена на диск, который работал с контроллером в режиме классического IDE, то просто взять и переключить в BIOS режим работы контроллера дисков на AHCI, не получится. Если это сделать, то при следующей же загрузке работа Windows аварийно завершится с демонстрацией «синего экрана смерти» BSoD из-за того, что она не найдет загрузочный диск.

В Windows 8 эту ситуацию подправили. После включения AHCI в BIOS теперь достаточно один раз загрузить систему в безопасном режиме.

Как включить AHCI в Windows 7

Для того, чтобы включить AHCI в Windows 7, нужно сделать следующее:

  • Запустить из командной строки с правами администратора редактор реестра RegEdit и открыть ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci
Найти на правой панели ключ Start. Если у вас не включен AHCI, то значение ключа будет равно 3. Его надо поменять на 0, как показано на рисунке:

Включить AHCI в Windows 7

  • Закрыть редактор реестра и перезапустить компьютер. Во время перезапуска зайти в BIOS и поменять режим работы контроллера жестких дисков на AHCI.

Windows 7 при старте найдет новое оборудование, установит драйверы и попросит еще раз перезапуститься. После перезагрузки компьютера жесткие диски будут работать в режиме AHCI.

Проверка включения режима AHCI в Windows 7

Открываем IDE ATA/ATAPI контроллеры в Диспетчер устройств. Убеждаемся, что там появился контроллер AHCI.

AHCI в диспетчере устройств Windows 7

Установка драйверов AHCI

В зависимости от разновидности контроллера и материнской платы ищем и устанавливаем соответствующие драйверы для AHCI. Делать это не обязательно, но желательно.

Для владельцев материнских плат на чипсете от Intel самый свежий драйвер AHCI лучше всего поискать на официальном сайте по запросу “Intel Rapid Storage Technology”. Для моей материнской платы Intel на момент написания этой статьи наиболее подходящей оказалась версия 11.7.0 1013. Загрузить с сайта и установить нужно программу iata_cd.exe.

После инсталляции и двух перезагрузок компьютера информация о контроллерах IDE ATA/ATAPI в диспетчере устройств стала такой >

ich10rsata

Для того, чтобы определить был ли в этом смысл, я воспользовался бесплатной утилитой AS SSD Benchmark. Полностью полагаться на ее объективность я бы не стал, но некоторое представление получить можно. Вот так выглядят полученные результаты для 60-гигабайтного твердотельного накопителя Intel 520-ой серии >

Влияние драйверов AHCI на скорость SSD

Наибольший выигрыш получился на операциях записи, а суммарный прирост скорости SSD-диска составил около 10%. Существенно.

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

Если категорически что-то не получается, то еще один возможный вариант смены режима работы контроллера жестких дисков, правда, более длинный, это использование программы подготовки системы (Sysprep). Но об этом в другой раз.


В прошлой части цикла «Введение в SSD» мы рассказали про историю появления дисков. Вторая часть расскажет про интерфейсы взаимодействия с накопителями.

Общение между процессором и периферийными устройствами происходит в соответствии с заранее определенными соглашениями, называемыми интерфейсами. Эти соглашения регламентируют физический и программный уровень взаимодействия.

Интерфейс — совокупность средств, методов и правил взаимодействия между элементами системы.

Физическая реализация интерфейса влияет на следующие параметры:

  • пропускная способность канала связи;
  • максимальное количество одновременно подключенных устройств;
  • количество возникающих ошибок.

Параллельные и последовательные порты

По способу обмена данными порты ввода-вывода делятся на два типа:

Последовательные порты — противоположность параллельным. Отправка данных происходит по одному биту за раз, что сокращает общее количество сигнальных линий, но усложняет контроллер ввода-вывода. Контроллер передатчика получает машинное слово за раз и должен передавать по одному биту, а контроллер приемника в свою очередь должен получать биты и сохранять в том же порядке.


Small Computer Systems Interface (SCSI) появился в далеком 1978 году и был изначально разработан, чтобы объединять устройства различного профиля в единую систему. Спецификация SCSI-1 предусматривала подключение до 8 устройств (вместе с контроллером), таких как:

  • сканеры;
  • ленточные накопители (стримеры);
  • оптические приводы;
  • дисковые накопители и прочие устройства.
Изначально SCSI имел название Shugart Associates System Interface (SASI), но стандартизирующий комитет не одобрил бы название в честь компании и после дня мозгового штурма появилось название Small Computer Systems Interface (SCSI). «Отец» SCSI, Ларри Баучер (Larry Boucher) подразумевал, что аббревиатура будет произноситься как «sexy», но Дал Аллан (Dal Allan) прочитал «sсuzzy» («скази»). Впоследствии произношение «скази» прочно закрепилось за этим стандартом.

В терминологии SCSI подключаемые устройства делятся на два типа:

Используемая топология «общая шина» накладывает ряд ограничений:

  • на концах шины необходимы специальные устройства — терминаторы;
  • пропускная способность шины делится между всеми устройствами;
  • максимальное количество одновременно подключенных устройств ограничено.


Устройства на шине идентифицируются по уникальному номеру, называемому SCSI Target ID. Каждый SCSI-юнит в системе представлен минимум одним логическим устройством, адресация которого происходит по уникальному в пределах физического устройства номеру Logical Unit Number (LUN).


Команды в SCSI отправляются в виде блоков описания команды (Command Descriptor Block, CDB), состоящих из кода операции и параметров команды. В стандарте описано более 200 команд, разделенных в четыре категории:

  • Mandatory — должны поддерживаться устройством;
  • Optional — могут быть реализованы;
  • Vendor-specific — используются конкретным производителем;
  • Obsolete — устаревшие команды.
  • TEST UNIT READY — проверка готовности устройства;
  • REQUEST SENSE — запрашивает код ошибки предыдущей команды;
  • INQUIRY — запрос основных характеристик устройства.

Дальнейшее усовершенствование SCSI (спецификации SCSI-2 и Ultra SCSI) расширило список используемых команд и увеличило количество подключаемых устройств до 16-ти, а скорость обмена данными по шине до 640 МБ/c. Так как SCSI — параллельный интерфейс, повышение частоты обмена данными было сопряжено с уменьшением максимальной длины кабеля и приводило к неудобству в использовании.

Начиная со стандарта Ultra-3 SCSI появилась поддержка «горячего подключения» — подключение устройств при включенном питании.

Первым известным SSD диском с интерфейсом SCSI можно считать M-Systems FFD-350, выпущенный в 1995 году. Диск имел высокую стоимость и не имел широкой распространенности.

В настоящее время параллельный SCSI не является популярным интерфейсом подключения дисков, но набор команд до сих пор активно используется в интерфейсах USB и SAS.

ATA / PATA


Интерфейс ATA (Advanced Technology Attachment), так же известный как PATA (Parallel ATA) был разработан компанией Western Digital в 1986 году. Маркетинговое название стандарта IDE (англ. Integrated Drive Electronics — «электроника, встроенная в привод») подчеркивало важное нововведение: контроллер привода был встроен в привод, а не на отдельной плате расширения.

Решение разместить контроллер внутри привода решило сразу несколько проблем. Во-первых, уменьшилось расстояние от накопителя до контроллера, что положительным образом повлияло на характеристики накопителя. Во-вторых, встроенный контроллер был «заточен» только под определенный тип привода и, соответственно, был дешевле.


ATA, как и SCSI, использует параллельный способ ввода-вывода, что отражается на используемых кабелях. Для подключения дисков с использованием интерфейса IDE необходимы 40-жильные кабели, также именуемые шлейфами. В более поздних спецификациях используются 80-жильные шлейфы: более половины из которых — заземления для уменьшения интерференции на высоких частотах.

На шлейфе ATA присутствует от двух до четырех разъемов, один из которых подключается в материнскую плату, а остальные — в накопители. При подключении двух устройств одним шлейфом, одно из них должно быть сконфигурировано как Master, а второе — как Slave. Третье устройство может быть подключено исключительно в режиме «только чтение».



Положение перемычки задает роль конкретного устройства. Термины Master и Slave по отношению к устройствам не совсем корректны, так как относительно контроллера все подключенные устройства — Slaves.

Особенным нововведением в ATA-3 считается появление Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.). Пять компаний (IBM, Seagate, Quantum, Conner и Western Digital) объединили усилия и стандартизировали технологию оценки состояния накопителей.

Поддержка твердотельных накопителей появилась с четвертой версии стандарта, выпущенной в 1998 году. Эта версия стандарта обеспечивала скорость обмена данными до 33.3 МБ/с.

Стандарт выдвигает жесткие требования к шлейфам ATA:

  • шлейф обязательно должен быть плоским;
  • максимальная длина шлейфа 18 дюймов (45.7 сантиметров).


Стандарт Serial ATA (SATA) был представлен 7 января 2003 года и решал проблемы своего предшественника следующими изменениями:

  • параллельный порт заменен последовательным;
  • широкий 80-жильный шлейф заменен 7-жильным;
  • топология «общая шина» заменена на подключение «точка-точка».

Шестнадцать сигнальных линий для передачи данных в ATA были заменены на две витые пары: одна для передачи, вторая для приема. Коннекторы SATA спроектированы для большей устойчивости к множественным переподключениям, а спецификация SATA 1.0 сделала возможным «горячее подключение» (Hot Plug).

Некоторые пины на дисках короче, чем все остальные. Это сделано для поддержки «горячей замены» (Hot Swap). В процессе замены устройство «теряет» и «находит» линии в заранее определенном порядке.

Чуть более, чем через год, в апреле 2004-го, вышла вторая версия спецификации SATA. Помимо ускорения до 3 Гбит/с в SATA 2.0 ввели технологию Native Command Queuing (NCQ). Устройства с поддержкой NCQ способны самостоятельно организовывать порядок выполнения поступивших команд для достижения максимальной производительности.



Последующие три года SATA Working Group работала над улучшением существующей спецификации и в версии 2.6 появились компактные коннекторы Slimline и micro SATA (uSATA). Эти коннекторы являются уменьшенной копией оригинального коннектора SATA и разработаны для оптических приводов и маленьких дисков в ноутбуках.

Несмотря на то, что пропускной способности второго поколения SATA хватало для жестких дисков, твердотельные накопители требовали большего. В мае 2009 года вышла третья версия спецификации SATA с увеличенной до 6 Гбит/с пропускной способностью.



Особое внимание твердотельным накопителям уделили в редакции SATA 3.1. Появился коннектор Mini-SATA (mSATA), предназначенный для подключения твердотельных накопителей в ноутбуках. В отличие от Slimline и uSATA новый коннектор был похож на PCIe Mini, хотя и не был электрически совместим с PCIe. Помимо нового коннектора SATA 3.1 мог похвастаться возможностью ставить команды TRIM в очередь с командами чтения и записи.

Команда TRIM уведомляет твердотельный накопитель о блоках данных, которые не несут полезной нагрузки. До SATA 3.1 выполнение этой команды приводило к сбросу кэшей и приостановке операций ввода-вывода с последующим выполнением команды TRIM. Такой подход ухудшал производительность диска при операциях удаления.

Спецификация SATA не успевала за бурным ростом скорости доступа к твердотельным накопителям, что привело к появлению в 2013 году компромисса под названием SATA Express в стандарте SATA 3.2. Вместо того, чтобы снова удвоить пропускную способность SATA, разработчики задействовали широко распространенную шину PCIe, чья скорость превышает 6 Гбит/с. Диски с поддержкой SATA Express приобрели собственный форм-фактор под названием M.2.


«Конкурирующий» с ATA стандарт SCSI тоже не стоял на месте и всего через год после появления Serial ATA, в 2004, переродился в последовательный интерфейс. Имя новому интерфейсу — Serial Attached SCSI (SAS).

Несмотря на то, что SAS унаследовал набор команд SCSI, изменения были значительные:

  • последовательный интерфейс;
  • 29-ти жильный кабель с питанием;
  • подключение «точка-точка»

Максимальное количество одновременно подключенных устройств в SAS-домене по спецификации превышает 16 тысяч, а вместо SCSI ID для адресации используется идентификатор World-Wide Name (WWN).

WWN — уникальный идентификатор длиной 16 байт, аналог MAC-адреса для SAS-устройств.



Несмотря на схожесть разъемов SAS и SATA, эти стандарты не являются полностью совместимыми. Тем не менее, SATA-диск может быть подключен в SAS-коннектор, но не наоборот. Совместимость между SATA-дисками и SAS-доменом обеспечивается при помощи протокола SATA Tunneling Protocol (STP).

Первая версия стандарта SAS-1 имеет пропускную способность 3 Гбит/с, а самая современная, SAS-4, улучшила этот показатель в 7 раз: 22,5 Гбит/с.


Peripheral Component Interconnect Express (PCI Express, PCIe) — последовательный интерфейс для передачи данных, появившийся в 2002 году. Разработка была начата компанией Intel, а впоследствии передана специальной организации — PCI Special Interest Group.

Последовательный интерфейс PCIe не был исключением и стал логическим продолжением параллельного PCI, который предназначен для подключения карт расширения.

PCI Express значительно отличается от SATA и SAS. Интерфейс PCIe имеет переменное количество линий. Количество линий равно степеням двойки и колеблется в диапазоне от 1 до 16.

Термин «линия» в PCIe обозначает не конкретную сигнальную линию, а отдельный полнодуплексный канал связи, состоящий из следующих сигнальных линий:

  • прием+ и прием-;
  • передача+ и передача-;
  • четыре жилы заземления.


«Аппетиты» твердотельных накопителей растут очень быстро. И SATA, и SAS не успевают увеличивать свою пропускную способность, чтобы «угнаться» за SSD, что привело к появлению SSD-дисков с подключением по PCIe.

Хотя PCIe Add-In карты прикручиваются винтом, PCIe поддерживает «горячую замену». Короткие пины PRSNT (англ. present — присутствовать) позволяют удостовериться, что карта полностью установлена в слот.

Твердотельные накопители, подключаемые по PCIe регламентируются отдельным стандартом Non-Volatile Memory Host Controller Interface Specification и воплощены в множестве форм-факторов, но о них мы расскажем в следующей части.

Удаленные накопители

При создании больших хранилищ данных появилась потребность в протоколах, позволяющих подключить накопители, расположенные вне сервера. Первым решением в этой области был Internet SCSI (iSCSI), разработанный компаниями IBM и Cisco в 1998 году.

Идея протокола iSCSI проста: команды SCSI «оборачиваются» в пакеты TCP/IP и передаются в сеть. Несмотря на удаленное подключение, для клиентов создается иллюзия, что накопитель подключен локально. Сеть хранения данных (Storage Area Network, SAN), основанная на iSCSI, может быть построена на существующей сетевой инфраструктуре. Использование iSCSI значительно снижает затраты на организацию SAN.

У iSCSI существует «премиальный» вариант — Fibre Channel Protocol (FCP). SAN с использованием FCP строится на выделенных волоконно-оптических линиях связи. Такой подход требует дополнительного оптического сетевого оборудования, но отличается стабильностью и высокой пропускной способностью.

Существует множество протоколов для отправки команд SCSI по компьютерным сетям. Тем не менее, есть только один стандарт, решающий противоположную задачу и позволяющий отправлять IP-пакеты по шине SCSI — IP-over-SCSI.

Большинство протоколов для организации SAN используют набор команд SCSI для управления накопителями, но есть и исключения, например, простой ATA over Ethernet (AoE). Протокол AoE отправляет ATA-команды в Ethernet-пакетах, но в системе накопители отображаются как SCSI.

С появлением накопителей NVM Express протоколы iSCSI и FCP перестали удовлетворять быстро растущим требованиям твердотельных накопителей. Появилось два решения:

  • вынос шины PCI Express за пределы сервера;
  • создание протокола NVMe over Fabrics.

Протокол NVMe over Fabrics стал хорошей альтернативой iSCSI и FCP. В NVMe-oF используются волоконно-оптическая линии связи и набор команд NVM Express.


Стандарты iSCSI и NVMe-oF решают задачу подключения удаленных дисков как локальные, а компания Intel пошла другой дорогой и максимально приблизила локальный диск к процессору. Выбор пал на DIMM-слоты, в которые подключается оперативная память. Максимальная пропускная способность канала DDR4 составляет 25 ГБ/с, что значительно превышает скорость шины PCIe. Так появился твердотельный накопитель Intel® Optane™ DC Persistent Memory.

Для подключения накопителя в DIMM слоты был изобретен протокол DDR-T, физически и электрически совместимый с DDR4, но требующий специального контроллера, который видит разницу между планкой памяти и накопителем. Скорость доступа к накопителю меньше, чем к оперативной памяти, но больше, чем к NVMe.

Протокол DDR-T доступен только с процессорами Intel® поколения Cascade Lake или новее.

Заключение

Почти все интерфейсы прошли долгий путь развития от последовательного до параллельного способа передачи данных. Скорости твердотельных накопителей стремительно растут, еще вчера твердотельные накопители были в диковинку, а сегодня NVMe уже не вызывает особого удивления.

Читайте также: