外部硬盘不断断电

外部硬盘不断断电

是否可以防止外部硬盘断电?我整晚开着硬盘进行大量下载,但当我早上检查时,下载失败并显示消息unable to access the drive

我可以完美地读取/写入驱动器,小型下载没有问题,但需要更多时间的下载似乎由于某些输入/输出错误而失败。

我对驱动器进行了badblocks扫描,没有发现错误。


无法启动 SMART 自检:

在此处输入图片描述


断开然后重新连接外部 USB 驱动器。dmesg 结果如下:

[  289.881673] usb 1-1.1: USB disconnect, device number 5
[  305.182474] usb 1-1.1: new high-speed USB device number 6 using ehci-pci
[  305.275807] usb 1-1.1: New USB device found, idVendor=152d, idProduct=2338
[  305.275812] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[  305.275825] usb 1-1.1: Product: USB to ATA/ATAPI bridge
[  305.275828] usb 1-1.1: Manufacturer: JMicron
[  305.275830] usb 1-1.1: SerialNumber: 000001D91CA8
[  305.276594] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[  305.276914] scsi host5: usb-storage 1-1.1:1.0
[  306.275373] scsi 5:0:0:0: Direct-Access     WDC WD25 00KS-00MJB0           PQ: 0 ANSI: 5
[  306.275787] sd 5:0:0:0: Attached scsi generic sg3 type 0
[  306.276317] sd 5:0:0:0: [sdc] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[  306.277429] sd 5:0:0:0: [sdc] Write Protect is off
[  306.277435] sd 5:0:0:0: [sdc] Mode Sense: 28 00 00 00
[  306.278429] sd 5:0:0:0: [sdc] No Caching mode page found
[  306.278433] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[  306.288959]  sdc: sdc1 sdc2
[  306.292063] sd 5:0:0:0: [sdc] Attached SCSI disk

驱动器正在使用时输出“blkid”。我在将 500MB 的文件复制到驱动器时​​截取了该屏幕截图。

在此处输入图片描述


以下输出lsblk

userone@userone:~$ lsblk
NAME                    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                       8:0    0 232.9G  0 disk  
├─sda1                    8:1    0   487M  0 part  /boot
├─sda2                    8:2    0     1K  0 part  
└─sda5                    8:5    0  59.2G  0 part  
  └─sda5_crypt          252:0    0  59.2G  0 crypt 
    ├─ubuntu--vg-root   252:1    0  43.2G  0 lvm   /
    └─ubuntu--vg-swap_1 252:2    0  15.9G  0 lvm   [SWAP]
sdb                       8:16   0 232.9G  0 disk  
├─sdb1                    8:17   0   500M  0 part  
├─sdb2                    8:18   0   232G  0 part  
└─sdb3                    8:19   0   470M  0 part  
sdc                       8:32   0 232.9G  0 disk  
├─sdc1                    8:33   0 232.4G  0 part  /media/userone/New Volume
└─sdc2                    8:34   0   470M  0 part  
sr0                      11:0    1  1024M  0 rom   
loop0                     7:0    0  86.6M  1 loop  /snap/core/4571
loop1                     7:1    0  90.3M  1 loop  /snap/coolreader3/1
loop2                     7:2    0  86.7M  1 loop  /snap/simplescreenrecorder/1
loop3                     7:3    0 236.5M  1 loop  /snap/pycharm-community/64
loop4                     7:4    0  86.9M  1 loop  /snap/core/4830
loop5                     7:5    0    85M  1 loop  /snap/simplescreenrecorder-mardy/4
loop6                     7:6    0  86.6M  1 loop  /snap/core/4650
userone@userone:~$ 

答案1

使用 获取设备名称blkid或检查dmesg连接的设备。然后使用 关闭电源管理hdparm

# get device name
$ sudo blkid
/dev/sda1: UUID="..." UUID_SUB="..." TYPE="somefs" PARTUUID="..."
/dev/sdb1: UUID="..." UUID_SUB="..." TYPE="someotherfs" PARTUUID="..."

$ sudo dmesg
...
[  305.276914] scsi host5: usb-storage 1-1.1:1.0
[  306.275373] scsi 5:0:0:0: Direct-Access     WDC WD25 00KS-00MJB0           PQ: 0 ANSI: 5
[  306.275787] sd 5:0:0:0: Attached scsi generic sg3 type 0
[  306.276317] sd 5:0:0:0: [sdc] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[  306.277429] sd 5:0:0:0: [sdc] Write Protect is off
...

从命令输出中可以看到,你的 USB 磁盘已注册为/dev/sdc.因此禁用此设备的电源管理。

# disable power management
$ sudo hdparm -B 255 /dev/sdc

hdparm ArchWiki更多细节。

更新:添加sudo到命令,因为需要超级用户权限。

答案2

不仅在下载大量文件时,而且在将大文件从 HDD 复制到外部 HDD 时也存在一个近五年前的错误:从 USB 复制文件或将文件复制到 USB 时,Ubuntu 速度变慢并挂起

许多用户发布的解决方案是检查您的写回缓存:

$ cat /proc/vmstat | egrep "dirty|writeback"
nr_dirty 15
nr_writeback 0
nr_writeback_temp 0
nr_dirty_threshold 261131
nr_dirty_background_threshold 130406

接受的答案(有 66 票赞成)如下:stackexchange.com - 为什么当我将文件复制到 U 盘时我的电脑会冻结?

建议使用:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

可接受的答案是使用间接数学为脏背景字节设置 16 MiB,为脏字节设置 48 MiB。

不过,从第一个链接(错误报告)来看,评论 #83 建议将脏字节设置为更激进的 200 MB。要使设置永久生效,请编辑/etc/sysctl.conf并添加以下行:

vm.dirty_bytes = 200000000

然后运行systctl -p或者重新启动。

第一个链接中还有许多其他建议,如果这个常见的解决方案不起作用,您可能需要尝试其他建议。

顺便提一句肮脏的并不意味着任何邪恶。它意味着数据保存在 RAM 中等待写入磁盘。因此,在下载过程中,信息保存在 RAM 中,而不是写入外部硬盘。不活动可能是它关机的原因。

另外,正如我在评论中提到的那样,blkidUbuntu 18.04 没有透露任何内容,但lsblk透露了包括外部驱动器在内的所有内容。

答案3

另一个想法:如果 USB 设备的供应商不支持禁用电源管理,你可以用 cronjob 来让它保持活动状态。

为 root 用户创建一个 cronjob,每分钟创建一个文件,同步文件系统,然后将其删除。

# Edit the crontab as root user (it will open the crontab with your favorite editor)
$ sudo crontab -e

# add the following line, save and close the editor
* * * * * touch /media/userone/New\ Volume/keepalive; sync; rm -f /media/userone/New\ Volume/keepalive

这应该可以让 USB 设备保持运行

答案4

对我来说,前两个答案的组合是有效的。我每分钟在 cronjob 中执行“/sbin/hdparm -B 255 /dev/sdc”。

# Edit the crontab as root user (it will open the crontab with your favorite editor)
$ sudo crontab -e

# add the following line, save and close the editor
* * * * * /sbin/hdparm -B 255 /dev/sdc >/dev/null 2>&1

相关内容