Использование NVME SSD как системного накопителя на компьютерах со старым BIOS и ОС Linux

Использование NVME SSD как системного накопителя на компьютерах со старым BIOS и ОС Linux

При соответствующей настройке можно загружаться с накопителя NVME SSD даже на старых системах. Предполагается, что операционная система (ОС) умеет работать с NVME SSD. Рассматриваю именно загрузку ОС, поскольку при имеющихся в ОС драйверах NVME SSD виден в ОС после загрузки и может использоваться. Дополнительного программного обеспечения (ПО) для линукса не требуется. Для ОС семейства BSD и прочих юниксов способ скорее всего тоже подойдёт.

Для загрузки с какого-либо накопителя нужно, чтобы в программе первоначальной загрузки (ППЗ), в BIOS или EFI (UEFI) содержались драйвера для данного устройства. Накопители NVME SSD есть достаточно новые устройства по сравнению с BIOS, и в ППЗ прошивок старых материнских плат таких драйверов нет. В EFI без поддержки NVME SSD можно добавить соответствующий код, и тогда становится возможна полноценная работа с этим устройством — можно установить операционную систему и загрузить её. Для старых систем с т. н. «legacy BIOS» загрузкой ОС так сделать вряд ли получится. Однако это можно обойти.

Как делать

Я использовал openSUSE Leap 15.1. Для других линуксов действия будет примерно те же.

1. Подготовим компьютер для установки операционной системы.
Нужен ПК или сервер со свободным разъёмом PCI-E 4x или более длинным, неважно какой версии, хватит и PCI-E 1.0. Конечно, чем новее версия PCI-E, тем выше будет скорость. Ну и, собственно, NVME SSD с переходником M.2 — PCI-E 4x.
Также нужен какой-либо накопитель с ёмкостью 300 МБ и более, который виден из биоса и с которого можно грузить ОС. Это может быть НЖМД с подключением по IDE, SATA, SCSI. SAS. Или USB флэшка, или карта памяти. На дискету — не влезет. Диск CD-ROM не подойдёт, потребуется перезапись. DVD-RAM — без понятия. Условно назовём эту штуку «legacy BIOS накопитель».

2. Загружаем линукс для установки (с оптического диска или загрузочной флэшки или др.).

3. При размечивании диска распределим ОС по имеющимся накопителям:
3.1. Создадим раздел для загрузчика GRUB в начале «legacy BIOS накопителя» размером 8 МБ. Отмечу, что здесь используется особенность openSUSE — GRUB на отдельном разделе. Для openSUSE по умолчанию используется файловая система (ФС) BTRFS. Если разместить GRUB на разделе с ФС BTRFS, то система не загрузится. Поэтому используется отдельный раздел. Можете разместить GRUB в другом месте, лишь бы грузился.
3.2. После раздела с GRUB создадим раздел с частью системной папки («корня»), а именно с «/boot/», размером 300 МБ.
3.3. Оставшееся добро — остаток системной папки, раздел для свопа, раздел пользователя «/home/» (если таковой вы решили создать) можно разместить на NVME SSD.

После установки система грузит GRUB, который грузит файлы из /boot/, после чего NVME SSD становится доступным, затем идёт загрузка системы с NVME SSD.
На практике я получил существенное ускорение.

Требования по ёмкости «legacy BIOS накопителя»: 8 МБ для раздела GRUB — это по умолчанию, и где-то от 200 МБ для /boot/. 300 МБ я взял с запасом. При обновлении ядра (и при установке новых) линукс будет пополнять раздел /boot/ новыми файлами.

Оценка скорости и стоимости

Стоимость NVME SSD 128 ГБ — примерно от 2000 р.
Стоимость переходника M.2 — PCI-E 4x — примерно от 500 р.
Также есть в продаже переходники M.2 — PCI-E 16x на четыре накопителя NVME SSD, ценой где-то от 3000 р. — если это кому надо.

Предельные скорости:
PCI-E 3.0 4x около 3900 МБ/с
PCI-E 2.0 4x 2000 МБ/с
PCI-E 1.0 4x 1000 МБ/с
Накопители с PCI-E 3.0 4x на практике достигают скорости около 3500 МБ/с.
Можно предположить, что достижимая скорость будет такой:
PCI-E 3.0 4x около 3500 МБ/с
PCI-E 2.0 4x около 1800 МБ/с
PCI-E 1.0 4x около 900 МБ/с

Что быстрее, чем SATA 600 МБ/с. Достижимая скорость для SATA 600 МБ/с — около 550 МБ/с.
При этом на старых материнских платах скорость SATA набортного контроллера может быть не 600 МБ/с, а 300 МБ/с или 150 МБ/с. Здесь набортный контроллер = контроллер SATA, встроенный в южный мост чипсета.

Отмечу, что для NVME SSD будет работать NCQ, а у старых набортных контроллеров этого может и не быть.

Я делал расчёты для PCI-E 4x, однако некоторые накопители имеют шину PCI-E 2x. Этого хватает для PCI-E 3.0, но для более старых стандартов PCI-E — 2.0 и 1.0 — такие NVME SSD лучше не брать. Также накопитель с буфером в виде чипа памяти будет быстрее, чем без оного.

Для желающих полностью отказаться от набортного контроллера SATA посоветую использовать контроллер Asmedia ASM 106x (1061 и др.), который предоставляет два порта SATA 600 (внутренних или внешних). Он работает весьма хорошо (после обновления прошивки), в режиме AHCI поддерживает NCQ. Подключается по шине PCI-E 2.0 1x.

Его предельная скорость:
PCI-E 2.0 1x 500 МБ/с
PCI-E 1.0 1x 250 МБ/с
Достижимая скорость будет такой:
PCI-E 2.0 1x 460 МБ/с
PCI-E 1.0 1x 280 МБ/с

Этого хватит на один SATA SSD или два НЖМД.

Замеченные недостатки

1. Не считываются параметры SMART с NVME SSD, есть только общие данные по производителю, серийному номеру и т.д. Возможно, из-за слишком старой материнской платы (мп). Для своих бесчеловечных опытов я использовал самую старую мп, которую смог найти, с чипсетом nForce4.

2. TRIM должен работать, но это надо проверять.

Заключение

Есть ещё другие возможности: купить контроллер SAS с разъёмом PCI-E 4x или 8х (бывают ли 16х или 32х?). Однако они если дешёвые, то поддерживают SAS 600, но SATA 300, а дорогие будут дороже и медленнее предложенного выше способа.

Для использования с M$ Windows можно установить дополнительное ПО — загрузчик со встроенными драйверами для NVME SSD.

См. здесь:
www.win-raid.com/t871f50-Guide-How-to-get-full-NVMe-support-for-all-Systems-with-an-AMI-UEFI-BIOS.html
www.win-raid.com/t3286f50-Guide-NVMe-boot-for-systems-with-legacy-BIOS-and-older-UEFI-DUET-REFIND.html
forum.overclockers.ua/viewtopic.php?t=185732
pcportal.org/forum/51-9843-1
mrlithium.blogspot.com/2015/12/how-to-boot-nvme-ssd-from-legacy-bios.html

Предлагаю читателю самому оценить, нужно ли ему такое применение NVME SSD, или лучше будет купить новую материнскую плату (+ процессор + память) с имеющимся разъёмом M.2 PCI-E и поддержкой загрузки с NVME SSD в EFI.

Источник: habr.com