Изоляция проблемы ввода-вывода с NVME или оборудованием?

Вопрос или проблема

Оборудование:

  • Samsung 980 PRO M.2 NVMe SSD (MZ-V8P2T0BW) (2TB)
  • Beelink GTR6, с SSD в слоте NVMe

С момента получения оборудования я установил на него Ubuntu Server, а также ряд сервисов (в основном в docker, базы данных и сервисы типа Kafka).

Через 2-3 дня работы (рекорд почти неделя, но обычно это 2-3 дня) я обычно начинаю получать ошибки i/o буфера на слоте nvme (который также является загрузочным диском):screen1

Если я действую достаточно быстро, то все еще могу войти по SSH, но система становится все менее стабильной, и команды начинают завершаться с ошибкой ввода/вывода. Когда мне удалось войти, казалось, что нет подключенного NVME-SSD:screen2

Еще один случай ошибки i/o буфера на слоте nvme:screen3

Из-за этого и пытаясь проверить все, что мог найти, я запускал FSCK при загрузке, чтобы увидеть, есть ли что-то очевидное – это довольно часто после жесткой перезагрузки:

# cat  /run/initramfs/fsck.log
Log of fsck -C -f -y -V -t ext4 /dev/mapper/ubuntu--vg-ubuntu--lv
Fri Dec 30 17:26:21 2022

fsck from util-linux 2.37.2
[/usr/sbin/fsck.ext4 (1) -- /dev/mapper/ubuntu--vg-ubuntu--lv] fsck.ext4 -f -y -C0 /dev/mapper/ubuntu--vg-ubuntu--lv
e2fsck 1.46.5 (30-Dec-2021)
/dev/mapper/ubuntu--vg-ubuntu--lv: recovering journal
Clearing orphaned inode 524449 (uid=1000, gid=1000, mode=0100664, size=6216)
Pass 1: Checking inodes, blocks, and sizes
Inode 6947190 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947197 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947204 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947212 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947408 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947414 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947829 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947835 extent tree (at level 1) could be shorter.  Optimize? yes

Inode 6947841 extent tree (at level 1) could be shorter.  Optimize? yes

Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (401572584, counted=405399533).
Fix? yes

Free inodes count wrong (121360470, counted=121358242).
Fix? yes

/dev/mapper/ubuntu--vg-ubuntu--lv: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/ubuntu--vg-ubuntu--lv: 538718/121896960 files (0.2% non-contiguous), 82178067/487577600 blocks
fsck exited with status code 1

Fri Dec 30 17:26:25 2022
----------------

Запуск smart-log не показывает ничего тревожного, кроме числа небезопасных остановок (количество раз, когда это произошло)…

# nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                        : 0
temperature                                : 32 C (305 Kelvin)
available_spare                                : 100%
available_spare_threshold                : 10%
percentage_used                                : 0%
endurance group critical warning summary: 0
data_units_read                                : 8,544,896
data_units_written                        : 5,175,904
host_read_commands                        : 39,050,379
host_write_commands                        : 191,366,905
controller_busy_time                        : 1,069
power_cycles                                : 21
power_on_hours                                : 142
unsafe_shutdowns                        : 12
media_errors                                : 0
num_err_log_entries                        : 0
Warning Temperature Time                : 0
Critical Composite Temperature Time        : 0
Temperature Sensor 1           : 32 C (305 Kelvin)
Temperature Sensor 2           : 36 C (309 Kelvin)
Thermal Management T1 Trans Count        : 0
Thermal Management T2 Trans Count        : 0
Thermal Management T1 Total Time        : 0
Thermal Management T2 Total Time        : 0

Я обратился в службу поддержки, и их первое предложение вместе с рядом вопросов было, пробовал ли я переустановить ОС. Я попробовал это, отформатировал диск и переустановил ОС (Ubuntu Server 22 LTS).

После этого проблема не возникала 4 дня, пока, наконец, не проявилась как паника ядра:enter image description here

Есть ли идеи, что я могу сделать, чтобы определить, является ли проблема с самим SSD или с оборудованием, в которое установлен SSD (GTR6)? У меня есть время до 31-го, чтобы вернуть SSD, так что я хотел бы выяснить наиболее вероятную причину проблемы как можно скорее…

Я еще больше обеспокоен, увидев сообщения о том, что у других серьезные проблемы со здоровьем с Samsung 990 Pro: https://www.reddit.com/r/hardware/comments/10jkwwh/samsung_990_pro_ssd_with_rapid_health_drops/

Редактировать: хотя я осознал, что эти проблемы были сообщены с 990 pro, а не с 980 pro, который у меня есть!

Редактировать2: кто-то на overclockers любезно предложил hd sentinel, который показывает метрику здоровья, которая кажется нормальной:

# ./hdsentinel-019c-x64       
Hard Disk Sentinel for LINUX console 0.19c.9986 (c) 2021 [email protected]
Start with -r [reportfile] to save data to report, -h for help

Examining hard disk configuration ...
HDD Device  0: /dev/nvme0             
HDD Model ID : Samsung SSD 980 PRO 2TB
HDD Serial No: S69ENL0T905031A
HDD Revision : 5B2QGXA7
HDD Size     : 1907729 MB
Interface    : NVMe
Temperature  : 41 °C
Highest Temp.: 41 °C
Health       : 99 %
Performance  : 100 %
Power on time: 21 days, 12 hours
Est. lifetime: more than 1000 days
Total written: 8.30 TB
  The status of the solid state disk is PERFECT. Problematic or weak sectors were not found. 
  The health is determined by SSD specific S.M.A.R.T. attribute(s):  Available Spare (Percent), Percentage Used
    No actions needed.

Наконец, ни одна из вещей, которые я пробовал, таких как smart-log, не показывала что-то вроде метрики здоровья. Как я могу это проверить в ubuntu?

Спасибо!

У меня такая же проблема, с исчезающим устройством…
Сразу после загрузки оно обычно присутствует, но каким-то образом заставляет ядро (или драйвер) думать, что оно исчезает.

Когда я сделал полную проверку блоков в Windows, он просто оставался в работе все 14+ часов и не обнаружило 0% плохих блоков… Моему диску всего месяц, так что я ожидаю, что оборудование все еще в хорошем состоянии; это должно быть проблема с драйвером или взаимодействием материнской платы/BIOS…

Пример вывода:

[  646.205010] nvme nvme1: I/O 526 QID 2 timeout, aborting
[  646.205039] nvme nvme1: I/O 213 QID 5 timeout, aborting
[  646.264489] nvme nvme1: Abort status: 0x0
[  646.351285] nvme nvme1: Abort status: 0x0
[  676.924830] nvme nvme1: I/O 526 QID 2 timeout, reset controller
[  697.972569] nvme nvme1: Device not ready; aborting reset, CSTS=0x1
[  697.993956] pcieport 10000:e0:1b.0: can't derive routing for PCI INT A
[  697.993965] nvme 10000:e2:00.0: PCI INT A: no GSI
[  709.369577] wlp45s0: AP e0:cc:7a:98:7d:d4 changed bandwidth, new config is 2432.000 MHz, width 2 (2442.000/0 MHz)
[  718.496375] nvme nvme1: Device not ready; aborting reset, CSTS=0x1
[  718.496381] nvme nvme1: Removing after probe failure status: -19
[  739.020199] nvme nvme1: Device not ready; aborting reset, CSTS=0x1
[  739.020477] nvme1n1: detected capacity change from 2000409264 to 0

Теперь я попробовал это: echo 10000:e2:00.0 >/sys/bus/pci/drivers/nvme/bind

Когда я выполняю lspci, “исчезнувшее” устройство правильно перечислено (10000:e2:00.0 Non-Volatile memory controller: ADATA Technology Co., Ltd. Device 5766 (rev 01))

Но оно не отображается в lsblk, и я не знаю, как поступить дальше…

Вывод dmesg после повторного привязывания диска:

[14893.259570] nvme nvme2: pci function 10000:e2:00.0
[14893.259678] pcieport 10000:e0:1b.0: can't derive routing for PCI INT A
[14893.259685] nvme 10000:e2:00.0: PCI INT A: no GSI
[14913.760764] nvme nvme2: Device not ready; aborting reset, CSTS=0x1
[14913.760771] nvme nvme2: Removing after probe failure status: -19

В конечном итоге я получил новый модуль, вставил его в тот же слот (заменив старый), и все работает нормально.

Вывод: [весьма вероятно] неисправный NVMe-накопитель. Это случается, и я уверен, что это было то же самое в вашем случае.

Ответ или решение

Изоляция проблем с вводом/выводом на NVMe или аппаратном обеспечении может быть сложной задачей. В предоставленном описании проблемы наблюдается периодическое появление ошибок ввода/вывода на SSD Samsung 980 PRO, установленном в Beelink GTR6. После нескольких дней бесперебойной работы система становится нестабильной, начиная выдавать ошибки буфера ввода/вывода и показывать сигналы, будто SSD отсутствует.

Теория

Прежде всего, стоит понять, что проблемы с NVMe, такие как те, которые вы описали, могут быть связаны как с самим SSD, так и с остальной аппаратной частью, включая материнскую плату, BIOS, подключение, и даже корректность драйверов ОС. Кроме того, редкие аппаратные проблемы, возможно заводской дефект, также могут вызывать подобные симптомы.

NVMe SSD, как и Samsung 980 PRO, обладают встроенной системой мониторинга, которая может помочь выявить аппаратные неисправности, сообщая о критических предупреждениях, состоянии здоровья и иных атрибутах через SMART лог. Однако, как вы описали, SMART логи не указывают на какие-либо критические предупреждения или ошибки носителя. Это позволяет предположить, что проблемы могут быть связаны не с самим модулем SSD, а с чем-то другим в конфигурации.

Пример

В описанном вами случае применение FSCK выявило некоторые проблемы с управляющей файловой системой, которые, судя по всему, исправлялись без критического вмешательства. Однако сам факт их появления свидетельствует о возможных ошибках хранения или передачи данных. Также вы замечаете, что после перезагрузки и некоторых манипуляций аппарат периодически показывает kernel panic, что говорит об общих сбоях в системе.

Также примечательно сообщение другого пользователя с совместимыми проблемами на другой системе, предполагающее, что сбои на уровне драйвера или прошивки также могут вызывать нестабильность.

Применение

На основе рассмотренных данных и логов, можно порекомендовать следующие шаги для исключения различных компонентов проблемы:

  1. Проверка физического подключения и слота: Убедитесь, что SSD надежно подключен. Возможно, стоит попробовать установить его в другой слот (если доступен) или протестировать его на другом устройстве, что позволит определить, связано ли это с конкретным слотом или самим модулем SSD.

  2. Обновление прошивки SSD: Найдите на сайте Samsung возможные обновления прошивки для вашего SSD. Обновление прошивки может решить проблемы взаимодействия между SSD и материнской платой.

  3. Обновление BIOS и драйверов NVMe: Некоторые проблемы совместимости решаются обновлением BIOS материнской платы до последней версии. То же относится и к драйверам Linux для NVMe, которые можно обновить из официальных источников или сообществ.

  4. Тестирование под другой ОС или драйверами: Попробуйте использовать SSD с другой операционной системой или даже в другом устройстве (например, в Windows). Это поможет определить, связана ли проблема с драйверами или конфигурацией конкретной ОС.

  5. Диагностика возможных перегревов: Внимательно следите за температурой SSD. Хотя лог не указывает на превышение допустимых температур, важно исключить возможность перегрева вследствие продолжительной работы с высокими нагрузками.

  6. Замена SSD: Если вышеупомянутые шаги указывают на неисправность SSD, наиболее разумным шагом была бы замена устройства на более работоспособное. Исходя из опыта другого пользователя, замена модуля может полностью решить проблему.

  7. Обращение к производителю за консультацией: Программные сбои, фатальные ошибки и нестабильное поведение устройства могут требовать официальной поддержки производителя для проведения диагностики или замены оборудования.

Следуя данным рекомендациям, можно выделить и устранить источник проблем, улучшив стабильность и производительность системы. Это позволит убедиться, что устройство использует весь свой потенциал, а ваша конфигурация надежна и оптимизирована.

Оцените материал
Добавить комментарий

Капча загружается...