LINUX.ORG.RU

Внешний жестак Transcend отваливается

 


0

2

Есть у меня сабж, Transcend TS640GSJ25M2, начал отваливаться после отсоединения или даже простой перезагрузки. Подозреваю, что микрухе не нравится резкое отключение питания. Но как объяснить жестаку, что пора отсоединяться? Отмонтированный он всё равно светит своей синей лампочкой и жужжит. Но даже когда через ≈15 мин бездействия лампочка гаснет и шпиндель останавливается, у меня сомнения, что головка уходит спать – потому что первый раз, когда он выкинул такой фортель и не определился биосом, помогло простое поворачивание его слегка набок под углом 30-45°.

Может, надо какие-то ещё команды послать после отмонтирования, чтоб он спать пошёл? Я копал в сторону usbstorage в ядре, но там про это нет. Если его менять, то на что? Что делать, чтобы не угробить внешний жестак отсоединениями?

Deleted

Последнее исправление: CYB3R (всего исправлений: 1)

потому что первый раз, когда он выкинул такой фортель и не определился биосом, помогло простое поворачивание его слегка набок под углом 30-45°.

Есть подозрение, что его начинке уже кранты, раз он не уходит спать.

alexnorton
()

Вытащить и подключить как обычный диск и прогнать смарты и fsck
Еще все плохо, но работает, то так и оставить

anonymous_sama ★★★★★
()

микрухе не нравится резкое отключение питания

cрочно в номер

anonymous
()

есть так называемое безопасное отключение, которое отрубает питание. В убунтах работает из коробки, в гентах не настраивал.

daemonpnz ★★★★★
()
Ответ на: комментарий от anonymous_sama

Вытащить и подключить как обычный диск и

Так я рискую лишить себя гарантии.

прогнать смарты и fsck

Смарт сделаю, а fsck зачем? ФС-ки то в норме. Барьеры, все дела.

Deleted
()

Может, надо какие-то ещё команды послать после отмонтирования, чтоб он спать пошёл?

udisks --detach /dev/sdb
i-rinat ★★★★★
()
Ответ на: комментарий от daemonpnz

Я ничего не нагуглил, кроме вот такого правила для udev

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*", ATTRS{removable}=="1", GROUP="plugdev", MODE="0660"
Я посмотрел, что сейчас подобного есть
# grep -nrHi remova /lib64/udev/rules.d/*
/lib64/udev/rules.d/42-usb-hid-pm.rules:40:ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="removable", GOTO="usb_hid_pm_end"
/lib64/udev/rules.d/42-usb-hid-pm.rules:41:ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="unknown", GOTO="usb_hid_pm_end"        
/lib64/udev/rules.d/42-usb-hid-pm.rules:43:ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", ATTRS{removable}=="fixed", TEST=="../power/control", ATTR{../power/control}="auto"
/lib64/udev/rules.d/60-persistent-storage.rules:36:# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures)
/lib64/udev/rules.d/60-persistent-storage.rules:37:KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode"
/lib64/udev/rules.d/60-persistent-storage.rules:61:# skip unpartitioned removable media devices from drivers which do not send "change" events
/lib64/udev/rules.d/60-persistent-storage.rules:62:ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
/lib64/udev/rules.d/69-dm-lvm-metad.rules:11:# Also, notify LVMetaD about any relevant block device removal.
/lib64/udev/rules.d/80-udisks.rules:72:# never access non-cdrom removable ide devices, the drivers are causing event loops on open()
/lib64/udev/rules.d/80-udisks.rules:73:KERNEL=="hd*[!0-9]", ATTR{removable}=="1", SUBSYSTEMS=="ide", ATTRS{media}=="disk|floppy", GOTO="probe_parttable_end"
/lib64/udev/rules.d/80-udisks.rules:74:KERNEL=="hd*[0-9]", ATTR{removable}=="1", GOTO="probe_parttable_end"
/lib64/udev/rules.d/80-udisks.rules:108:KERNEL=="sd*[!0-9]", ATTR{removable}=="0", ENV{ID_BUS}=="usb", ENV{DEVTYPE}=="disk", IMPORT{program}="udisks-probe-ata-smart $tempnode"
/lib64/udev/rules.d/80-udisks.rules:111:KERNEL=="sd*[!0-9]", ATTR{removable}=="0", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", IMPORT{program}="udisks-probe-ata-smart $tempnode"
/lib64/udev/rules.d/80-udisks.rules:114:KERNEL=="sd*[!0-9]", ATTR{removable}=="0", ENV{ID_BUS}=="scsi", ENV{DEVTYPE}=="disk", ENV{ID_VENDOR}=="ATA", IMPORT{program}="udisks-probe-ata-smart $tempnode"
Я не умею составлять правила, поэтому не знаю, что предложенная строчка вообще делает, однако предполагаю, что просто фиксит группу и права. С ними у меня всё ок.

Deleted
()
Ответ на: комментарий от i-rinat

Ага, плюсую, Первая же ссылка в яндексе yandex.ru/msearch?lr=49&text=safely+remove+usb+storage+linux&search_top=1

daemonpnz ★★★★★
()
Ответ на: комментарий от i-rinat

Во, спасибо. Хотя диод продолжает гореть, слышно, как шпиндель останавливается и щелчок паркующейся головки. Осталось только добавить правило в udev, чтобы при отмонтировании пинался скрипт, проверяющий, что, если устройство на usb, отключаемое и если отмонтировалась последняя партиция, детачить устройство. Только как поймать umount? Тут вот используется ACTION==«remove»
https://soosck.wordpress.com/2011/01/19/improved-udev-rule-arch-linux/ Но это тот ивент, что посылается, когда устройства уже нет в системе, получается замкнутый круг. В ACTION по идее можно указывать ещё и состояния, но они нигде не описаны, а manpages к udevd вообще отсутствуют в моём eudev-1_beta2-r2.

Deleted
()

Оставляю инструкцию для собратьев по несчастью

Если диск не определяется после отключения питания, его нужно отключить и повернуть набок. Для этого отсоединить кабели и взять диск в проекции «вид спереди» (ребристая планка и гнездо usb смотрят на нас, кнопка с диодом смотрят наверх) и приподнять левую сторону на угол 45°, зафиксировать и подать питание. Когда определится, положить обратно плашмя.

Отключать диск после успешного выполнения udisks --detach /dev/sdX следует с разъёмов типа А, поочерёдно. Если отсоединять с разъёма mini-B, то он не определится при следующем подсоединении.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.