Перейти к основному содержанию

Реанимация NVMe диска в Linux — 3

NVMe

Я уже писал о реанимации отвалившихся дисков NVMe. В первом случае у меня рассыпался namespace:

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

Вот втором случае namespace остался целым, но диск выпал из устройств PCI:

Реанимация NVMe диска в Linux — 2

Сегодня у нас очень похожий случай, NVMe диск выпал из устройств PCI, из mdadm массива, соответственно тоже. Если раньше реанимация проводилась на RAID1 массивах, то сегодня пострадал RAID10. Возможно, именно из-за этого процедура восстановления оказалась чуть сложнее.

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

Samsung SSD MZPLJ12THALA-00007 — NVMe 12.8 ТБ

Помимо этого в сервере есть ещё два NVME диска Samsung, которые объединены в зеркальный программный RAID1 массив.

Samsung SSD 3.2TB PCIe MZPLJ3T2HBJR-00007

Один из NVMe дисков в RAID10 массиве на сервере перестал работать. Массив, собранный с помощью mdadm, перешёл в состояние degraded. Сработал мониторинг, начинаем разбираться в ситуации. Сервер перезагружать нельзя, будем чинить прямо так.

Посмотрим состояние массивов:

cat /proc/mdstat

nvme

В массиве md30 работают три из четырёх дисков: [U_UU]. В качестве дисков массиву переданы четыре раздела:

  • /dev/nvme0n1p1
  • /dev/nvme2n1p1
  • /dev/nvme3n1p1 (F)
  • /dev/nvme5n1p1

По значку (F) видно, что /dev/nvme3n1p1 — faulty. Посмотрим подробности:

mdadm --detail /dev/md30

nvme

А диск-то у нас из массива не удалился на этот раз. Он числится в массиве и помечен как сбойный.

Посмотреть информацию об NVMe дисках можно с помощью утилиты nvme из пакета nvme-cli:

NVMe Command Line Interface (NVMe-CLI)

yum install nvme-cli
или
apt install nvme-cli

nvme list

nvme

Однако, утилита не смогла обнаружить диск /dev/nvme3n1. Видим пять устройств, а должно быть шесть. Можно посмотреть, определяется ли диск как PCI устройство командой lspci.

lspci | grep -E "NVMe|Non-Volatile"

Диски бывают разные, у меня Samsung, можно и по-другому вычислить:

lspci | grep Samsung
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
41:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
44:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
47:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
84:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
87:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824

В списке присутствуют все шесть NVMe дисков из обоих RAID массивов. Нам нужно определить адрес сбойного диска.

cd /sys/bus/pci/drivers/nvme/
ll

Сравниваем два списка.

nvme

Драйвер устройства 0000:47:00.0 отсутствует, остальные есть. Удаляем отсутствующий диск из списка устройств и заново сканируем PCI.

echo 1 > /sys/bus/pci/devices/0000\:47\:00.0/remove
echo 1 > /sys/bus/pci/rescan

Здесь самое важное, не удалить что-нибудь не то. Если ошибиться с диском, то можно потерять данные.

nvme list

nvme

Диск /dev/nvme3n1 появился. Проверим ошибки:

nvme smart-log /dev/nvme3n1

nvme

Странно, ошибок нет. Вероятно, сбой произошёл не по причине неисправности диска. Проверим namespace:

nvme id-ns /dev/nvme3n1

nvme

Namespace существует. Посмотрим раздел.

lsblk

nvme

Раздел /dev/nvme3n1p1 существует. Поскольку раздел ещё числится в массиве как сбойный, выкинем его оттуда:

mdadm /dev/md30 --remove /dev/nvme3n1p1
mdadm --detail /dev/md30

Теперь сбойных дисков в массиве не числится.

nvme

Возвращаем диск в массив.

mdadm /dev/md30 --add /dev/nvme3n1p1
cat /proc/mdstat

nvme

Массив начал восстанавливаться.

mdadm --detail /dev/md30

nvme

Осталось дождаться окончания процедуры перестроения массива.

Ссылки

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

Реанимация NVMe диска в Linux — 2

Теги

Цены

 

Похожие материалы

Уменьшение виртуального диска с LVM

У нас есть виртуальная машина, на ней есть диск. Диск большой, данных мало. Наша задача - сделать диск меньшего размера. На борту Logical Volume Manager (LVM). Gparted не умеет переносить данные на LVM разделах. Будем делать всё руками.

Медиа сервер MiniDLNA на Ubuntu 18

Надоело мне перекачивать на флешки фильмы, чтобы посмотреть их на телевизоре. Кто придумал размещать USB разъёмы на телевизорах сзади? Пропихивая руку в узкую щель за телевизором и пытаясь в очередной раз воткнуть куда-нибудь на ощупь флешку, я подумал: "Зачем я всем этим занимаюсь?"

Теги