Можно ли предотвратить отключение внешнего жесткого диска? Я оставил диск включенным на ночь для большой загрузки, но когда я проверял его утром, загрузка не удалась с сообщением 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» во время использования привода. Я сделал этот снимок экрана, копируя 500 МБ файлов на диск.
Вывод 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:~$
Не только с большими загрузками, но также и с копированием больших файлов от жесткого диска до внешнего жесткого диска ошибке почти пять лет: 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 - Почему мой ПК замораживается, в то время как я копирую файл в pendrive?
предлагает использовать:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes
Принятый ответ использует косвенную математику для установки 16 мебибайт для грязных фоновых байтов и 48 мебибайт для грязных байтов.
Из первой ссылки (отчет об ошибках), хотя, комментарий № 83 рекомендует более агрессивное значение 200 МБ для грязных байтов. Устанавливать настройки постоянное редактирование /etc/sysctl.conf
и добавьте эту строку:
vm.dirty_bytes = 200000000
Затем выполненный systctl -p
или перезагрузка.
Существует много других предложений в первой ссылке, и Вам, возможно, придется попробовать другие, если это общее решение не работает.
Грязный BTW не означает ничего низкого. Это означает данные, сохраненные в RAM, ожидающей быть записанными в диск. Таким образом, в то время как Ваша загрузка работает, информация содержится в RAM и не пишется в Ваш внешний жесткий диск. Неактивность могла быть то, почему она выключается.
Также, поскольку я упомянул в комментариях blkid
ничего не показывает в Ubuntu 18.04, но lsblk
показывает все включая внешние диски.
Получите имя устройства с помощью 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
к командам, поскольку требуются привилегии суперпользователя.
Просто другая идея: если производитель USB-устройства не поддерживает отключение управления питанием , вы можете сохранить его с помощью cronjob.
Создайте cronjob для пользователя root, который создает файл каждую минуту, синхронизирует файловую систему и впоследствии удаляет его.
# 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-устройства
Для меня сочетание предыдущих двух ответов сработало. Я выполнял "/ sbin / hdparm -B 255 / dev / sdc" в 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
* * * * * /sbin/hdparm -B 255 /dev/sdc >/dev/null 2>&1