Диск переходит в RO

Компьютеру примерно год. Летом начались глюки с системным диском - переходит в режим read only.

Систематичности и влияния запущенного ПО не заметил. Иногда весь день может работать без сбоев, иногда раз в полчаса. При этом все зависает. То, что было запущено некоторое время работает и тоже виснет или вылетает. Запустить что-то новое невозможно.

Только один раз каким-то чудом смог переключиться первый TTY. Там ошибки про IO error nvme superblock write. И систем-д пишет, что не смог записать в лог.

Диск ADATA SX6000LNP 128 Гб. Разделен на boot и на корень. Свободно около 20 Гб.

Материнка MSI B450M PRO-VDH MAX. Процессор Ryzen 5 5600G, рамы 32 Гб. БП на 550, модель не вспомню.

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

SMART говорит все ок. Диск не греется. Память проверял мемтестом, все ок.

Что делать?
В журнале что то есть по ошибкам?
journalctl |grep -E "dma|error|errs|re-mounted"
ну и смарт покажите
sudo smartctl -A /dev/ваш диск
Вывод смарта:
=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        45 Celsius
Available Spare:                    99%
Available Spare Threshold:          32%
Percentage Used:                    21%
Data Units Read:                    6 304 322 [3,22 TB]
Data Units Written:                 6 442 680 [3,29 TB]
Host Read Commands:                 59 969 887
Host Write Commands:                68 613 438
Controller Busy Time:               0
Power Cycles:                       943
Power On Hours:                     1 852
Unsafe Shutdowns:                   208
Media and Data Integrity Errors:    0
Error Information Log Entries:      1 006
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0

journalctl |grep -E "dma|error|errs|re-mounted"
Это 20 минут перед предыдущим зависанием, повторные убрал
сен 27 18:12:43 home-pc plasmashell[2324]: [00007f5334006a60] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error

сен 27 18:12:43 home-pc plasmashell[2324]: [00007f5334006a60] glconv_vaapi_drm gl error: vaInitialize: unknown libva error

сен 27 18:14:06 home-pc plasmashell[2324]: [00007f5350000c90] main input error: ES_OUT_SET_(GROUP_)PCR  is called too late (pts_delay increased to 1000 ms)
сен 27 18:14:06 home-pc plasmashell[2324]: [00007f5354c14d80] main decoder error: Timestamp conversion failed for 174440501: no reference clock
сен 27 18:14:06 home-pc plasmashell[2324]: [00007f5354c14d80] main decoder error: Could not convert timestamp 0 for FFmpeg

сен 27 18:14:11 home-pc kwin_x11[729]: kwin_core: XCB error: 152 (BadDamage), sequence: 4445, resource id: 14761101, major code: 143 (DAMAGE), minor code: 3 (Subtract)
сен 27 18:14:13 home-pc plasmashell[2440]: [00007fb3d0006a60] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error
сен 27 18:14:13 home-pc plasmashell[2440]: [00007fb3d0006a60] glconv_vaapi_drm gl error: vaInitialize: unknown libva error

сен 27 18:23:05 home-pc plasmashell[2773]: [00007f252c000c90] main input error: ES_OUT_SET_(GROUP_)PCR  is called too late (pts_delay increased to 1000 ms)
сен 27 18:23:05 home-pc plasmashell[2773]: [00007f252c000c90] main input error: ES_OUT_SET_(GROUP_)PCR  is called too late (pts_delay increased to 2094 ms)
сен 27 18:23:05 home-pc plasmashell[2773]: [00007f2520c02fa0] main decoder error: buffer deadlock prevented

сен 27 18:32:51 home-pc kwin_x11[729]: kwin_core: XCB error: 152 (BadDamage), sequence: 63943, resource id: 14824866, major code: 143 (DAMAGE), minor code: 3 (Subtract)
Очень много ошибок FFmpeg. Работал yt-dlp, наверно из-за него.

Дальше ребут по кнопке.

После включения:
сен 27 18:48:15 home-pc kernel: pnp 00:04: [dma 0 disabled]
сен 27 18:48:15 home-pc kernel: pnp 00:05: [dma 0 disabled]
сен 27 18:48:15 home-pc kernel: [drm] add ip block number 7 <sdma_v4_0>
сен 27 18:48:15 home-pc kernel: amdgpu 0000:30:00.0: amdgpu: ring sdma0 uses VM inv eng 0 on hub 8
сен 27 18:48:15 home-pc kernel: EXT4-fs (nvme0n1p2): re-mounted 1b887a95-00ad-471f-b1aa-85edae14598e r/w. Quota mode: none.
сен 27 18:48:16 home-pc kernel: platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
сен 27 18:48:25 home-pc ksmserver[696]: Qt: Session management error: networkIdsList argument is NULL
сен 27 18:52:35 home-pc kwin_x11[697]: kwin_core: XCB error: 152 (BadDamage), sequence: 25247, resource id: 14682324, major code: 143 (DAMAGE), minor code: 3 (Subtract)
сен 27 19:29:21 home-pc pipewire-media-session[991]: ms.core: error id:44 seq:416 res:-16 (Device or resource busy): can't create node: Устройство или ресурс занято
сен 27 19:29:21 home-pc kwin_x11[697]: kwin_core: Parse error in tiles configuration for monitor "5b7a5ba4-43cc-5910-8e98-f358f9d54b43" : "недопустимое значение" Creating default setup
сен 27 19:30:57 home-pc plasmashell[4739]: /usr/bin/blender: error while loading shared libraries: libyaml-cpp.so.0.8: cannot open shared object file: No such file or directory

После перезапуска есть
EXT4-fs (nvme0n1p2): re-mounted 1b887a95-00ad-471f-b1aa-85edae14598e r/w. Quota mode: none.
nvme0n1p2 это корень системы

Сейчас аптйам ~три часа, работает без глюков
И еще вот такое есть. Это я сфоткал в первом терминале после зависания. В тексте могут быть ошибки, делал онлайн распознавание текста по фото
(82268 .6841881 Buffer 1/0 error on dev nvme0n1p2, logical block @, lost sync page write
(62268 .6858221] EXT4-fs (nvme0n1p2): 1/0 error while writing superblock

(82272 .6663641 systemd- journald[3281: Failed to write entry to /var/log/ journal/69409d4d6f 4b411081f a91cScaSabd4c/system. journal (21 items, 681 bytes) despite vacuuming, ignoring: Read-only file system Dropped 36 similar message(s))
(82278 .7@5558] EXT4-fs error (device nvme0n1p2): ext4_get_inode_loc:4498: inode #7348988: block 29368214: conm systemd-journal: unable to read itable block

(62278 .767584] Buffer 1/0 error on dev nvme0n1p2, logical block @, lost sync page write
(62278 .7083681] EXT4-fs (nvme0n1p2): 1/0 error while writing superblock

(82278 .7684181 EXT4-fs error (device nvme0n1p2): ext4_get_inode_loc:4498: inode #7348846: block 29360168: comm systemd-journal: unable to read itable block
(82278 .7186991 Buffer 1/0 error on dev nvme0n1p2 logical block @, lost sync page write

(82278 .711986] EXT4-fs (nvme0n1p2): 1/0 error while writing superblock
(82278 .7128321 EXT4-fs error (device nvme0n1p2): ext4_get_inode_loc:4498: inode #7340845: block 29360168: comm systemd-journal: unable to read itable block
abc
nvme
Для nvme дисков можно посмотреть лог утилитой из nvme-cli
nvme error-log /dev/nvme0
nvme smart-log -H /dev/nvme0
Глянуть лог журнала файловой системы на одних и тех же ли блоках ошибки
sudo debugfs -R 'logdump -S' /dev/nvme0n1p2 | more

Попробовать переставить диск вытащить поставить обратно,
можно поиграться с iommu
amd_iommu=off 
https://wiki.archlinux.org/title/Solid_state_drive/NVMe#Controller_failure_due_to_broken_suspend_support
Возможные причины
- сам SSD … маловероятно
- файловая система … тоже маловероятно, но проверить fsck желательно
- software problems, присущие NVMe - желательно поиграться с параметрами ядра

Начни с проверки fsck:
- загрусись с параметром break (при использовании grub: нажать e и добавить параметр break)
fsck -fn /dev/sdaX ……. n - проверка без исправления ошибок
- выход после проверки - exit

Если нормально, то начинай игратсья с параметрами ядра:
1. Отключить ASPM (иногда вызывает проблемы с совместимостью оборудования): pcie_aspm=off
2. Поигратся с APST
- или отключить: nvme_core.default_ps_max_latency_us=0
- или увеличить задержку, установив другие значения, например, 5500 ... 100000
Узнать, что стоит по дефолту: cat /sys/module/nvme_core/parameters/default_ps_max_latency_us
3. … и другое ...

PS - забыл отметить:
- если используешь suspend, то попробуй пока не использовать
- проверь связано ли это с повышенной нагрузкой на диск (с большим чтением/записью)
Ошибки не исчезают с опытом - они просто умнеют
nvme error-log /dev/nvme0 выдал несколько одинаковых блоков, везде successful
 Entry[ 0]
.................
error_count     : 0
sqid            : 0
cmdid           : 0
status_field    : 0(Successful Completion: The command completed without error)
phase_tag       : 0
parm_err_loc    : 0
lba             : 0
nsid            : 0
vs              : 0
trtype          : The transport type is not indicated or the error is not transport related.
csi             : 0
opcode          : 0
cs              : 0
trtype_spec_info: 0
log_page_version: 0
.................

nvme smart-log -H /dev/nvme0 тоже порядок, за исключением символов ���. Так должно быть?
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                        : 0
      Available Spare[0]             : 0
      Temp. Threshold[1]             : 0
      NVM subsystem Reliability[2]   : 0
      Read-only[3]                   : 0
      Volatile mem. backup failed[4] : 0
      Persistent Mem. RO[5]          : 0
temperature                             : 35 °C (308 K)
available_spare                         : 99%
available_spare_threshold               : 32%
percentage_used                         : 21%
endurance group critical warning summary: 0
Data Units Read                         : 63���08872 (3,23 TB)
Data Units Written                      : 64���43979 (3,30 TB)
host_read_commands                      : 600���10013
host_write_commands                     : 686���45021
controller_busy_time                    : 0
power_cycles                            : 944
power_on_hours                          : 1852
unsafe_shutdowns                        : 208
media_errors                            : 0
num_err_log_entries                     : 1007
Warning Temperature Time                : 0
Critical Composite Temperature Time     : 0
Thermal Management T1 Trans Count       : 0
Thermal Management T2 Trans Count       : 0
Thermal Management T1 Total Time        : 0
Thermal Management T2 Total Time        : 0

sudo debugfs -R 'logdump -S' /dev/nvme0n1p2 | more тут выдал длинную портянку, скопирую только начало, там одинаковые строки только с разным номером блока
debugfs 1.47.0 (5-Feb-2023)
Journal features:         journal_incompat_revoke journal_64bit journal_checksum_v3
Total journal size:       512M
Total journal blocks:     131072
Max transaction length:   131072
Fast commit length:       0
Journal sequence:         0x00054b1a
Journal start:            63961
Journal checksum type:    crc32c
Journal checksum:         0xe9cc2e35

Journal starts at block 63961, transaction 346906
Found expected sequence 346906, type 1 (descriptor block) at block 63961
Found expected sequence 346906, type 2 (commit block) at block 63966
Found expected sequence 346907, type 1 (descriptor block) at block 63967
Found expected sequence 346907, type 2 (commit block) at block 63970
Found expected sequence 346908, type 1 (descriptor block) at block 63971
Found expected sequence 346908, type 2 (commit block) at block 63974
Found expected sequence 346909, type 1 (descriptor block) at block 63975
Found expected sequence 346909, type 2 (commit block) at block 63980
...
...
Found expected sequence 347169, type 1 (descriptor block) at block 68331
Found expected sequence 347169, type 2 (commit block) at block 68335
No magic number at block 68336: end of journal.
vs220
Попробовать переставить диск вытащить поставить обратно
Просто отсоединить его от материнки? Сделал, понаблюдаю.
vs220
amd_iommu=off
Это пока не понял что. Почитаю вики.
fsck без ошибок. В конце вот это не понял что значит:
40272/30531584 files (19.0% non-contiguous), 113783864/122096384 blocks

vasek
Отключить ASPM Поигратся с APST
Это попробую, надо разобраться что куда писать

cat /sys/module/nvme_core/parameters/default_ps_max_latency_us
100000

suspend не использую. Повышенной нагрузки на диск тоже нет. Иногда виснет даже когда комп остается без дела без запущенных програм.

Добавлено: сейчас подумал насчет нагрузки на диск. У меня настроена синхронизация файлов на сервер некстклауда. Там много папок и файлов, возможно во время проверки измененных файлов идет большая нагрузка. Отключил на время, понаблюдаю
abc
В конце вот это не понял что значит:

40272/30531584 files (19.0% non-contiguous), 113783864/122096384 blocks
Это говорит о том, что 19% файловой системы содержит фрагментированные файлы + некорректные ссылки на данные (имеются файлы, которые указывают на несуществующие блоки - точнее, файлы были удалены или перемещены, а ссылки на них не были обновлены).
Ошибки не исчезают с опытом - они просто умнеют
abc
fsck без ошибок
Вообще то это и ожидалось.
NVMe практически знаю слабо, так как не использую .... но рекомендую поиграться с параметрами модуля nvme_core
Смотри вывод modinfo -p nvme_core и гугли что они означают ...
Ошибки не исчезают с опытом - они просто умнеют
Диск скорее всего в порядке, а вот ошибки I/O могут быть как с железными (плохой контакт, питание, мост) так и программными ошибками связаны

при проблемах с latency в ошибках обычно ...timeout

abc
amd_iommu=off
Это пока не понял что
прямой доступ к оборудованию для виртуалок, были баги с включенным (по умолчанию включен), amd_iommu=off в параметрах ядра выключает его для амд платформы
 
Зарегистрироваться или войдите чтобы оставить сообщение.