Имеется сервер с операционной системой Oracle Linux. В сервере два NVME диска Samsung, которые объединены в зеркальный RAID1 массив.
Samsung SSD MZPLJ12THALA-00007 — NVMe 12.8 ТБ
Один из NVMe дисков на сервере перестал работать. Массив, собранный с помощью mdadm выкинул сбойный диск и продолжил в статусе degraded.
Посмотреть информацию об NVMe дисках можно с помощью утилиты nvme из пакета nvme-cli:
yum install nvme-cli
или
apt install nvme-cli
nvme list
Однако, утилита не смогла обнаружить второй NVMe диск и его контроллер.
Сервер в работе, перезагружать его нельзя. Можно посмотреть, определяется ли диск как PCI устройство командой lspci.
lspci | grep -E "NVMe|Non-Volatile"
Диски бывают разные, поэтому приходится думать, как именно обнаружить устройство в списке. Но у меня два одинаковых диска, один из них точно работает, поэтому мне проще. В итоге я вычисляю устройства. В списке присутствуют оба диска:
lspci | grep Samsung
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824 81:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a824
Заходим в /sys/bus/pci/drivers/nvme/ и видим, что устройство 0000:02:00.0 имеется, а вот второго нет. Удаляем отсутствующий диск из списка устройств и заново сканируем PCI.
echo 1 > /sys/bus/pci/devices/0000\:81\:00.0/remove
echo 1 > /sys/bus/pci/rescan
На этом, собственно, всё. Диск определился.
Возвращаем диск в массив.
mdadm /dev/md30 --add /dev/nvme1n1p1
Массив начал восстанавливаться.