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

image

При соответствующей настройке можно загружаться с накопителя 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.

 
Источник

BIOS, NVMe, pci-e, SSD, Ненормальное железо

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