Началось все с того, что коллега увидела, как я выдергиваю флешку из ноутбука сразу после копирования, и посмотрела на меня так, будто я при ней вытащила вилку из розетки за провод. Следующие двадцать минут мы спорили про значок в трее, и к концу спора выяснилось, что ни одна из нас толком не знает, что происходит, когда на него нажимаешь. Она нажимает, потому что так учили еще в школьном компьютерном классе, я не нажимаю, потому что у меня за все эти годы ни разу ничего не сломалось, и аргументы у нас обеих, честно говоря, были уровня «а вот у моей бабушки».

Флешек у меня в ящике дофига, половину из них не жалко, так что я решила разобраться, что именно я все это время пропускала, и заодно выяснить, на какой из трех своих систем я рисковала больше всего.

Откуда вообще взялась кнопка

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

Windows решает это политикой, которая настраивается для каждого устройства отдельно. Если зайти в свойства флешки, открыть вкладку «Оборудование», потом свойства самого устройства и вкладку «Политика», там будут два варианта: «Быстрое удаление» и «Оптимальная производительность». Первый отключает кэширование записи, и система отправляет данные на флешку сразу. Второй включает кэширование, и тогда без безопасного извлечения можно легко остаться с половиной файла.

Фишка в том, что начиная с Windows 10 версии 1809 (осень 2018 года) Microsoft сделала быстрое удаление политикой по умолчанию для внешних накопителей и отдельно написала об этом в документации. Что стояло по умолчанию раньше, зависело от версии и типа устройства, и тут я запуталась в старых форумах, так что утверждать ничего не буду. На моем рабочем ноуте, где я в этих настройках никогда ничего не трогала, на всех трех флешках, которые я туда воткнула, стоит «Быстрое удаление (по умолчанию)».

Получается, что в Windows, когда окно копирования закрылось, данные действительно уже ушли на флешку. На этом месте я уже собиралась написать коллеге победное сообщение, но полезла в файловую систему и передумала.

Грязный бит

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

Сам по себе флаг безобиден и только сообщает системе, что том закрыли неаккуратно. Портятся данные в другом месте, в самой файловой таблице. Таблица FAT и записи каталогов обновляются отдельными операциями, и если питание пропало между записью данных и записью метаданных, на флешке остается файл нулевой длины или потерянные кластеры, которые chkdsk потом складывает в папку FOUND.000 файлами с именами вида FILE0000.CHK. С быстрым удалением окно, в которое можно так попасть, маленькое, но пока идет копирование, оно открыто.

Я проверила это самым простым способом: копировала на флешку папку с отпускными фотографиями, 1,2 ГБ в 340 файлах, и выдергивала ее посередине копирования, всего десять раз. Флешка пережила все десять, но каждый раз файл, который копировался в момент выдергивания, оказывался обрезанным или нулевой длины, а в трех случаях из десяти chkdsk еще и нашел потерянные кластеры и сложил их в FOUND.000. Если же выдергивать флешку через минуту после окончания копирования, Windows предлагала проверку в девяти случаях из десяти, и проверка ни разу ничего не нашла.

Пингвин никуда не торопится

А теперь я беру ноутбук с Linux и 16 ГБ памяти, ту же флешку и образ дистрибутива на 2 ГБ.

$ time cp distro.iso /media/me/FLASH/

real    0m2,310s                 подозрительно быстро для USB 2.0
$ grep Dirty /proc/meminfo
Dirty:           1948312 kB      вот и мой образ, лежит в оперативке
$ time sync

real    3m48,617s                вот сколько он на самом деле писался

Linux плевать хотел на то, что носитель съемный. Любая запись идет через страничный кэш, cp завершается в момент, когда данные легли в память, и файловый менеджер радостно рисует «готово». Дальше ядро сбрасывает грязные страницы на носитель в фоне: поток сброса просыпается раз в vm.dirty_writeback_centisecs (по умолчанию 500, то есть раз в 5 секунд) и пишет все, что провисело в памяти дольше vm.dirty_expire_centisecs (по умолчанию 3000, то есть 30 секунд), а если грязных данных накопилось слишком много относительно объема памяти, начинает писать раньше.

Дешевая флешка на USB 2.0 пишет у меня около 9 МБ/с (так показал dd с oflag=direct), и два гигабайта она переваривала почти четыре минуты. Все это время прогресс-бар давно закрыт, файл виден в папке и даже показывает правильный размер, а если выдернуть флешку в этот момент, на ней останется ровно то, что ядро успело дописать. Сколько это будет, вам никто не скажет. Сколько людей закрыли окно копирования, выдернули флешку и понесли в копицентр файл, от которого на флешке была половина? И сколько из них потом ругали копицентр?

Насколько я помню, udisks, который монтирует флешки в большинстве десктопных окружений, монтирует vfat с опцией flush, и драйвер из-за нее старается сбрасывать данные пораньше. Судя по тому, что я вижу в Dirty, спасает это не сильно. Зато в Linux кнопка извлечения в файловом менеджере делает ровно то, что обещает: umount ждет, пока все будет записано, а GNOME еще и показывает уведомление с просьбой не отключать устройство до окончания записи. Так что на Linux эта кнопка НУЖНА, и я с опозданием на десять лет это признаю.

Мак пишет, даже когда вы только посмотрели

macOS в этом смысле ближе к Linux, запись она тоже кэширует и, если выдернуть флешку без извлечения, показывает уведомление о том, что диск был извлечен неправильно. У мака есть еще одна особенность, которую я долго не замечала. Стоит вставить флешку в мак и просто открыть ее в Finder, на ней появляются скрытые папки .fseventsd и .Spotlight-V100 (журнал событий файловой системы и индекс Spotlight), после удаления файла добавляется .Trashes, а на FAT и exFAT рядом с каждым скопированным файлом ложится его тень с приставкой «._», где мак хранит метаданные. Выходит, что мак пишет на флешку, даже если вы с нее только читали.

Windows, кстати, тоже так умеет, и папка System Volume Information с файлами IndexerVolumeGuid и WPSettings.dat появляется даже на флешках, на которые никто ничего не копировал. Аргумент «я же с нее только читала» поэтому работает хуже, чем кажется, хотя эти служебные записи маленькие и попасть выдергиванием точно в них надо еще постараться.

Совы не то, чем кажутся

Допустим, система все сбросила, том размонтирован, грязный бит снят. Тут мне уже самой стало интересно, что происходит внутри самой флешки, и я полезла туда просто из любопытства.

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

Насколько часто это случается и насколько хорошо конкретный контроллер переживает внезапное отключение, хз, потому что производители дешевых флешек защиту от потери питания не документируют, а конденсаторы, которые ради этого ставят в серверные SSD, во флешку за три копейки явно никто не положил. Насколько я смогла выяснить, при безопасном извлечении Windows просит сбросить кэш и само устройство (флешки общаются с компьютером урезанным SCSI поверх USB Mass Storage, и для этого там есть команда SYNCHRONIZE CACHE), но что контроллер после этой команды делает со своей фоновой уборкой, знает только его прошивка. Моя личная статистика по убитым ушедшим на покой флешкам такая: из примерно двух десятков, которые прошли через мои руки, умерли три, причем у одной просто отломился разъем, вторая после пары лет ежедневной работы перешла в режим только для чтения (так многие контроллеры сообщают, что память изношена), а третья однажды утром стала определяться с объемом 0 байт, и связать хоть одну из этих смертей именно с выдергиванием я честно не могу.

Что на самом деле делает значок в трее

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

В Windows безопасное извлечение действительно превратилось в ритуал, из которого ушла большая часть смысла, но одна полезная примета в нем осталась: если система отказывается отдавать флешку, значит, кто-то на нее еще смотрит, и дергать ее в этот момент как раз не стоит. На Linux и маке ритуал по-прежнему делает настоящую работу, и пропускать его там значит полагаться на то, что ядро успело.

Коллеге я, кстати, результаты так и не показала. Флешки из Windows-ноутбука я выдергиваю по-прежнему, а на Linux перед этим набираю sync и терпеливо жду, пока он вернет управление, и со стороны это, подозреваю, выглядит еще ритуальнее, чем ее щелчок по значку в трее.

Комментарии (134)


  1. Kovurr
    27.09.2026 05:25

    Битые файлы это еще полбеды. Прибегают юзеры с круглыми глазами, когда файловая система RAW и винда предлагает флешку отформатировать. "А у меня же там вся работа, вааа!". После чего файлы можно вытащить только специальными программами, и то без 100% гарантии. А все потому что человеку лень значок в трее нажать.


    1. LeraKholod
      27.09.2026 05:25

      И даже после восстановления они в 9 случаях из 10 продолжают делать ровно то же самое)


    1. SargeT
      27.09.2026 05:25

      Я один раз в жизни столкнулся с RAW вместо 500 Гб HDD, и очень огорчившись стал искать способы не "вытащить файлы", а восстановить всё как было. Не мог поверить, что структура просрана и невосстановима.
      Из всех перепробованных утилит всё обратно в прежнем виде вернула китайская DiskGenius, причём буквально за секунды, дольше разбирался как это сделать.
      Прошло лет много, может кто-то ещё научился это делать, но тогда, давно, — вот так. Просто поделился опытом.


      1. Okeu
        27.09.2026 05:25

        если он сделал это за секунды, то полагаю, что это было быстрое сканирование потерянных разделов, а делает он это путем поиска и перечитывания резервной GPT таблицы в конце диска, иначе сканировать ему придется весь диск, что долго и медленно

        gdisk - вспомнил, им я флешки восстанавливал аналогично


      1. yadowit
        27.09.2026 05:25

        DMDE так же умеет делать. И тоже - дольше разбираешься "как".


      1. Metotron0
        27.09.2026 05:25

        И мне помогла DMDE в такой ситуации. Теперь всегда держу её рядом.


  1. LiamBlue
    27.09.2026 05:25

    Не следует лезть в такие дебри и исследования - безопасно ли на самом деле вытаскивать флешку без отключения или нет. Есть известная, установленная правильная процедура, согласно которой надо нажать на иконку в трее. Её и надо придерживаться в любых обстоятельствах.

    Понимаете - то, что вы будете лезть в дебри, гадать что-то там, выяснять - тут можно и облажаться. Что-нибудь не учесть, какой-нибудь неизвестный фактор сыграет. Оно не надо такое. Если вы соблюдаете процедуру - вы получаете гарантированный результат. Вот бы ещё разработчики винды позволили не делать лишних кликов - а сразу сделали кнопку на видном месте, отключающую флешку. Или иконку на рабочем столе/меню пуск. Причём сделали всё это настраиваемой возможностью, а не изначально существующей фичей. Очень жаль, что в Windows 11 нету Quick Launch bar на панели задач.


    1. gazkom
      27.09.2026 05:25

      Настраиваемая фича: вытаскиваешь на рабочий стол диск, который USB drive. При необходимости безопасно извлечь, нажимаешь на нем правой кнопкой мыши и выбираешь eject.


      1. Wesha
        27.09.2026 05:25

        вытаскиваешь на рабочий стол диск

        Как-то Сисадмин спросил:
        — Учитель, не желаете ли красивую картинку для вашего десктопа? У меня есть хорошая коллекция обоев для рабочего стола со звездным небом и моральным законом.
        — Почему ты думаешь, что мой нынешний wallpaper хуже? — спросил в ответ Инь Фу Во.
        — Я не знаю, какая у вас картинка сейчас. Я никогда не видел вашего десктопа. У вас всегда открыто множество окон.
        — Я тоже его никогда не видел, — сказал Инь. — Я работаю.


      1. JBFW
        27.09.2026 05:25

        Проблема с "безопасным извлечением" в том, что это достаточно долго и требует телодвижений: отвлечься, подвести мышу куда надо, нажать (а теперь еще нажать ДРУГУЮ кнопку и ВЫБРАТЬ)

        Сравните с действием "выдернуть".

        Тогда уж лучше настроить хоткей, чтобы при нажатии на него сначала само вылезло ругательное окошко, и вот только если в нем нажата правильная кнопка - оно отмонтировалось бы и написало "готово". Это быстрее - и то всё будут забиывать


        1. Okeu
          27.09.2026 05:25

          стрелять фейковыми BSODами при каждом небезопасном извлечении) Тогда у пользователей быстро выработается рефлекс - выдергивать - плохо


          1. alexxisr
            27.09.2026 05:25

            FreeBSd так и делала - kernel panic при выдергивании флешки без umount. Сколько плачей было на форумах.


        1. Pogramist
          27.09.2026 05:25

          уж точно это не медленнее чем размонтировать в терминале линукса


    1. MountainGoat
      27.09.2026 05:25

      Или иконку на рабочем столе/меню пуск.

      Или ставите SysInternals и там есть sync.exe.

      sync.exe -e E:

      Или можно обойтись powershell (но не тестил)

      $v = Get-CimInstance Win32_Volume -Filter "DriveLetter='E:'"
      Invoke-CimMethod -InputObject $v -MethodName Dismount -Arguments @{ Force = $true; Permanent = $false }


    1. qvvah
      27.09.2026 05:25

      Закрепить в панель задач или "Пуск" ярлык на rundll32.exe shell32.dll,Control_RunDLL hotplug.dll , как вариант; либо использовать утилиты, заменяющие панель задач, которые вернут в Windows 11 утраченную функциональность.


  1. MountainGoat
    27.09.2026 05:25

    У винды в свойствах флешки можно отключить кеширование и оставить немедленную запись. Если любите выдёргивать флешки, то включите и не парьтесь.


    1. saege5b
      27.09.2026 05:25

      Не без глюков.

      Что Форточки, что пингвин, именно флешку воспринимают как чужеродное нечто.

      Для любителей выдёргивать лучше обзавестись качественным ССД в формфакторе флешки.


      1. LeraKholod
        27.09.2026 05:25

        Как вариант, только вот ценник на такой девайс обычно отпугивает любителей дешевых решений)


        1. Ndochp
          27.09.2026 05:25

          300 рублей за переходник и ssd 60 gb с позапрошлого компа


          1. randomsimplenumber
            27.09.2026 05:25

            То есть лично вам ssd бесплатно достался.


            1. Ndochp
              27.09.2026 05:25

              Ну кажется ССД уже довольно давно на рынке, чтобы обрасти ненужными прошлых поколений. Это как с телефонами. (но не бесплатно. Тысяч 3-5 я за него в свое время отдал)


              1. JBFW
                27.09.2026 05:25

                старые SSD дохнут, и дохнут неожиданно.


                1. Ndochp
                  27.09.2026 05:25

                  Флешки это транспорт, а не место для бэкапов. и неожиданно дохнут чаще старых ССД


    1. dky
      27.09.2026 05:25

      Вы же прочитали раздел под названием "Откуда вообще взялась кнопка"?


    1. Dhwtj
      27.09.2026 05:25

      Не поможет.


  1. litos
    27.09.2026 05:25

    Безопасное отключение еще по идее может питание порта отключать, куда уж безопаснее и полезнее для электроники


    1. Tomasina
      27.09.2026 05:25

      За эти годы ни разу не видел чтобы после безопасного отключения порт обесточивался. Даже на брендовых материнках.


      1. Siemargl
        27.09.2026 05:25

        есть

        светодиодики очень часто есть на съемных hdd/ssd, гаснут после команды изымания


        1. Dozer88
          27.09.2026 05:25

          Это же не светодиод питания


          1. Siemargl
            27.09.2026 05:25

            светится когда запитан, моргает при чтении/записи


            1. vros
              27.09.2026 05:25

              Когда запитан или когда драйвера с контроллером договорились? Если воткнуть в блок питания - огонек загорится? А то, что моргает во время работы - как раз намек, что это не просто наличие питания.


            1. Sergey_datex
              27.09.2026 05:25

              питание не снимается. светодиод тушит прошивка, потому что с девайсом нет соединения. не выдумывайте то чего нет


              1. Siemargl
                27.09.2026 05:25

                ну ок, может и не снимается. просто при этом останавливает шпиндель и вообще притворяется мертвым )


                1. trinxery
                  27.09.2026 05:25

                  Ну да, всё это отлично делается программно.


            1. Okeu
              27.09.2026 05:25

              тут посыл в том, что диод может стоять уже во внутренней логике устройства.
              А учитывая, что он обычно моргает при чтении\записи, наверняка он и стоит где-то за контроллером, на одной из ножек. Так вот если контроллеру пришла команда "спать", и диод потух, это ведь не значит, что сама шина USB обесточена, на ней по-прежнему есть ток

              УПД: не дочитал тред до конца, выше уже отписали(


        1. tonyrouge
          27.09.2026 05:25

          Зачем-то вспомнил, что в бытность ХР при безопасном извлечении флешки светодиод на оной гас, а как поставил 7 в 2009 — ни разу более такого не видел, тыкай безопасное извлечение не тыкай, светодиод гореть будет. Вроде даже НЖМД внешние не останавливались и после «безопасного» извлечения визжали аварийной парковкой.

          В линуксах строго замечал, что флешка гаснет.


          1. K0styan
            27.09.2026 05:25

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


    1. vadimk91
      27.09.2026 05:25

      Кстати да, у меня есть старая флэшка Diesel с индикатором, который показывает и обмен и питание, можно понять, когда ее можно выдернуть. У современных увы такого нет, наверное на светодиодах экономят (ага, полцента).


      1. vis_inet
        27.09.2026 05:25

        Если не меньше


      1. Dhwtj
        27.09.2026 05:25

        Тоже ориентируюсь на индикатор на флешке или возле разъема. Погаснет и плюс ещё секунда и можно вынимать


      1. Moog_Prodigy
        27.09.2026 05:25

        Индикатор обмена встречаю сейчас везде, даже на самых дешевых китайских флешках. Даже на подделках (это которые прикидываются 32 гб а по факту там 2 гб). Не знаю, кто уж там на чем экономит.

        Кстати на брендированных флешках такой светодиод можно и не увидеть - или корпус непрозрачный и окошко не вывели, то ли берут самый древний дешман без индикатора.

        А вот с MicroSD ситуация как в посте. Да и нечасто мы эту мелочевку туда-сюда вставляем, в отличие от обычных.


    1. rrrrt7
      27.09.2026 05:25

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


      1. PsihXMak
        27.09.2026 05:25

        В новых дорогих материнках, обычно, стоит нормальная защита по току на USB. У нас был случай, когда на метеринках горели USB 2.0, при этом 3.0 оставались целые. По видимому, там была разная разводка по питанию.


        1. xxxgoes
          27.09.2026 05:25

          2.0 и 3.0 независимы на логическом уровне. Можно соорудить пассивный переходник разветвитель, все будет работать.

          У вас выгорела логика 2.0


          1. PsihXMak
            27.09.2026 05:25

            В смысле? У них разное питание.


            1. JBFW
              27.09.2026 05:25

              Не обязательно. Смотря как плату развели.


        1. Popadanec
          27.09.2026 05:25

          На многих ноутах защитой обычно и не пахнет, а т.к. usb идёт напрямую в процессор, это одна из популярных причин их смерти(по отзывам сервисов).


          1. MountainGoat
            27.09.2026 05:25

            Вот пример. Парень вставил куда не надо. По ноутбуку как Мамай прошёл. Повыгорала куча вспомогательных чипов. и Процессор.


          1. PsihXMak
            27.09.2026 05:25

            В теории, если замкнуть питание на шину, можно убить и процессор.
            Я взял первую попавшуюся схему и тут стоит usb напрямую в Z370

            Скрытый текст

            Если это usb 2, то один ампер ещё не так страшно

            Скрытый текст

            А если usb 3, то там аж 5.6 ампера

            Скрытый текст


    1. geher
      27.09.2026 05:25

      Безопасное отключение еще по идее может питание порта отключать

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


    1. Metotron0
      27.09.2026 05:25

      А я руками от рута делаю echo 1 > /sys/block/sdd/device/delete


    1. ptr128
      27.09.2026 05:25

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


    1. kh0
      27.09.2026 05:25

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


  1. garwall
    27.09.2026 05:25

    в линуксе еще можно принудительно скинуть на диск страничный кэш командой sync - как отработало, так и скинулось.


    1. dky
      27.09.2026 05:25

      "а на Linux перед этим набираю sync и терпеливо жду, пока он вернет управление" - это цитата из заметки


      1. garwall
        27.09.2026 05:25

        эх, дрянная моя привычка пробегать глазами по верхам (

        (поэтому и стараюсь выделять команды и т.п. инфу в тексте форматированием)


    1. RulenBagdasis
      27.09.2026 05:25

      В Cinnamon флэшка извлекается одним кликом, после чего системная всплывающая подсказка говорит о том, можно или нельзя её сейчас выдёргивать. Если нельзя, то потом скажет, когда можно будет, если я ничего не путаю. sync удобнее, только если я флэшкой в консоли работать изначально, имхо.


  1. WinLin2
    27.09.2026 05:25

    Пользоаателям нужно сказать, чтобы открыли консоль, набрали sync, подождали завершения и так каждый раз. Пользователи итак злые. Нужно упырей отечественных, собирающих большие деньги напрягать.


  1. trilirium
    27.09.2026 05:25

    Флэшки -- это чужеродное Маку устройство. )))

    Во времена, когда основным носителем была дискетка -- проблема решалась радикальнее. На флоповодах у Мака просто не было кнопки извлечения! Вытолкнуть его из дисковода могла только сама MacOS. Естественно, пока все операции записи на носителе не закончены -- она его не вытолкнет. )))


    1. salnicoff
      27.09.2026 05:25

      Да, это было гениальное решение. Ни одна тупая секретарша не могла запороть файлы на дискете. Один только крсяк был: для выталкивания дискеты нало было ее иконку перетащить в мусорную корзинку... Что в 1984 году курили эппловские дизайнеры???