저는 Linux 초보자인데 드라이브가 주기적으로 사라지는 문제가 있어 lsblk
어떻게 진행해야 할지 모르겠습니다. 드라이브는 240GB 외장 USB SSD입니다.
설치 드라이브 작동 방식
삽입한 후 fdisk -l
올바르게 표시되는 것을 볼 수 있습니다.
그런 다음 올바르게 설치하고 다음을 사용하여 볼 수 있습니다 lsblk
.
또한 다음과 같이 나타납니다 df
.
드라이브에 장애가 발생한 경우
며칠 에 한번씩 lsblk
,,,, 에서 드라이브가 완전히 사라지는 것 같습니다 df
. fdisk -l
이 시점에서 드라이브를 분리했다가 다시 연결/재설치했는데 다시 작동했습니다(그러나 며칠 후 다시 사라졌습니다). 드라이브가 작동하는 동안 badblocks
및 를 실행해 보았지만 smartctl
둘 다 드라이브에 문제가 있는 것 같지 않았습니다.
무슨 일이 일어나고 있는지 이해할 수 있는 방법을 제안할 수 있는 사람이 있나요?
편집하다
기기는 INTEL NUC i5-3427U 8GB RAM 64GB M-SATA SSD이며 Kingston sa400s37240g 하드 드라이브와 쌍을 이룹니다.
편집 2
다음은 드라이브가 자체적으로 연결이 끊어진 것처럼 보일 때 Journalctl의 일부 출력입니다.
root@pve:~# journalctl --since "02:00"
-- Journal begins at Fri 2023-01-20 17:07:18 GMT, ends at Thu 2023-11-16 14:07:51 GMT. --
Nov 16 02:00:01 pve CRON[357262]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Nov 16 02:00:01 pve CRON[357263]: (root) CMD (/usr/bin/touch /mnt/SSD_240GB/.keepalivefile)
Nov 16 02:00:01 pve CRON[357262]: pam_unix(cron:session): session closed for user root
Nov 16 02:10:47 pve kernel: sd 7:0:0:0: [sdc] tag#5 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
Nov 16 02:10:47 pve kernel: sd 7:0:0:0: [sdc] tag#5 CDB: Write(10) 2a 00 0c 81 02 27 00 00 08 00
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#4 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#4 CDB: Synchronize Cache(10) 35 00 00 00 00 00 00 00 00 00
Nov 16 02:11:00 pve kernel: scsi host7: uas_eh_device_reset_handler start
Nov 16 02:11:00 pve kernel: usb 2-1.6: reset high-speed USB device number 8 using ehci-pci
Nov 16 02:11:00 pve kernel: usb 2-1.6: device firmware changed
Nov 16 02:11:00 pve kernel: scsi host7: uas_eh_device_reset_handler FAILED err -19
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: Device offlined - not ready after error recovery
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: Device offlined - not ready after error recovery
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#4 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=60s
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#4 CDB: Synchronize Cache(10) 35 00 00 00 00 00 00 00 00 00
Nov 16 02:11:00 pve kernel: blk_update_request: I/O error, dev sdc, sector 231415655 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 0
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#5 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=44s
Nov 16 02:11:00 pve kernel: sd 7:0:0:0: [sdc] tag#5 CDB: Write(10) 2a 00 0c 81 02 27 00 00 08 00
Nov 16 02:11:00 pve kernel: blk_update_request: I/O error, dev sdc, sector 209781287 op 0x1:(WRITE) flags 0x103000 phys_seg 1 prio class 0
Nov 16 02:11:00 pve kernel: Buffer I/O error on dev sdc1, logical block 26214469, lost async page write
Nov 16 02:11:00 pve kernel: Aborting journal on device sdc1-8.
그리고 syslog 파일의 일부 출력은 다음과 같습니다.
root@pve:~# cat /var/log/syslog | grep -iEe 'Nov 16 02:1'
Nov 16 02:11:00 pve kernel: [1065272.885143] scsi host7: uas_eh_device_reset_handler start
Nov 16 02:11:00 pve kernel: [1065272.969137] usb 2-1.6: reset high-speed USB device number 8 using ehci-pci
Nov 16 02:11:00 pve systemd[1]: Unmounting /mnt/SSD_240GB...
Nov 16 02:11:00 pve systemd[1]: mnt-SSD_240GB.mount: Succeeded.
Nov 16 02:11:00 pve systemd[1]: Unmounted /mnt/SSD_240GB.
Nov 16 02:11:00 pve pvestatd[942]: status update time (12.435 seconds)
Nov 16 02:11:00 pve kernel: [1065273.425229] sd 7:0:0:0: [sdc] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
Nov 16 02:11:00 pve kernel: [1065273.505120] usb 2-1.6: new high-speed USB device number 9 using ehci-pci
Nov 16 02:11:00 pve kernel: [1065273.664305] usb 2-1.6: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
Nov 16 02:11:00 pve kernel: [1065273.664314] usb 2-1.6: New USB device strings: Mfr=2, Product=3, SerialNumber=1
Nov 16 02:11:00 pve kernel: [1065273.664318] usb 2-1.6: Product: Best USB Device
Nov 16 02:11:00 pve kernel: [1065273.664320] usb 2-1.6: Manufacturer: ULT-Best
Nov 16 02:11:00 pve kernel: [1065273.664322] usb 2-1.6: SerialNumber: 042011210DC5
Nov 16 02:11:00 pve kernel: [1065273.664857] usb-storage 2-1.6:1.0: USB Mass Storage device detected
Nov 16 02:11:00 pve kernel: [1065273.665318] usb-storage 2-1.6:1.0: Quirks match for vid 174c pid 55aa: 400000
Nov 16 02:11:00 pve kernel: [1065273.665371] scsi host6: usb-storage 2-1.6:1.0
Nov 16 02:11:05 pve kernel: [1065278.371285] EXT4-fs error: 13 callbacks suppressed
Nov 16 02:11:05 pve kernel: [1065278.371295] EXT4-fs error (device sdc1): __ext4_find_entry:1663: inode #6553668: comm influxd: reading directory lblock 0
운영 체제 및 커널 버전은 다음과 같습니다.
운영 체제: Debian GNU/Linux 11(bullseye)
커널: 리눅스 5.15.83-1-pve
답변1
문제는 디스크가 아니라 디스크 케이블 어댑터에 있습니다.
174C 코드는 이를 몇 가지 문제가 있는 커널 드라이버인 ASMedia로 식별합니다.
어떤 분들은 좋은 결과를 얻으셨는데요무인 항공 시스템 비활성화해당 장치의 경우. 불행히도 다른 사람들은 어댑터를 완전히 교체해야 했습니다.
문제는 훨씬 더 자주 발생하기 때문에 아마도 인터럽트 관리/타이밍 중 하나일 것입니다.라즈베리 파이에서.
루트로 다음 명령을 실행한 후 어떤 일이 발생하는지 시도해 볼 수 있습니다.
echo "174c:55aa:u" | tee /sys/module/usb_storage/parameters/quirks
...하지만 dmesg 출력을 보면 장치가 속인 것 같습니다.
Nov 16 02:11:00 pve kernel: [1065273.665318] usb-storage 2-1.6:1.0: Quirks match for vid 174c pid 55aa: 400000
다른 분이 댓글을 달았네요ASMedia는 때때로 기본 하드웨어를 변경합니다., 너는 필요할지도 모른다연합 국가이상한.
놀랄 일도 아니다
문제는 단점이 저장되는 위치에 있습니다. 이는 modprobe 파일이나 부트로더에 있을 수 있습니다.
우리는 이 특이한 현상이 무엇을 찾고 있는지 알고 있으므로 루트로서
grep -ri 174c:55aa /etc /boot
vid/pid 쌍은 관련된 모든 곳에서 찾아야 합니다. modprobe.d 파일(아마도 /etc/modprobe.d/usbstoragequirks.conf
또는 ) 에 있는 경우 /etc/modprobe.d/usbstorage.conf
해당 파일을 열고 이상한 점을 주석 처리한 다음 재부팅합니다(모듈 언로드/다시 로드이면 충분하지만아직). grub 구성인 경우 다음과 유사합니다.
GRUB_CMDLINE_LINUX="usb_storage.quirks=174c:55aa:u"
그냥 편집하고(안전을 위해 이전 줄에 주석을 추가한 다음) grub을 다시 빌드하고 재부팅하세요. 이후,만약에이 장치는 다른 하드웨어 버전이고 그 안에 있는 이상한 점은 작동하지 않지만 일반 커널 코드는 작동하므로 계속 사용해도 좋습니다. 며칠 동안 기다려 제대로 작동하는지 확인하고, 추가 조치를 위해 드라이브에서 캐싱을 비활성화해 보세요. 먼저 두 개의 큰 파일과 여러 개의 아주 작은 파일을 읽고 쓰고 MD5ing해 보세요. 이렇게 하면 숨어 있을 수 있는 대부분의 버그가 제거됩니다.
답변2
편집 : 새로운 답변
귀하가 게시한 시스템 로그는 다음과 같은 단서를 제공할 수 있습니다.systemd
이것 좀 봐주세요답변문제가 비슷한지 확인하세요. 첫째, USB 디스크 마운트가 시스템에 의해 처리됩니까, 아니면 수동으로 마운트됩니까?
또한, 여기 또 다른 것이 있습니다답변비슷한 질문에 대해서는.
Linux 배포판 및 버전에 대해 자세히 알고 싶을 수도 있습니다.
오래된 답변은 작동하지 않습니다
외장 드라이브가 절전 모드로 들어간 것 같습니다.
이것기사USB 장치 전원 설정을 제어하는 방법을 보여줍니다.
또 다른 옵션은 cron을 사용하여 작은 "keepalive" 스크립트를 실행하는 것입니다.
0 1 * * * root /usr/bin/touch /mnt/SSD-240GB/.keepalivefile
시스템 crontab에 넣고 cron을 다시 시작하십시오. 디스크가 계속 절전 모드로 전환되는 경우 간격(현재는 하루에 한 번 오전 1시)과 명령을 조정할 수 있습니다.