Реанимация NVMe диска

Thank you for reading this post, don't forget to subscribe!

Име­ет­ся сер­вер с опе­ра­ци­он­ной систе­мой Oracle Linux. В сер­ве­ре два NVME дис­ка Samsung, кото­рые объ­еди­не­ны в зер­каль­ный RAID1 массив.

Один из NVMe дис­ков на сер­ве­ре пере­стал рабо­тать. Диск про­пал из ОС и из RAID, но после пере­за­груз­ки стал виден. Посмот­реть инфор­ма­цию об NVMe дис­ках мож­но с помо­щью ути­ли­ты nvme из паке­та nvme-cli:

yum install nvme-cli

или

apt install nvme-cli

nvme list -o json

Инфор­ма­ция о дис­ке выво­дит­ся, это уже хоро­шо, зна­чит, кон­трол­лер дис­ка ещё рабо­та­ет. Но все пар­ти­ции про­па­ли, диск недо­сту­пен для записи.

При попыт­ке счи­тать SMART лог полу­ча­ем ошибку:

nvme smart-log /dev/nvme0n1

NVME Status:NS_NOT_READY: The namespace is not ready to be accessed as a result of a condition other than a condition that is reported as an Asymmetric Namespace Access condition

Понят­но, что при обра­ще­нии к namespace дис­ка про­изо­шла какая-то ошиб­ка. При этом SMART лог вто­ро­го тако­го же дис­ка пре­крас­но читается:

nvme smart-log /dev/nvme1n1

Про­бую полу­чить инфор­ма­цию о namespace про­блем­но­го диска:

nvme id-ns /dev/nvme0n1

Инфор­ма­ция выво­дит­ся кор­рект­но. Полу­ча­ет­ся, что кон­трол­лер дис­ка рабо­та­ет, namespace есть, но поче­му-то не рабо­та­ет. Попро­бу­ем отфор­ма­ти­ро­вать NVMe диск. Речь идёт не о фор­ма­ти­ро­ва­нии фай­ло­вой систе­мы, а о фор­ма­ти­ро­ва­нии про­стран­ства (namespace).

Син­так­сис команды:

Фор­ма­ти­рую про­стран­ство с пара­мет­ра­ми по умолчанию:

nvme format /dev/nvme0n1

Отлич­но:

Success formatting namespace:1

Сно­ва про­бую счи­тать SMART лог про­блем­но­го диска:

nvme smart-log /dev/nvme0n1

Теперь лог чита­ет­ся. Диск успеш­но реани­ми­ро­ван, прав­да, он пуст.

Нуж­но зано­во создать раз­дел и доба­вить его в RAID1 мас­сив как SPARE диск. RAID мас­сив нач­нёт восстанавливаться.

Через 1031 мину­ту целост­ность мас­си­ва была вос­ста­нов­ле­на. Оба NVMe дис­ка в строю.

Если вы види­те NVMe диск в Linux как /dev/nvme0n1, то это уже кое о чём гово­рит. Пер­вая часть назва­ния дис­ка "nvme0…" это нуле­вой кон­трол­лер, вто­рая часть назва­ния "…n1" это пер­вый namespace. Так что уже из назва­ния дис­ка было понят­но, что кон­трол­лер жив и про­стран­ство суще­ству­ет. Мож­но было схо­ду форматнуть.