Я знаю, чтоeject
Эту команду можно использовать для извлечения практически любого подключенного аппаратного компонента, но можно ли ее использовать для извлечения USB-накопителей?
Можно ли извлекать USB-накопители и внешние жесткие диски с помощьюeject
команда?
решение1
Да. Например:
sudo eject /dev/sda
Другие ответы, указывающие на необходимость механического выталкивающего оборудования, неверны.
Размонтирование — это не то же самое, что извлечение.
- Если вы отмонтируете том, вы сможете немедленно смонтировать его обратно, поскольку базовое устройство по-прежнему доступно.В некоторых ситуациях это может представлять угрозу безопасности.При извлечении устройства перезагрузить его можно только путем сброса подсистемы USB (например, перезагрузки).
- Извлекая устройство, вы фактически блокируете любой дальнейший доступ к устройству. Только сброс подсистемы USB (например, перезагрузка) перезагрузит устройство. В противном случае вам придется физически отключить USB-устройство и подключить его снова, чтобы снова получить к нему доступ.
- Перед извлечением эта команда отмонтирует все тома на устройстве, которые были смонтированы.
- Если тома используются, эта команда завершится ошибкой, как и команда unmount, за исключением того, что некоторые тома могут быть размонтированы, а некоторые могут остаться смонтированными.
решение2
НаЛинукс, eject
будет работать, но не сможет полностью «завершить работу» в отношении USBвращающийсядиски.
Итак, сначала вы eject /dev/sdb
(или umount
всё).
Изатем,после правильного демонтажа, лучший способ отключить внешний жесткий диск USB:
udisksctl power-off -b /dev/sdb
или
udisks --detach /dev/sdb
Обычно это приводит к плавному замедлению вращения диска.
Примечание: udisksctl
может быть более «мейнстримовым» инструментом по сравнению с udisks
(первый уже установлен на моем Debian, последний нет и былкритиковалидля ненужного вращения вверх/вниз).
Некоторые подробности
udisksctl
Theв документации говорится(о возможности отключения питания):
Обеспечивает безопасное извлечение и выключение накопителя. Со стороны ОС это включает в себя обеспечение того, что ни один процесс не использует накопитель, а затем запрос на то, чтобы буферы и кэши в полете были зафиксированы в стабильном хранилище. Точные шаги для выключения накопителя зависят от самого накопителя и используемого соединения. Для накопителей, подключенных через USB, эффект заключается в том, что устройство USB будет деконфигурировано с последующим отключением порта концентратора восходящего потока, к которому оно подключено.
Обратите внимание, что поскольку некоторые физические устройства содержат несколько дисков (например, USB-устройства чтения флэш-карт 4-в-1), отключение одного диска может повлиять на другие диски. Таким образом, не существует большого количества гарантий, связанных с выполнением этого действия. Обычно эффект заключается в том, что диск исчезает, как будто его отключили.
udisks (устарело?)
Именно,текущая реализация(по состоянию на 2014 год):
- отправляет команду SCSI sync-cache,
- отправляет команду остановки SCSI,
- отвязывает драйвер ядра usb-storage,
- приостанавливает работу USB-устройства (питание),
- логически отключает/удаляет его из USB-порта.
Этот процесс близок к предлагаемой ручной процедуре.здесь. Первоначальный ответ былна askubuntu.
решение3
Ручные действия по размонтированию диска /dev/sdb (требуется sudo):
echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete
Это полностью отключит устройство и отсоединит его от системы. Оно не будет обнаружено снова, пока не будет отключено и снова подключено.
решение4
Если вы внимательно прочиталивыбросить(1)На странице руководства вы можете увидеть, что существует 4 метода извлечения:
-r This option specifies that the drive should be ejected using a CDROM
eject command.
-s This option specifies that the drive should be ejected using SCSI
commands.
-f This option specifies that the drive should be ejected using a remov‐
able floppy disk eject command.
-q This option specifies that the drive should be ejected using a tape
drive offline command.
Когда вы звонитевыталкиватьна HDD/SCSI выдается ioctl(fd, SG_IO, (void *)&io_hdr);
команда (копировать из eject.c
источников).
Это эквивалентно безопасному извлечению устройства в MS Windows или MaxOSX.
Для некоторых устройств это имеет особое значение. Например, Kindle 3 послевыталкиватькоманда переведена в режим зарядки и позволяет просматривать веб-страницы на устройстве, хотя раньше экран был заблокирован.
Другие утилиты делают то же самое, например так
scsi-spin --force --down /dev/sda