I/O 쓰기 스트레스 테스트 충돌이 반드시 SSD 하드웨어 오류를 의미합니까?

I/O 쓰기 스트레스 테스트 충돌이 반드시 SSD 하드웨어 오류를 의미합니까?

개요

지난 2년 정도 동안 SSD를 읽기 전용으로 만드는 파일 시스템 오류로 인해 데스크탑 컴퓨터가 간헐적으로 충돌했습니다. 아무 일도 일어나지 않고 일주일 이상 실행될 수 있으며 특정 날짜에 두 번 이상 충돌이 발생할 수 있습니다. 백업 및 복구 중 쓰기 작업이 많거나 시작 직후에 자주 발생하는 것으로 보이지만 다른 경우에도 발생할 수 있습니다. 간헐적인 충돌 문제를 해결했다고 생각한 적도 있었지만, 얼마 지나지 않아 또 그런 일이 일어났습니다.

편집: 이러한 종료로 인해 UEFI 부팅 항목이 손상되어 부팅하는 데 전원을 여러 번 껐다 켜야 하는 경우가 많습니다.

또한 파일을 USB 드라이브에 올바르게 복사하는 데 문제가 있었지만 $ dd아래 설명된 대로 RAM 구성을 수정한 후 문제가 해결된 것 같습니다.

이는 다양한 배포판(모두 Debian 기반)과 여러 파일 시스템(ext4 및 btrfs)의 여러 설치에서 발생합니다.

내 데이터는 외부 드라이브에 백업되고 가장 중요한 부분은 동기화를 통해 다른 장치에 저장됩니다. SSD는 언제든지 고장날 수 있다는 것을 알고 있습니다.


사양 및 구성

CPU: AMD 라이젠 9 3900x

SSD: 1TB 삼성 970 EVO 플러스

RAM: Crucial Ballistix 3200MHz(16GB x 2) BL2K16G32C16U4B

마더보드: ASRock B550 팬텀 ITX

현재 릴리스: KDE Neon


내가 시도한 것들

몇 달 전에 memtester(리눅스에서 실행되고 독립적으로 부팅되지 않음)를 사용하여 RAM을 테스트했으며 아마도 1년 전에는 더 광범위하게 테스트했을 것입니다. 이 RAM으로 수행한 테스트에서는 메모리 오류가 발생하지 않았습니다.

나는 내 RAM에 1.35V의 기본 공장 오버클럭 전압이 필요하다는 것을 발견했습니다. BIOS에서 이 문제를 해결했습니다. 이는 USB 드라이브 및 SD 카드에 대한 잘못된 쓰기를 해결하는 데 도움이 되는 것으로 보이지만 간헐적인 충돌을 해결하지는 않습니다. 이전에 다른 설정을 읽어보고 조정한 적이 있는데 현재는 모든 것이 공장 기본값으로 설정되어 있는 것 같습니다.

약 1년 전에 UEFI 펌웨어를 업데이트했습니다. UEFI 펌웨어를 최신 버전으로 업데이트했습니다.

SSD의 펌웨어 업그레이드를 시도했지만 해당 버전에서 지원하는 최신 버전인 것 같습니다.

위에서 언급한 대로 시작 매개변수에 대한 ASPM 설정을 조정했습니다.이것비슷한 증상으로 문제가 발생합니다.

smartmontools -> smartctl을 사용하여 SSD를 확인했습니다. 아무것도 평범하지 않은 것 같았습니다.

    === START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        56 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    19,717,312 [10.0 TB]
Data Units Written:                 39,276,405 [20.1 TB]
Host Read Commands:                 117,854,095
Host Write Commands:                1,047,333,000
Controller Busy Time:               1,195
Power Cycles:                       702
Power On Hours:                     1,261
Unsafe Shutdowns:                   30
Media and Data Integrity Errors:    0
Error Information Log Entries:      3,591
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               56 Celsius
Temperature Sensor 2:               55 Celsius

journalctl | egrep 'kernel.*nvme'편집: 이는 종료 및 재부팅을 트리거한 직후에 dmesg에 출력되는 관련 라인입니다 $ stress-ng --hdd $(nproc).

Jul 03 23:38:51 $HOSTNAME kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-5.13.0-51-generic root=UUID=e624d68e-7ffe-4bdb-98e3-a349ac9cc3e0 ro quiet splash nvme_core.default_ps_max_latency_us=0 pcie_aspm=off vt.handoff=7
Jul 03 23:38:51 $HOSTNAME kernel: Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.13.0-51-generic root=UUID=e624d68e-7ffe-4bdb-98e3-a349ac9cc3e0 ro quiet splash nvme_core.default_ps_max_latency_us=0 pcie_aspm=off vt.handoff=7
Jul 03 23:38:51 $HOSTNAME kernel: nvme nvme0: pci function 0000:01:00.0
Jul 03 23:38:51 $HOSTNAME kernel: nvme nvme0: missing or invalid SUBNQN field.
Jul 03 23:38:51 $HOSTNAME kernel: nvme nvme0: Shutdown timeout set to 8 seconds
Jul 03 23:38:51 $HOSTNAME kernel: nvme nvme0: 32/0/0 default/read/poll queues
Jul 03 23:38:51 $HOSTNAME kernel:  nvme0n1: p1 p2 p3 p4 p5
Jul 03 23:38:51 $HOSTNAME kernel: EXT4-fs (nvme0n1p3): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
Jul 03 23:38:51 $HOSTNAME kernel: EXT4-fs (nvme0n1p3): re-mounted. Opts: (null). Quota mode: none.
Jul 03 23:38:51 $HOSTNAME kernel: Adding 67108860k swap on /dev/nvme0n1p2.  Priority:-2 extents:1 across:67108860k SSFS
Jul 03 23:38:51 $HOSTNAME kernel: EXT4-fs (nvme0n1p4): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
Jul 03 23:38:52 $HOSTNAME kernel: EXT4-fs (nvme0n1p5): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.

나의 발견

마침내 충돌이 발생하는 원인을 발견했습니다.

$ stress-ng --hdd $(nproc)

$ iotop -o디스크가 읽기 전용 상태로 강제 전환되어 10초 이내에 모든 I/O 활동이 중지되고 systemd-journald 또는 기타 디스크에 쓸 수 없는 상태로 인해 20초 이내에 종료되는 것을 보여줍니다.

~에 따르면수동스트레스-ng의 경우 임시 파일을 쓰고, 읽고, 삭제합니다. 다른원천write() 및 unlink() 호출을 사용한다고 주장합니다.

다음과 같은 다른 옵션

$ stress-ng --io $(nproc)
$ stress-ng --cpu $(nproc)
$ stress-ng --vm $(nproc)
$ stress-ng --iomix $(nproc)

아무런 문제를 일으키지 않는 것 같습니다.


질문

내 컴퓨터를 지속적으로 충돌시키는 스트레스 테스트 $ stress-ng --hdd $(nproc)의 고유한 기능은 SSD 하드웨어가 원인이라는 것을 의미합니까?

SSD는 치명적인 오류로 알려져 있다는 것을 읽었으므로 문제가 실제로 SSD에 있는지 확실하지 않습니다. 저는 문제의 본질을 더 잘 이해하는 데 매우 관심이 있으므로 관련 문서에 대한 링크나 해당 주제에 대해 제가 제공할 수 있는 지혜로운 말을 주시면 정말 감사하겠습니다.

관련 정보