---
tags: [linux, freebsd, tooling]
verified: 2026-09-02
---

# SATA, SAS и NVMe: интерфейсы подключения накопителей

## Обзор

Три интерфейса, которые обычно сравнивают по одной цифре — пропускной способности, — и почти всегда зря. 600 МБ/с у SATA против 7 ГБ/с у NVMe выглядит исчерпывающим аргументом ровно до момента, когда выясняется, что в реальной нагрузке разрыв то в двадцать раз, то отсутствует вовсе. Дело в том, что скорость линии здесь наименее интересный параметр: SATA, SAS и NVMe отличаются прежде всего **моделью общения с накопителем** — сколько команд можно держать в полёте, кто и как их упорядочивает, сколько программных слоёв стоит между приложением и флеш-памятью, какие гарантии целостности встроены в протокол и во что превращается топология, когда дисков становится триста.

Разница исторически объяснима. SATA — прямой наследник параллельного ATA, спроектированного под один механический диск с одной головкой, где очередь запросов физически бессмысленна: головка всё равно одна. SAS — наследник параллельного SCSI, выросшего в мире дисковых полок и мейнфреймов, где важнее были адресация сотен устройств, два независимых пути к диску и контроль целостности, чем абсолютная скорость. NVMe спроектирован с нуля уже под флеш и многоядерные процессоры, без обязательства притворяться диском.

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

## Три оси, которые постоянно путают

Прежде чем сравнивать, стоит развести три независимые вещи. Путаница между ними — источник большинства неверных выводов вроде «у меня M.2, значит NVMe» (не обязательно) или «SAS быстрее SATA» (не в том смысле, в каком обычно имеется в виду).

| Ось | Что это | Примеры |
|-----|---------|---------|
| Разъём и форм-фактор | физическая механика: что во что вставляется | 2.5″/3.5″, M.2, U.2 (SFF-8639), U.3, E1.S, E3.S |
| Транспорт | как биты идут по проводу | SATA-линия, SAS-линия, линии PCIe |
| Командный набор | что накопителю говорят | ATA/AHCI, SCSI, NVMe |

Комбинации не совпадают один в один. M.2 — это разъём, в который вставляется и SATA-накопитель, и NVMe-накопитель; ключ и распиновка у них разные, а внешне модули почти одинаковые. U.2 несёт PCIe, но тот же физический разъём SFF-8639 в трёхрежимной корзине (U.3) принимает и SAS, и SATA. Диск SATA прекрасно работает на SAS-контроллере, потому что SAS-домен умеет туннелировать ATA-команды. И, наконец, NVMe — это командный набор, который сегодня чаще всего ездит по PCIe, но по фабрикам (NVMe over Fabrics) ездит и по TCP, и по RDMA, и по Fibre Channel, оставаясь тем же NVMe.

Поэтому корректный вопрос звучит не «SATA или NVMe», а «какой командный набор поверх какого транспорта, в каком форм-факторе и с какой топологией».

## SATA

### Родословная и скорости

SATA появился в 2003 году как последовательная замена параллельному ATA и с тех пор прошёл три поколения скорости: 1.5 Гбит/с, 3 Гбит/с и 6 Гбит/с. Последнее — SATA revision 3.0, опубликованная SATA-IO в 2009 году, и на ней развитие скорости остановилось насовсем.

Практический потолок считается так: линия кодируется схемой 8b/10b, то есть на каждые восемь бит данных передаётся десять бит по проводу — 20 % уходит на кодирование. От 6 Гбит/с остаётся 4,8 Гбит/с полезных, что даёт **600 МБ/с**. Это цифра из спецификации, и любой SATA-накопитель, показывающий в тестах 540–560 МБ/с, упёрся именно в неё, а не в свою флеш-память.

Последующие ревизии — 3.1, 3.2, 3.3, 3.5 (июль 2020) и 3.5a (март 2021) — скорость не поднимали, а добавляли служебные возможности: DevSleep для экономии энергии, поддержку SMR-дисков, средства согласования приоритетов с другими устройствами. Преемника у 3.5a нет и, судя по всему, не будет: SATA Express, задуманный в ревизии 3.2 как мост к PCIe, на рынке не прижился — две линии PCIe оказались слишком скромным предложением на фоне полноценных четырёхлинейных NVMe-накопителей.

### AHCI и очередь на 32 команды

Более важное ограничение SATA — не скорость линии, а модель очереди. Стандартный программный интерфейс к SATA-контроллеру, AHCI, предоставляет **одну очередь команд глубиной 32**. Механизм называется NCQ (Native Command Queuing), и его исходный смысл был честным: дать диску переупорядочить запросы так, чтобы головка прошла по пластине оптимальным маршрутом.

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

Отсюда характерная картина в бенчмарках: SATA SSD и NVMe SSD показывают близкие результаты на однопоточном последовательном чтении (оба упираются в другие вещи) и расходятся на порядок на многопоточной случайной нагрузке с высокой глубиной очереди — то есть ровно на профиле СУБД, гипервизора и объектного хранилища.

### Где SATA всё ещё уместен

Списывать SATA рано, и по вполне рациональным причинам. Механические диски большой ёмкости — архив, резервные копии, холодные данные медиатеки — не приближаются к 600 МБ/с даже теоретически: 7200-оборотный диск выдаёт 150–250 МБ/с на последовательном чтении, и интерфейс для него избыточен вдвое. Портов SATA на обычной материнской плате шесть-восемь, и каждый из них не стоит ни одной линии PCIe, тогда как линии — самый дефицитный ресурс на потребительских платформах. Кабель SATA дёшев, тонок и допускает горячее подключение.

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

## SAS

### SCSI поверх последовательной шины

SAS (Serial Attached SCSI) занял в серверном мире ту же нишу, что SATA в потребительском, и с той же логикой: последовательная замена параллельной шине, в данном случае SCSI. Но в отличие от SATA, где от предшественника унаследовали в основном командный набор, SAS унаследовал и всю модель управления устройствами — с адресацией, доменами, инициаторами и целями.

Скорости шли парами с SATA, но ушли дальше: SAS-2 — 6 Гбит/с, SAS-3 — 12 Гбит/с, SAS-4 — 22,5 Гбит/с на линию (маркетинговое имя «24G SAS»; спецификация разработана в 2017 году и утверждена в 2019). SAS-5 находится в разработке в комитете T10 — там речь идёт скорее о новых разъёмах, форм-факторах и целостности сигнала, чем об очередном удвоении.

Ключевое отличие от SATA лежит не в цифрах. Командный набор SCSI изначально проектировался под многозадачность: очередь глубже, приоритеты команд выражаются явно, обработка ошибок разработана подробнее, а состояние устройства сообщается structured-кодами, а не набором флагов. Enterprise-накопитель на SAS честно рассказывает о своём состоянии — вплоть до счётчиков перераспределённых секторов, температуры и остаточного ресурса — и делает это через стандартизованные страницы журналов, а не через вендорские расширения.

### Топология: экспандеры, широкие и двойные порты

Именно здесь SAS уходит в отрыв. SATA — это соединение «точка-точка»: один порт контроллера, один диск. Мультипликаторы портов существуют, но применяются редко и плохо. SAS строит настоящую сеть.

```text
                       ┌─────────────┐
      ┌───── x4 wide ──│  Expander A │──┬── диск 1 (порт A)
      │                └─────────────┘  ├── диск 2 (порт A)
┌───────────┐                           └── ... до сотен
│    HBA    │
│ (initiator)│                          ┌── диск 1 (порт B)
└───────────┘  ┌─────────────┐          │
      └── x4 ──│  Expander B │──────────┴── диск 2 (порт B)
               └─────────────┘
```

Три механизма стоит различать. **Широкий порт** (wide port) объединяет несколько физических линий в один логический канал — четырёхлинейный порт SAS-3 даёт 48 Гбит/с суммарно, и это то, чем HBA подключается к корзине одним кабелем. **Экспандер** — коммутатор SAS-домена; он позволяет повесить на один HBA десятки и сотни накопителей, а каскадирование экспандеров увеличивает счёт дальше (адресация SAS допускает очень большие домены; практический предел определяется полосой и качеством конкретной реализации, а не адресным пространством). **Двойной порт** — свойство самого enterprise-накопителя: у него два независимых физических интерфейса, которые заводятся на два разных HBA или два контроллера СХД. Отказ контроллера, кабеля или экспандера не выводит диск из строя, а переключает трафик на второй путь; в Linux этим занимается `dm-multipath`.

У SATA-накопителя порт один, и это не мелочь: отказоустойчивая полка на SATA-дисках принципиально не собирается, каким бы качественным ни было железо вокруг.

### Целостность данных

SCSI-стек умеет то, чего в ATA нет вовсе: сквозную защиту данных T10 PI (Protection Information, исторически DIF). Сектор расширяется с 512 или 4096 байт на 8 байт метаданных — контрольная сумма блока, тег ссылки и тег приложения, — и эти 8 байт проверяются на каждом переходе: в HBA, в экспандере, в самом накопителе. Ошибка, возникшая в кабеле или в буфере контроллера, обнаруживается до записи, а не через полгода при чтении.

Это ровно та проблема, которую ZFS решает своими средствами на уровне файловой системы. Механизмы дополняют друг друга: T10 PI ловит порчу на тракте, контрольные суммы ZFS ловят порчу где угодно, включая сам накопитель, и умеют её чинить по избыточности.

### Односторонняя совместимость с SATA

SAS-контроллер принимает SATA-накопители. Работает это через STP (SATA Tunneling Protocol): экспандер оборачивает ATA-трафик в SAS-кадры, и диск виден системе обычным образом. Обратное невозможно — SAS-накопитель в SATA-порт не заводится ни физически (разъём отличается перемычкой), ни логически.

Практический вывод: смешанная корзина возможна, и её часто так и собирают — SAS для активных данных, дешёвые SATA-диски для ёмкости. Но при туннелировании теряется то, ради чего SAS и берут: у SATA-накопителя нет второго порта, нет T10 PI и нет полноценной SCSI-диагностики. Это по-прежнему SATA-диск, просто подключённый через SAS-инфраструктуру.

Разница видна прямо в драйвере. Семейство HBA на Broadcom `mpt3sas` задаёт глубину очереди по типу устройства: 254 команды для SAS-накопителя и 32 для SATA — ровно тот же потолок NCQ, что и на материнской плате. Дорогой контроллер не поднимает планку у диска, который её не поддерживает.

## NVMe

### Отказ от посредника

NVMe (Non-Volatile Memory Express) построен на наблюдении, которое к 2011 году стало очевидным: если накопитель — это флеш, то заставлять его говорить на языке, придуманном для вращающихся пластин, — чистые накладные расходы. Команда от приложения до SATA SSD проходила через уровень блочного устройства, драйвер AHCI, трансляцию в ATA-команду, контроллер SATA, и в конце контроллер накопителя переводил всё это обратно в операции с флеш-массивом.

NVMe убирает посредников. Накопитель подключён напрямую к PCIe, драйвер кладёт команду в кольцевой буфер в оперативной памяти, звонит в дверной звонок (doorbell-регистр), контроллер забирает команду по DMA и кладёт результат в буфер завершений. Никакой трансляции, никакого промежуточного контроллера шины.

Пропускная способность при этом определяется не самим NVMe, а поколением PCIe и числом линий. Для типовых четырёхлинейных накопителей (с учётом кодирования 128b/130b):

| Поколение PCIe | На линию | x4, практический потолок |
|----------------|----------|--------------------------|
| 3.0 (8 ГТ/с) | ~985 МБ/с | ~3,9 ГБ/с |
| 4.0 (16 ГТ/с) | ~1970 МБ/с | ~7,9 ГБ/с |
| 5.0 (32 ГТ/с) | ~3940 МБ/с | ~15,8 ГБ/с |

### Очереди — главное отличие

Если из NVMe нужно запомнить один факт, то этот. Спецификация допускает до **65 535 очередей ввода-вывода, в каждой до 65 536 команд**. Против одной очереди на 32 команды у AHCI.

Смысл не в абсолютных числах — столько никто не использует, — а в том, что очередь перестаёт быть общим ресурсом. Драйвер заводит по очереди на процессорное ядро, и поток, выполняющий ввод-вывод, работает со своей очередью: без блокировок, без конкуренции за общую структуру, с прерыванием завершения, приходящим на то же ядро, что отправило команду. В Linux это ложится на блочный слой `blk-mq` вообще без швов, потому что `blk-mq` спроектирован ровно под такую модель.

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

### Пространства имён и форм-факторы

Накопитель NVMe делится на namespace'ы — независимые адресные пространства, каждое из которых видно системе отдельным блочным устройством (`/dev/nvme0n1`, `/dev/nvme0n2`). Это не разделы: разбиение на namespace'ы выполняет контроллер накопителя, у каждого может быть свой размер сектора и свои настройки защиты данных. На корпоративных моделях namespace'ы создаются и удаляются на лету и служат основой для аккуратной нарезки под виртуальные машины.

Форм-факторы стоит различать отдельно от протокола:

- **M.2** — модуль на плате, обычно x4, потребительский стандарт и повод для большинства путаниц: в тот же слот вставляется и SATA-накопитель.
- **U.2** (разъём SFF-8639) — 2,5-дюймовый корпус с горячей заменой, PCIe наружу; корпоративная классика.
- **U.3** (SFF-TA-1001) — тот же разъём, но трёхрежимная корзина: одна универсальная стойка принимает NVMe, SAS и SATA. Совместимость односторонняя: накопитель U.3 работает в отсеке U.2, накопитель U.2 в отсеке U.3 — нет.
- **EDSFF** (E1.S, E3.S) — форм-факторы, спроектированные под плотность и охлаждение стойки, а не под наследие 2,5-дюймового отсека; в новых серверных платформах вытесняют U.2/U.3.

### NVMe over Fabrics

NVMe как командный набор не обязан ездить по PCIe. NVMe-oF переносит ту же модель очередей на сеть — по RDMA (RoCE, iWARP, InfiniBand), по TCP на обычном Ethernet и по Fibre Channel. Смысл в том, что удалённый накопитель остаётся NVMe-накопителем со всеми его очередями, а не превращается в SCSI-цель, как это происходит с iSCSI.

Отказоустойчивость здесь решается через ANA (Asymmetric Namespace Access) — аналог многопутевого доступа SAS, встроенный в сам протокол. В Linux работает нативно, без `dm-multipath`; политика выбора пути задаётся модулем `nvme_core` и принимает значения `numa` (по умолчанию), `round-robin` и `queue-depth`.

Спецификация развивается заметно быстрее соседей: после переработки библиотеки в версию 2.0 (июнь 2021) вышли ревизии 2.1 (август 2024), 2.2 (март 2025), 2.3 (июль 2025) и 2.4 (август 2026). Из содержательных дополнений последних лет — зонированные накопители (ZNS), живая миграция контроллеров между подсистемами, шифрование с ключом на операцию ввода-вывода.

## Сравнение

| | SATA | SAS | NVMe |
|---|------|-----|------|
| Командный набор | ATA (через AHCI) | SCSI | NVMe |
| Транспорт | линия SATA | линия SAS | линии PCIe (или фабрика) |
| Скорость линии | 6 Гбит/с (потолок с 2009) | 22,5 Гбит/с (SAS-4) | зависит от поколения PCIe |
| Практическая полоса | ~600 МБ/с | ~2,2 ГБ/с на линию, x4 в широком порту | ~3,9 / 7,9 / 15,8 ГБ/с (Gen3/4/5 x4) |
| Очереди | 1 × 32 | 1 × 254 (типично) | до 65 535 × 65 536 |
| Портов на накопителе | 1 | 2 (dual port) | 1 (отказоустойчивость — через ANA) |
| Масштабирование | точка-точка | экспандеры, сотни устройств | линии PCIe, обычно единицы-десятки |
| Целостность на тракте | нет | T10 PI | метаданные защиты (аналог) |
| Горячая замена | да | да | да (U.2/U.3/EDSFF), не в M.2 |
| Цена за терабайт | самая низкая | высокая | средняя, падает |

Развернём то, что за таблицей не видно.

**Пропускная способность против задержки.** Полосу легко нарастить, добавив линий; задержку — нет. NVMe выигрывает у SATA не столько в мегабайтах, сколько в микросекундах на операцию: короче программный путь, меньше переключений контекста, прерывание приходит на то ядро, которое отправило команду. Для нагрузки из множества мелких синхронных операций — журнал СУБД, метаданные файловой системы — это важнее любой полосы.

**Плотность против ширины.** У SAS есть свойство, которого у NVMe нет: дешёвое масштабирование по количеству. Один HBA с четырёхлинейным широким портом обслуживает полку на двадцать четыре диска, а каскад экспандеров — несколько полок. Чтобы подключить столько же накопителей NVMe напрямую, нужны линии PCIe, которых на процессор конечное число, — приходится ставить коммутаторы PCIe, и это дорого. Поэтому большие массивы ёмкости по-прежнему строят на SAS.

**Отказоустойчивость.** Двойной порт SAS — свойство железа, работающее без участия ОС и без сетевого стека. У NVMe эквивалент есть, но он либо на уровне фабрики (ANA поверх NVMe-oF), либо отсутствует: у обычного накопителя PCIe один путь, и его резервируют избыточностью на уровне пула, а не путей.

**Стоимость владения.** SATA даёт минимальную цену за терабайт и обходится без специального контроллера. SAS требует HBA и корпуса, но взамен даёт диагностику, целостность и топологию. NVMe перестал быть дорогим на потребительском рынке, но в серверном варианте (U.2/U.3, защита от потери питания, высокий ресурс записи) стоит заметных денег и, что важнее, потребляет линии PCIe — самый дефицитный ресурс современной платформы.

## Как выбирать

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

Системный диск и рабочая станция — NVMe без вариантов; выигрыш в отзывчивости системы виден невооружённым глазом и не требует обоснований. Домашний сервер и NAS — гибрид: NVMe под систему, метаданные и кэш, SATA-шпиндели под ёмкость; для ZFS это классическая раскладка, где отдельный NVMe уходит под `special` vdev или L2ARC. Массив ёмкости от десятка дисков — SAS, ради экспандеров, двойных портов и вменяемой диагностики, даже если сами диски в корзине окажутся SATA. База данных, гипервизор, объектное хранилище — NVMe, потому что там нагрузка состоит именно из параллельных мелких операций, ради которых он и сделан. Архив и холодные данные — SATA-шпиндели, самая низкая цена за терабайт, скорость интерфейса роли не играет.

Отдельно про корпоративные накопители: критерий выбора между потребительской и серверной моделью почти никогда не скорость, а защита от потери питания (PLP — конденсаторы, дающие контроллеру дописать буфер при пропадании напряжения) и ресурс записи. Потребительский NVMe в роли журнала СУБД теряет данные при отключении питания и изнашивается за месяцы.

## Практика: что смотреть в системе

### Что подключено и как

```bash
lsblk -o NAME,SIZE,ROTA,TRAN,MODEL,SERIAL     # ROTA=1 — механика, TRAN — sata/sas/nvme
lsscsi -s                                      # SCSI-устройства с ёмкостью
nvme list                                      # накопители NVMe и их namespace'ы
```

Столбец `TRAN` в `lsblk` — самый быстрый способ узнать, чем на самом деле является диск в слоте M.2: `sata` или `nvme`.

### Скорость канала, а не накопителя

Частая ошибка диагностики — измерять накопитель, когда узкое место в подключении. Реальную ширину и скорость линии PCIe показывает `lspci`:

```bash
lspci | grep -i nvme                          # найти адрес устройства
lspci -vv -s 01:00.0 | grep -i 'lnkcap\|lnksta'
```

`LnkCap` — на что накопитель способен, `LnkSta` — как он договорился на самом деле. Расхождение (`x4` в capability против `x2` в status) означает, что слот делит линии с чем-то ещё — типовая ситуация на потребительских платах, где второй слот M.2 отбирает линии у видеокарты или отключает пару портов SATA.

### Состояние и здоровье

```bash
smartctl -a /dev/sda                          # SATA и SAS
smartctl -a /dev/nvme0                        # NVMe тоже понимает
nvme smart-log /dev/nvme0                     # родной формат: температура, износ, ошибки
nvme id-ctrl /dev/nvme0 -H                    # возможности контроллера в читаемом виде
```

Для NVMe стоит смотреть `percentage_used` (расчётный износ ресурса записи), `media_errors` и `critical_warning`. Для SAS `smartctl` показывает страницы журналов SCSI, включая счётчики скорректированных ошибок по чтению и записи, — по ним деградация видна задолго до отказа.

### Очереди и планировщик

```bash
cat /sys/block/sda/queue/rotational           # 1 — механический диск
cat /sys/block/sda/queue/nr_requests          # глубина очереди блочного слоя
cat /sys/block/nvme0n1/queue/scheduler        # активный планировщик в [скобках]
ls /sys/block/nvme0n1/mq                      # аппаратные очереди: по одной на ядро
```

Планировщик — место, где легко потерять производительность на ровном месте. Для NVMe осмысленный выбор обычно `none`: накопителю нечего переупорядочивать, а работа планировщика становится чистым оверхедом. Для механики `mq-deadline` или `bfq` дают заметный выигрыш, потому что там сортировка запросов действительно экономит движения головки.

### Многопутевой доступ

```bash
cat /sys/module/nvme_core/parameters/multipath   # Y — нативный multipath NVMe включён
cat /sys/module/nvme_core/parameters/iopolicy    # numa | round-robin | queue-depth
nvme list-subsys                                 # подсистемы и пути к ним
multipath -ll                                    # пути SAS через device-mapper
```

Политики `iopolicy` заданы в драйвере `nvme_core`: по умолчанию `numa` (путь выбирается по близости к узлу памяти), альтернативы — `round-robin` и `queue-depth`.

### Корзины и экспандеры

```bash
lsscsi -H                                     # хост-адаптеры и их драйверы
sg_ses --page=es /dev/sg3                     # состояние корзины: слоты, вентиляторы, питание
sg_map -i                                     # соответствие sg-устройств блочным
```

SES (SCSI Enclosure Services) — то, чем корзина сообщает о себе: какой слот занят, где горит индикатор отказа, что с температурой. На SATA-инфраструктуре этого нет в принципе.

## Нюансы и подводные камни

**Линии PCIe — дефицитный ресурс.** На потребительской платформе процессор даёт около двадцати линий, и накопители конкурируют за них с видеокартой и сетевой картой. Второй накопитель M.2 нередко работает на половинной ширине или отключает пару портов SATA — это указано в руководстве к плате мелким шрифтом и обнаруживается через `lspci -vv` уже после покупки.

**Тепловой троттлинг.** Накопитель NVMe под нагрузкой греется всерьёз, а в ноутбуке или тесном корпусе рассеивать тепло некуда. Контроллер снижает скорость, и накопитель, показавший 7 ГБ/с на первых десяти секундах, дальше выдаёт треть от этого. Проверяется температурой в `nvme smart-log` под нагрузкой; лечится радиатором, а не заменой накопителя.

**SMR-диски.** Черепичная запись даёт плотность ценой катастрофической деградации на случайной записи: перезапись одного сектора влечёт переписывание всей зоны. В архиве это незаметно, в пуле ZFS — приводит к многосуточному ресилверу. Тип записи не всегда указан в спецификации явно; смотреть стоит на модель, а не на интерфейс, — SMR встречается и на SATA, и на SAS.

**RAID-контроллер против HBA.** Аппаратный RAID-контроллер прячет диски за своей логикой и отдаёт системе виртуальные тома. Для ZFS, Btrfs и программных массивов это вредно: файловая система теряет доступ к SMART, к реальным границам устройств и к сквозной проверке целостности. Правильная конфигурация — HBA в режиме IT (Initiator Target), где контроллер просто пробрасывает диски. Многие карты Broadcom/LSI перепрошиваются из RAID в IT-режим.

**U.2 и U.3 несовместимы в одну сторону.** Накопитель U.3 работает в отсеке U.2, обратное — нет. При закупке в существующую корзину это стоит проверять по паспорту шасси, а не по внешнему виду разъёма: он одинаковый.

**Глубина очереди в бенчмарках.** Сравнение SATA SSD и NVMe при `iodepth=1` покажет разницу в полтора раза и создаст ложное впечатление. Профиль теста должен соответствовать реальной нагрузке; для серверной это означает несколько заданий с глубиной очереди в десятки, для десктопной — как раз малые глубины, где разница честно невелика.

**SATA-диск в SAS-корзине остаётся SATA-диском.** Туннелирование через STP не добавляет ни второго порта, ни T10 PI. Смешивать можно, но рассчитывать на отказоустойчивость путей в такой полке нельзя.

## FreeBSD против Linux

Модель одна, реализации различаются заметно.

В Linux три подсистемы живут раздельно: `libata` обслуживает SATA, поднимая устройства как SCSI-диски (`/dev/sda`), стек SCSI — SAS-накопители (тоже `/dev/sda`), а NVMe имеет собственный драйвер и собственное пространство имён устройств (`/dev/nvme0n1`). Многопутевой доступ раздвоен соответственно: для SAS это `dm-multipath` в пространстве пользователя, для NVMe — нативный ANA внутри `nvme_core`.

FreeBSD прогоняет всё через единую подсистему CAM. SATA и SAS обслуживаются драйверами `ada` и `da` поверх общего транспортного слоя, а с FreeBSD 14 туда же заведён и NVMe: драйвер `nda` (NVMe Direct Access) по умолчанию поднимает накопители как CAM-устройства, включая подключённые через NVMe over Fabrics. Старый драйвер `nvd` остался для совместимости, переключение делается тюнаблом `hw.nvme.use_nvd`, а `kern.cam.nda.nvd_compat` создаёт алиасы со старыми именами. Практическое следствие — единый инструментарий: `camcontrol` работает и с SATA, и с SAS, и с NVMe-устройствами, тогда как в Linux для каждого стека свой набор утилит.

Диагностика соответственно: `camcontrol devlist` вместо `lsblk`/`lsscsi`, `nvmecontrol devlist` и `nvmecontrol logpage` вместо `nvme list` и `nvme smart-log`, `smartctl` работает одинаково на обеих системах. Планировщиков ввода-вывода в привычном линуксовом смысле в FreeBSD нет: GEOM устроен иначе, и настройка идёт через параметры CAM и sysctl вроде `kern.cam.nda.sort_io_queue` (сортировка очереди по LBA, по умолчанию выключена — для флеша она бессмысленна).

## Источники

- [SATA-IO — пресс-релиз SATA Revision 3.0](https://sata-io.org/sites/default/files/documents/SATA-Revision-3.0-Press-Release-FINAL-052609.pdf) и [FAQ по ревизии 3.0](https://sata-io.org/sites/default/files/documents/SATA-Revision-3.0-FAQ-FINAL.pdf) — 6 Гбит/с, кодирование 8b/10b, 600 МБ/с
- [SATA-IO — Revision 3.5](https://sata-io.org/slider/8795) и [Revision 3.5a, март 2021](https://sata-io.org/downloads/8833) — последние ревизии стандарта
- [NVM Express — спецификации](https://nvmexpress.org/specifications/); [Base Specification Revision 2.1 (05.08.2024)](https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-Revision-2.1-2024.08.05-Ratified.pdf), [Revision 2.3 (31.07.2025)](https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-Revision-2.3-2025.08.01-Ratified.pdf) — история ревизий и модель очередей
- [NVM Express — анонс набора спецификаций от 04.08.2026](https://www.techpowerup.com/351348/nvm-express-publishes-set-of-nvme-specifications-enhancing-security-manageability-and-sustainability) — базовая спецификация 2.4 и сопутствующие
- [STA/SNIA — завершение разработки 24G SAS](https://www.snia.org/news_events/newsroom/24g-sas-data-storage-specification-development-complete-scsi-trade-association) и [KIOXIA — технический обзор 24G SAS](https://americas.kioxia.com/content/dam/kioxia/en-us/business/ssd/enterprise-ssd/asset/KIOXIA_PM7_24G_SAS_Intro_Tech_Brief.pdf) — SAS-4, 22,5 Гбит/с на линию
- [SNIA/SFF — U.3 (SFF-TA-1001) и универсальные отсеки](https://www.storagereview.com/news/evolving-storage-with-sff-ta-1001-u-3-universal-drive-bays) — трёхрежимные корзины и односторонняя совместимость
- [Документация ядра Linux: sysfs блочного устройства](https://docs.kernel.org/block/index.html) — `queue/rotational`, `queue/nr_requests`, `queue/scheduler`
- [Исходники ядра: `drivers/nvme/host/multipath.c`](https://github.com/torvalds/linux/blob/master/drivers/nvme/host/multipath.c) — параметры `nvme_core.multipath` и `iopolicy` (`numa`, `round-robin`, `queue-depth`)
- [FreeBSD: nda(4)](https://man.freebsd.org/cgi/man.cgi?query=nda&sektion=4) и [nvmecontrol(8)](https://man.freebsd.org/cgi/man.cgi?query=nvmecontrol&sektion=8) — NVMe через CAM, `hw.nvme.use_nvd`, `kern.cam.nda.nvd_compat`
- [Релиз-ноты FreeBSD 14.0](https://www.freebsd.org/releases/14.0R/relnotes/) — NVMe-накопители стали устройствами `nda` по умолчанию

---

## Связанные заметки

- [Linux — файловые системы: ext4, XFS, Btrfs, LVM](./linux-filesystems.md) — слой, который ложится поверх этих интерфейсов
- [Linux — справочник команд: файловые системы и хранение](./linux-tldr-storage.md) — команды диагностики ввода-вывода: `iostat`, `blktrace`, `fio`
- [FreeBSD — ZFS](./freebsd-zfs.md) — контрольные суммы и избыточность как альтернатива T10 PI, раскладка пула по типам накопителей
- [Linux — средства диагностики производительности](./linux-perf-tools.md) — где в карте инструментов находится слой блочных устройств
- [Локальный инференс LLM](./llm-local-inference.md) — веса моделей весят десятки гигабайт и читаются с накопителя при каждой загрузке
- [Эксплуатация локальных ИИ-сервисов](./ai-services-operations.md) — отдельный раздел под веса, скорость чтения как слагаемое холодного старта
- [Физическая память: от карты firmware до аллокатора](./os-physical-memory.md) — та же граница со стороны ядра: почему разрядность адреса контроллера превращается в отдельный класс физической памяти
- [AES-GCM против ChaCha20-Poly1305: как выбирать](./crypto-aes-vs-chacha20.md) — что упирается в процессор, когда шифрование стоит на пути данных к накопителю или в сеть
