web-dev-qa-db-ja.com

外付けハードドライブの電源が切れ続ける

外付けハードドライブの電源が切れるのを防ぐことはできますか?大規模なダウンロードのために一晩ドライブをつけたままにしましたが、午前中にチェックすると、ダウンロードが失敗し、unable to access the driveというメッセージが表示されました。

ドライブの読み書きは完全にできます。小さなダウンロードでも問題ありませんが、時間がかかるダウンロードは、I/Oエラーのために失敗するようです。

ドライブでbadblocksスキャンを実行しましたが、エラーは見つかりませんでした。


SMARTセルフテストを開始できません:

enter image description here


外付け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相当のファイルをドライブにコピーしながら、そのスクリーンショットを撮りました。

enter image description here


以下の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:~$ 
2
oshirowanen

大規模なダウンロードだけでなく、HDDから外部HDDに大きなファイルをコピーする場合にも、5年近く前にバグがあります: Ubuntuが遅くなり、USBから/にファイルをコピーしているときにハングします

多くのユーザーが投稿したソリューションは、ライトバックキャッシュを確認することです。

$ 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-ファイルをペンドライブにコピーしているときにPCがフリーズするのはなぜですか?

使用することをお勧めします:

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を実行するか、再起動します。

最初のリンクには他にも多くの提案がありますが、この一般的な解決策が機能しない場合は、他の提案を試す必要があります。

ところでdirtyは悪意のあることを意味するものではありません。これは、ディスクへの書き込みを待機しているRAMに保持されているデータを意味します。したがって、ダウンロードの実行中は、情報はRAMに保持され、外部ハードドライブには書き込まれません。非アクティブなために電源が切れている可能性があります。

また、コメントで述べたように、blkidはUbuntu 18.04では何も明らかにしませんが、lsblkは外部ドライブを含むすべてを明らかにします。

3

接続されているデバイスの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をコマンドに追加します。

4
Simon Sudler

私には、前の2つの答えの組み合わせがうまくいきました。 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
0
pintergabor

別のアイデア:USBデバイスのベンダー電源管理の無効化をサポートしていないの場合、cronjobでそれを維持できます。

ルートユーザー用の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デバイスが稼働し続けるはずです。

0
Simon Sudler