不奇怪的

不奇怪的

我是一名 Linux 初学者,遇到了驱动器lsblk定期消失的问题,并且不知道如何继续。该驱动器是 240GB 外部 USB SSD。

安装驱动器工作原理

插入后,我可以看到它fdisk -l正确显示:

在此输入图像描述

然后我可以正确安装它并使用以下命令查看它lsblk

在此输入图像描述

它也出现df

在此输入图像描述

当驱动器出现故障时

每隔几天,驱动力似乎就会从lsblk、、df和完全消失fdisk -l。此时,我拔下并重新连接/重新安装驱动器,它再次工作(但几天后再次消失)。当驱动器工作时,我尝试运行badblockssmartctl,两者似乎都没有表明驱动器有任何问题:

在此输入图像描述

在此输入图像描述

任何人都可以建议一种方法来了解发生了什么事吗?


编辑

该机器为INTEL NUC i5-3427U 8GB RAM 64GB M-SATA SSD,搭配金士顿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(靶心)

内核:Linux 5.15.83-1-pve

答案1

您的问题不在于磁盘,而在于磁盘电缆适配器。

174C 代码将其标识为 ASMedia,该内核驱动程序曾出现过一些问题。

有些人已经取得了不错的成绩禁用无人机系统对于那些设备。不幸的是,其他人不得不完全更换适配器。

该问题可能是中断管理/时序之一,因为它发生的频率要高得多在 Raspberry PI 上

您可以尝试以 root 身份发出以下命令后会发生什么...

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 文件或引导加载程序中。

我们确实知道这个怪癖在寻找什么,所以,作为 root,

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 并重新启动。在那之后,如果该单元是不同的硬件版本,其中的怪癖不起作用,但普通的内核代码可以,您应该已准备就绪。等待几天以确保其正常工作,为了增加措施,请禁用驱动器上的缓存,首先,尝试读取、写入和 MD5 两个大文件和大量非常小的文件。这应该可以消除大部分可能潜伏在那里的错误。

答案2

编辑:新答案

您发布的系统日志可能会给我们提供线索:systemd

请看这个回答并检查您的问题是否相似。首先,您的 USB 磁盘挂载是由 systemd 处理还是手动挂载?

此外,这里还有另一个回答对于类似的问题。

您可能还想详细了解您的 Linux 发行版和版本。


旧答案,不起作用

听起来外部驱动器进入了省电模式。

文章显示如何控制 USB 设备电源设置。

另一种选择是让一个小的“keepalive”脚本与 cron 一起运行:

0 1  * * *  root  /usr/bin/touch /mnt/SSD-240GB/.keepalivefile

将其放入系统 crontab 并重新启动 cron。如果磁盘仍然坚持进入睡眠状态,您可以调整间隔(现在每天凌晨 1 点一次)和命令。

相关内容