Безопасное извлечение USB-устройств. Почему и зачем?

Когда вышла из строя USB-флешка, как минимум в половине случаев это связано с тем, что она не была извлечена из компьютера корректно. Почему так происходит? Давайте разберемся.

USB и Plug-and-Play

Один из неоспоримых плюсов USB — легкость его монтирования в операционную систему. Принцип Plug-and-Play (вставил и работай) реализован давно, и для разных устройств, но все же наиболее полно он оказался открыт для USB-устройств. Подключая к компьютеру USB-флешку, смартфон, камеру, мышку или любое другое устройство с этим интерфейсом, мы получаем это устройство работающим практически незамедлительно после подключения. Поддержка устройств USB давно стала общемировым стандартом практически для всех операционных систем.

Современный внешний твердотельный накопитель на базе шины USB 3.1 (тип коннектора USB-C)

Не многие помнят, как это было в Windows 95, Windows 98 и других операционных системах того времени. Для того, чтобы подключить USB-флешку, требовалось сначала установить ее драйвер: или с дискеты, или с CD-ROM. Только после установки драйвера флешка начинала распознаваться в системе и с ней можно было работать. Соответственно, для того, чтобы перенести данные с одного компьютера на другой на этой самой флешке, требовалось нести с собой и диск с драйверами — в противном случае перенос был невозможен.

Скорости USB. Быстрее, выше, сильнее!

Надо ли говорить о том, что скорость работы первых устройств USB, ограниченная интерфейсом USB первого поколения, была весьма и весьма скромной?

Настоящий прорыв наступил с разработкой стандарта USB 2.0 в 2000 году и последовавшим за ним выходом в 2001 году Windows XP. Эта операционная система уже широко поддерживала огромный спектр USB-устройств, для их использования уже не требовалось установки каких-то особых драйверов (лишь в редких случаях, для устройств, для которых Windows XP не имел встроенного драйвера: некоторые сканеры, принтеры и т.п.; устройства хранения информации на базе интерфейса USB требовали установки особого драйвера крайне редко). Стандарт USB 2.0 обеспечивал неплохую скорость, и шина из Useless Serial Bus (бесполезная последовательная шина; так USB в шутку называли на заре его возникновения, поскольку устройств с его поддержкой было очень мало) революционными темпами превратилась в Universal Serial Bus (универсальная последовательная шина).

Однако скоростей USB 2.0 очень быстро перестало хватать, и разработчики стандарта предложили USB 3.0 — стандарт, скорости которого были максимально приближены к SATA. За короткое время были разработаны три стандарта: 3.0, 3.1 и 3.2; в итоге производители решили, что для третьего поколения USB стандартов как-то многовато, и объединили их все под крылом USB 3.2.

В настоящее время устройства с интерфейсом 3.2 позволяют, например, копировать огромные объемы информации за короткое время. При соблюдении некоторых условий реальная скорость работы внешнего твердотельного диска на шине USB 3.2 будет больше, чем скорость работы внутреннего жесткого диска на интерфейсе SATA.

Безопасное извлечение USB-устройства. Как это работает?

Ну а теперь можно поговорить и о том, о чем, собственно, написана эта статья. Что такое безопасное извлечение USB-устройства?

Впервые эта функция появилась в операционной системе Windows XP, и была реализована на уровне драйверов системы. Конкретно за безопасное извлечение устройств в Windows отвечает драйвер hotplug.dll.

Меню безопасного извлечения устройств в трее Windows 8.1

Для того, чтобы безопасно извлечь USB-устройство, нужно перевести указатель мышки в область системного трея, где выбрать соответствующий значок (см. скриншот выше). После этого нажать на него, подождать, пока система оповестит о возможности безопасного извлечения, и уже после этого извлекать устройство.

При активации безопасного извлечения устройства происходят следующие акции:

  1. Если в очереди записи/чтения на устройство имелись задачи, им ставится наивысший приоритет и производится их выполнение и финализация.
  2. Производится очистка системных областей буферной памяти, имеющих отношение к отключаемому устройству.
  3. Закрываются окна, имеющие отношение к отключаемому устройству (работает не во всех версиях операционных систем).
  4. Производится отмена любых операций внутренней активности устройства с их завершением.
  5. Отключается питание с порта USB, где будет извлекаться устройство, или этот порт переводится в режим ожидания.

Почему так важно безопасно извлекать устройство?

Давайте теперь представим, как будет работать USB-устройство, если мы не используем безопасное извлечение и выдергиваем это устройство, что называется, на живую.

Начнем с того, что устройство вполне может не содержать тех данных, которые вы на него отправили. Я уже показывал то, как работает отложенная запись Windows (ниже привожу это видео еще раз).

Другими словами, то, что вы отправили на устройство какие-то файлы, при небезопасном извлечении устройства вовсе не гарантирует того, что эти файлы будут на вашей флешке.

Это первая опасность.

Вторая опасность заключается в том, что при небезопасном извлечении устройства оно может выйти из строя. Небольшой перекос при извлечении, неравномерность движения в разъеме, слишком сильный нажим и т.п. — могут привести к тому, что произойдет электрическое повреждение устройства (а при небезопасном извлечении оно в разъеме находится под током). После этого устройство остается или ремонтировать, или (в случае невозможности ремонта) восстанавливать более радикальными методами, связанными с выпаиванием NAND-микросхем.

Третья опасность — возможный выход из строя микропрограммы устройства. Любой USB-накопитель, кроме микросхем, в которых хранятся данные (NAND-микросхемы), имеет контроллер. Этим контроллером и управляется устройство. Для функционирования устройства имеется микропрограмма, одной из важных частей которой является трянслятор.

Транслятор — это часть микропрограммы, которая соединяет физиескую адресацию пространства внутри флешки с логической адресацией пространства для операционной системы. Грубо говоря, физические адреса секторов переводятся в LBA, понятные операционной системе. При этом физически первый сектор для Windows во флешке может быть где-то в середине или в конце (совпадение физической и логической адресаций нынче скорее исключение, чем правило).

Так вот, во включенном состоянии флешка довольно часто совершает операции по оптимизации своего адресного пространства, производя соответствующие изменения в микропрограмме. Если в момент начала записи каких-то критических данных флешку выдернуть из компьютера, то эти данные записаны не будут. При следующем включении микропрограмма начнет искать эти данные, не сможет их найти и, как следствие, остановит работу. Устройство попадет в состояние «ошибка». Вывод из ошибки USB-устройств возможен далеко не всегда, для восстановления данных могут потребоваться довольно дорогостоящие процедуры.

Ну и еще одна опасность (четвертая) — это возможный выход из строя внешних жестких дисков, подключаемых через USB. Внешние жесткие диски получают питание через USB, и, соответственно, при внезапном обесточивании (то есть небезопасном извлечении) могут не успеть запарковать головки. При этом головки останутся на поверхности, упадут на нее, что неизбежно приведет к повреждению и головок, и поверхностей — а значит, к потере данных. Извлечение данных с USB-дисков с заклинившими на поверхности головками часто является весьма нетривиальной задачей.

Пятая опасность — выход из строя самого разъема USB. Это возможно по тем же причинам, которые характерны для второй опасности.

Как обычно. Пара практических советов в конце =)

Первый и самый главный совет — не забывайте о безопасном извлечении устройств. Даже если вы очень спешите — поверьте, лишние 20 — 30 секунд, потраченные на эту несложную операцию, могут уберечь вас от значительно больших затрат времени, к которым может привести потеря данных.

Второй совет. Извлекая устройство, старайтесь не перекашивать его, ведь после активации протокола безопасного извлечения часто USB-порт находится в режиме ожидания, и при перекосе может случиться так, что флешка потеряет контакт с портом и потом восстановит его; для системы это будет сигналом того, что в порт попало новое устройство, и система начнет процедуру его определения и использования. А вы при этом устройство уже извлекаете. Системные или аппаратные ошибки при этом весьма вероятны.



Мы принимаем к оплате | We accept payments


Мы стажировались и работали в странах | We worked or practiced in following countries