Недавно я попытался проверить время замедления моего жесткого диска с помощью следующей команды:
sudo hdparm -I /dev/sdb | grep level
и получил ошибку:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Привод считывает и записывает данные просто отлично и монтируется при запуске. Я просто не могу выполнить эту команду на этом диске без ошибок
Что это значит и как я могу решить проблему?
похож на Ваш контроллер диска, не поддерживает тот метод запроса, не, весь usb sata чипсеты создается равный. Вы не говорите, какую модель диска или контроллера Вы используете так его твердое для предложения большего совета здесь.
Вы могли протестировать это путем включения другого контроллера usb или использования другого диска с тем же контроллером или лучше все еще прямой через SATA.
диски на 3 ТБ могут быть слишком большими для некоторых usb2 контроллеров эры, таким образом, я рекомендовал бы получить уважаемый мост usb3 sata вместо этого, это будет намного быстрее также.
Дополнительная информация для систем/устройств, для которых вышеупомянутое и/или тонкие настройки modprobe не имеют никакого эффекта (например, Raspberry Pi 3):
причуды должны быть добавлены к параметрам начальной загрузки. Для RPi 3/Raspbian, параметры начальной загрузки находятся в файле /boot/cmdline.txt
.
[other command line parameters...] usb_storage.quirks=YOUR_VENDOR_ID:YOUR_DEVICE_ID:QUIRK_FLAGS
В моем случае, я должен был очистить флаг причуд для своего устройства, таким образом, я добавил это к /boot/cmdline.txt
:
usb_storage.quirks=0bc2:a0a4:
Это решило мою проблему, надо надеяться, она помогает кому-то еще
Эта проблема обычно вызывается реализацией моста USB-SATA и должна быть видима только с соединенными дисковыми полками USB.
В случае внешнего диска USB, система должна говорить с диском SATA в корпусе с помощью UAS (USB Приложенный SCSI) протокол по SAT (SCSI / Перевод ATA) для отправки команд ATA по SCSI по USB. Причиной это настолько сложно, являются должные исторические причины.
Где-нибудь в цепочечном USB в †’ UAS в †’ SCSI в †’ SAT в †’ SATA некоторая часть аппаратных средств имеет неправильную реализацию. Обычно все это сделано единственным микрочипом в корпусе, названном мостом USB-SATA, и некоторые известные варианты являются ASM1051, ASM1053 и ASM1153. Из них ASM1051, как известно, является багги, и UAS нужно избежать с любыми аппаратными средствами, содержащими эту микросхему. ASM1053 и ASM1153 могут или не могут работать в зависимости от фактического встроенного микропрограммного обеспечения в микросхеме (производителю разрешают настроить встроенное микропрограммное обеспечение, ссылочная реализация действительно работает правильно). Например, много корпусов, сделанных Seagate, используют ASM1153 с пользовательским встроенным микропрограммным обеспечением и имеют проблемы с некоторыми командами ATA, даже если та же микросхема действительно работает правильно со ссылочным встроенным микропрограммным обеспечением. (Например, некоторые корпуса работой Seagate пока ОС никогда не отправляют команд на 12 или 16 битов. Linux usb_storage
поддерживает причуду t
с этой целью.) Конечный пользователь обычно не может заменять встроенное микропрограммное обеспечение поэтому, если у Вас есть плохая микросхема/встроенное микропрограммное обеспечение, Ваша единственная опция состоит в том, чтобы жаловаться производителю. В случае Seagate они "решают" проблему путем указывания, что они официально поддерживают Windows и OS X только. Seagate является в наше время официально рабочей с сообществом Linux поэтому, возможно, их продукты будут на самом деле работать в будущем.
единственный реальный способ выяснить микросхему моста состоит в том, чтобы демонтировать корпус и осмотреть маркировки в фактических микрочипах.
Обновление: "Резервное копирование Seagate Плюс Концентратор" корпуса имеет правильно рабочий мост USB-SATA, и UAS работает правильно (Обратите внимание, что это - другой продукт от "Резервного копирования Seagate Плюс"!) Однако из-за плохой истории корпусами Seagate, ядро Linux применяет причуду t
по умолчанию, который препятствует тому, чтобы этот корпус использовал все функции SATA. Можно активировать полную поддержку SATA включая опции S.M.A.R.T. со следующей командой:
echo "0bc2:ab38:" > /sys/module/usb_storage/parameters/quirks
Примечание запаздывающее двоеточие и ничто после этого - это отключает все встроенные причуды для выбранного vendor:product. Проверьте своего поставщика и идентификаторы продукта с lsusb
в случае необходимости.
У меня была аналогичная проблема с моими тонкими дисками Seagate Backup Slim и черными SCSI-дисками WD. И я также использовал hdparm
. У меня сработала утилита sdparm
.
Установить с помощью
sudo apt install sdparm
Получить все параметры / настройки с помощью
sudo sdparm -l -a /dev/sdX
Здесь -a
получает все поля вывода, а -l
получает длинный вывод, то есть объяснение полей вывода. / dev / sdX
- рассматриваемый диск (аналогично / dev / sda
).
Получите таймер замедления и флаг STANDBY
с помощью:
sudo sdparm -l --get SCT /dev/sdX
sudo sdparm -l --get STANDBY /dev/sdX
Время замедления SCT
здесь указано в миллисекундах, а флаг STANDBY
- таймер останова. / off (1/0) переключатель
Если ваш вывод похож на:
# STANDBY 0 [cha: y, def: 1, sav: 1]
# SCT 4294967286 [cha: y, def:18000, sav:18000]
Это означает, что ваше устройство не настроено на замедление вращения.
Если вы хотите, вы можете изменить эти настройки для текущего сеанса с помощью:
sudo sdparm -l --set SCT=6000 /dev/sdX
sudo sdparm -l --set STANDBY=1 /dev/sdX
Эти настройки будут потеряны при перезагрузке.
Изменить навсегда с помощью:
sudo sdparm -l --save --set SCT=6000 /dev/sdX
sudo sdparm -l --save --set STANDBY=1 /dev/sdX
Здесь я выбрал 6 секунд (6000 миллисекунд), но вы можете выбрать в соответствии с вашими требованиями.
Если по какой-то причине вы не можете сохранить свои настройки, вы можете поместить их в свой /etc/rc.local
, чтобы установить их при загрузке:
sdparm -l --set SCT=6000 --set STANDBY=1 /dev/sdX
Надеюсь, это поможет.