Подстава с NVMe на Линуксе

?v=1

Доброго времени суток.

Хотел обратить внимание сообщества на характерную особенность Linux при работе с несколькими NVMe SSD в одной системе. Особенно актуально будет для тех кто любит делать из NVMe программные RAID массивы.
Надеюсь, что информация приведенная ниже поможет уберечь ваши данные и избавит от досадных ошибок.
Все мы привыкли к следующий логике Linux при работе с блочными устройствами:
Если устройство называется /dev/sda то разделы на нем будут /dev/sda1, /dev/sda2, и т.д.
Для просмотра SMART атрибутов мы используем что-то вроде smartctl -a /dev/sda, а форматируем, и в массивы добавляем уже разделы, вроде /dev/sda1.

Все мы привыкли к аксиоме, что /dev/sda1 располагается на /dev/sda. И, если в один день SMART покажет что /dev/sda почти сдох, — именно /dev/sda1 мы будем выкидывать из RAID массива на замену.

Оказывается, при работе с NVMe Namespaces это правило не работает. Пруф:

nvme list && ( smartctl -a /dev/nvme0 && smartctl -a /dev/nvme1 && smartctl -a /dev/nvme2 ) | grep Serial
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S466NX0K72XX06M Samsung SSD 970 EVO 500GB 1 96.92 GB / 500.11 GB 512 B + 0 B 1B2QEXE7
/dev/nvme1n1 S466NX0K43XX48W Samsung SSD 970 EVO 500GB 1 91.00 GB / 500.11 GB 512 B + 0 B 1B2QEXE7
/dev/nvme2n1 S466NX0K72XX01A Samsung SSD 970 EVO 500GB 1 0.00 B / 500.11 GB 512 B + 0 B 1B2QEXE7
Serial Number: S466NX0K72XX06M
Serial Number: S466NX0K72XX01A
Serial Number: S466NX0K43XX48W

Внимательный читатель по сопоставлению серийных номеров заметит, что /dev/nvme1n1 на самом деле располагается на /dev/nvme2, и наоборот.

Р.S.

Желаю вам никогда не удалять из RAID массива последний живой NVMe SSD.

© Habrahabr.ru