

© Onizuka, 2020.
В последнее время стоимость накопителей SSD стандарта NVMe практически сравнялась со стоимостью обычных SSD SATA, а разъем для них (а то и два) стал обязательной принадлежностью современных материнских плат. На более старых платформах их тоже можно использовать, через недорогой переходник на PCI-E, если BIOS платы поддерживает подобные устройства. При этом такие накопители при одинаковых затратах обеспечивают реальный прирост производительности в 3-4 раза даже на PCI-E 2.0, а на 3.0 прирост может быть пяти-шестикратным.
Однако с поддержкой таких накопителей со стороны системы могут возникать проблемы: так, Ubuntu стала корректно “видеть” их с версий 14.*, но без поддержки всех операций с партишнами. С версии 16.04 обеспечивается полная поддержка операций, но могут возникать трудности при попытке использовать NVMe в качестве загрузочного. Одним из источников этой проблемы являются особенности загрузки модулей ядра этой версии системы – поддержка NVMe включается на последнем этапе загрузки, то есть система может “не увидеть” /boot при старте. Возможно при следующих обновлениях этой версии системы данная проблема будет решена, но пока с ней можно столкнуться. Решением может быть переход на бакпорт ядра от более свежей версии 18.04:
1 |
sudo apt install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04 |
После этого имеет смысл внести изменения в конфиг grub, чтобы подстраховаться от проблем при старте системы с NVMe, а также чтобы исключить внезапные зависания этого накопителя в процессе работы. Дело в том, что аппаратная платформа рассматривает его как обычный HDD, и в результате иногда пытается отправить “поспать”, чтобы сэкономить электричество… Это имеет весьма печальные последствия: накопитель внезапно перестаёт отзываться вообще, причём не помогает даже hard reset – только выключение питания сбрасывает этот статус. Также при загрузке он может сыпать фиктивными (на самом деле с секторами всё в порядке) ошибками вида I/O error, dev nvme0n1, sector с резюме nvme0: Removing after probe failure status: -19 в финале.
Редактируем конфиг:
1 |
sudo gedit /etc/default/grub |
указав дополнительные параметры для загрузки ядра:
1 |
nvme_load=YES nvme_core.default_ps_max_latency_us=00 nvme_core.dyndbg=+p |
после чего обновляем grub. Здесь первый параметр nvme_load=YES обеспечивает режим совместимости NVMe как загрузочного устройства, но я не уверен, что он до сих пор необходим. Второй параметр решает проблему “засыпания” накопителя, хотя, говорят, что помогает он не всем. В принципе, латенси можно поставить и чуть выше (до пары сотен), но опыт показывает, что в этом случае система может стартовать с глюками. Что делает последний параметр – я так толком и не смог разобраться, но у меня после его применения исчезли странные заглюки при загрузке, случавшиеся ранее через раз.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.