예외가 복구된 후에도 btrfs를 계속 사용할 수 있습니까?

예외가 복구된 후에도 btrfs를 계속 사용할 수 있습니까?

USB HDD에 손상된(마운트할 수 없는) btrfs 파티션이 있습니다. 이 문제에는 여기에 설명된 것과 동일한 오류 메시지가 있습니다. https://bbs.archlinux.org/viewtopic.php?id=182505

dmesg의 출력은 다음과 같습니다

[   54.371041] BTRFS: device label BackupMobile devid 1 transid 1420 /dev/dm-3
[   54.384764] BTRFS info (device dm-3): disk space caching is enabled
[   54.384767] BTRFS: has skinny extents
[   54.425187] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[   54.431990] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[   54.432025] BTRFS: failed to read tree root on dm-3
[   54.449061] BTRFS: open_ctree failed
[  199.271168] BTRFS info (device dm-3): enabling auto recovery
[  199.271174] BTRFS info (device dm-3): disabling disk space caching
[  199.271178] BTRFS: has skinny extents
[  199.278451] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[  199.279109] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[  199.279119] BTRFS: failed to read tree root on dm-3
[  199.279762] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[  199.280509] BTRFS error (device dm-3): bad tree block start 15489378549331356982 932187635712
[  199.280518] BTRFS: failed to read tree root on dm-3
[  208.294771] BTRFS: checking UUID tree

스마트 테스트가 성공적으로 통과되었습니다.

마침내 다음을 사용하여 설치 문제를 해결했습니다.btrfs-zero 로그. 그런 다음 볼륨을 다시 마운트할 수 있습니다.

하루가 지난 후에도 동일한 문제가 발생했습니다(설치할 수 없으며 유사한 오류 메시지가 표시되고 이제 로그에 스택 추적까지 표시됨).

이번에는 복구 옵션으로 파티션을 마운트하면 문제가 "해결"된 것 같습니다.-o 복원. 이제 데이터에 다시 액세스할 수 있고 심지어 디스크에 쓸 수도 있습니다(작성/저장된 데이터의 무결성을 확인하지는 않았지만). Linux는 불평하지 않으며 이제 dmesg 로그는 다음과 같습니다.

[32382.410416] BTRFS info (device dm-6): disk space caching is enabled
[32382.410420] BTRFS: has skinny extents

(nautilus/GNOME을 통해) 문제 없이 드라이브를 여러 번 마운트할 수 있습니다.

이 파티션을 저장하고 계속 사용하시겠습니까? 스냅샷을 유지하고 싶습니다. 그렇지 않으면 다시 포맷했을 것입니다. 여전히 스마트 테스트를 통과했지만 이것이 하드웨어 오류가 아니며 btrfs가 책임이 있다고 어떻게 확신할 수 있습니까?

현재 상태의 플러그인 및 USB HDD 마운트의 전체 dmesg 로그:

[32376.048700] usb 3-4: new high-speed USB device number 9 using xhci_hcd
[32376.177756] usb 3-4: New USB device found, idVendor=152d, idProduct=0539
[32376.177770] usb 3-4: New USB device strings: Mfr=10, Product=11, SerialNumber=5
[32376.177773] usb 3-4: Product: USB3.0 to SATA Bridge
[32376.177775] usb 3-4: Manufacturer: JMicron
[32376.177777] usb 3-4: SerialNumber: XXXXXXXXXXXX
[32376.178348] usb-storage 3-4:1.0: USB Mass Storage device detected
[32376.178434] usb-storage 3-4:1.0: Quirks match for vid 152d pid 0539: 4000000
[32376.178462] scsi host16: usb-storage 3-4:1.0
[32377.688528] scsi 16:0:0:0: Direct-Access     ST2000LM 015-2E8174       0000 PQ: 0 ANSI: 2 CCS
[32377.689259] sd 16:0:0:0: Attached scsi generic sg2 type 0
[32377.699007] sd 16:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
[32377.699386] sd 16:0:0:0: [sdc] Write Protect is off
[32377.699390] sd 16:0:0:0: [sdc] Mode Sense: 28 00 00 00
[32377.699661] sd 16:0:0:0: [sdc] No Caching mode page found
[32377.699664] sd 16:0:0:0: [sdc] Assuming drive cache: write through
[32377.717199]  sdc: sdc1
[32377.729514] sd 16:0:0:0: [sdc] Attached SCSI disk
[32382.410416] BTRFS info (device dm-6): disk space caching is enabled
[32382.410420] BTRFS: has skinny extents

편집하다:

Shiki가 지적했듯이 btrfs 세계에서 btrfs 스크럽인 것처럼 보이는 "표면 스캔"을 수행했습니다. btrfs 정리 로그에는 72688 read_errors 및 72688 un Correctable_errors가 표시됩니다. 좋지 않은 것 같습니다. 다른 btrfs 드라이브를 확인했는데 해당 드라이브의 클린 로그에 오류가 전혀 포함되어 있지 않았습니다.

전체 로그:

scrub status:1
dc484331-2fb1-49a7-8960-38d0b603bd9f:1
|data_extents_scrubbed:85282
|tree_extents_scrubbed:130262
|data_bytes_scrubbed:5386072064
|tree_bytes_scrubbed:2134212608
|read_errors:72688
|csum_errors:0
|verify_errors:0
|no_csum:0
|csum_discards:0
|super_errors:0
|malloc_errors:0
|uncorrectable_errors:72688
|corrected_errors:0
|last_physical:7553941504
|t_start:1502107169
|t_resumed:0
|duration:62
|canceled:1
|finished:1

관련 정보