Адрес для входа в РФ: exler.wiki
Настала новая эпоха!
Свершилось! В Microsoft официально объявили (англ.) о том, что в Windows 10, начиная с обновления 1809, можно вынимать внешние накопители без "безопасного извлечения". Потому что там добавлена функция "быстрое удаление", которая отключает кеширование при записи на внешние источники. Производительность при этом немного уменьшается, но зато нет риска того, что пользователь потеряет какие-то данные, вытащив флешку или отсоединив внешний диск до того момента, пока полностью сбросится весь кеш.
Мы с котом Бубликом из деликатности не задаем вопрос: почему до этого нельзя было додуматься больше двадцати лет назад, но, как говорится, спасибо и на этом.
Конечно же, по прежнему не рекомендуется резко выдирать флешку из гнезда во время процесса записи - процессу записи это может не понравиться.
Кстати, а вы когда-нибудь пользовались функцией "безопасного отключения"? Лично я этой функцией пользовался, наверное, два раза в жизни - когда на флешку писалась очень важная информация, которую просто по определению нельзя было потерять. А так обычно достаточно было просто подождать секунд 10-20, чтобы кеш обнулился - и все.
Я вот всегда безопасно извлекаю отовсюду.
Я не использую флешки как диск для оперативного обновления данных, поэтому количество записей там очень несущественно. У меня пока ни одна не накрылась
Теперь придётся отвыкать 😄 Впрочем, привычки, которым больше 20 лет, искоренять сложно.
Очень часто USB-флешка состоит из контроллера, и, собственно, микросхемы Flash-памяти. Контроллер содержит в себе процессор, и для того чтобы всё устройство заработало именно как "USB Storage", этот процессор нужно загрузить программой.
Так вот, рабочая прошивка для USB-контроллера обычно лежит "снаружи" как раз в микросхеме Flash! Внутри контроллера там может быть только самый простейший загрузчик для связи с технологической утилитой на компе.
Получается, что если во время записи на диск "что-то пойдёт не так" -- например, флешку выдернут -- то на остатках заряда конденсаторов операция записи в саму микросхему Flash может пройти по произвольным адресам, в том числе и в область прошивки контроллера. Всё! "Флешка сгорела!"
Лучше "безопасно извлекать". И даже при выключенном в ОС кешировании записи, всё равно лучше подождать пару секунд после окончания файловых операций -- мало ли что там контроллер внутри себя аппаратно буферирует.
Мой друг, который просто выдергивает флешки из компов, говорит что на моей могиле будет написано "Здесь лежит старое сцыкло"
Он правда считает что ключевое слово сцыкло, а я - старое.
Люблю флэшки со светодиодом. Пока моргает - нетрожь.
Вообще по опыту да надо пользоваться этой функцией. Допустим на своем компе тип топ без извлечения, а на чужом хопа. А рефлекс.
Это не виндовое, а просто народное 😄
В Win7 вроде таких глюков не наблюдалось.
А вот Win10 вернулась к привычкам Висты. Уж не знаю, что именно она делает с USB-накопителями, но если не вынуть сразу, то через минуту-другую эта тварь начинает им жужжать (у меня на внешнем HDD лампочка моргает, показывая активность).
И как узнать, что эта тварь хочет - непонятно.
В Linux можно спросить у fuser, а тут - хбз. Разве что какой-нибудь filemon (ныне Process Monitor) от Руссиновича, но покажет ли он активность самой системы - неясно.
Например, lsof'у - надо указать интересующую точку монтирования, fuser'у - аналогично; на крайняк - "ls -l /proc/*/fd/* | grep ТОЧКА_МОНТИРОВАНИЯ". Но ps'у-то что можно указать?
Вот, в новом обновлении, наконец-то (не прошло и пяти лет) сделают возможность задавать ip и dns через параметры Windows 10, а не через старую панель управления 😄
И текст в cmd будет возможно масштабировать как в браузере, ctrl+ колесо )
Но отдельные достижения есть, да.
Недавно добавили удаление мимо корзины - прогресс!
Или тут никто не видел дернутых так и сдохших флэшек, владельцы которых были сильно удивлены сколько стоит теперь выпаять из нее чип и засунуть его в программатор? 😄
Очевидно, что изменение режима копирования может спасти от проблемы с кешированием.
А от описанной вами проблемы должна спасти нормальная схемотехника флешек.
Разве что вытаскивать криво чтобы питание на данные попало итп
От прерванной операции записи спасает выключение буферизации и невытаскивание флешки во время записи (пока "градусник" индикатора записи не исчез).
От сгорания контроллера спасает нормальная схемотехника.
Ну и некоторые потом от таких вот советов страдают 😄
Или сейчас тоже нельзя ? Просто уже сто лет под Linux CD-ROMом не пользовался...
Файлы копирую, естественно, чаще всего в FAR.
Ну а что до извлечения "на ходу" - были случаи и порчи данных, и порчи флешек. Оно конечно штука-то копеечная, но узнаёшь о том, что нужных файлов у тебя при себе нет, обычно слишком невовремя.
Вот уж воистину достижение так достижение. "По просьбам трудящихся", ага.
На самом деле далеко не во всех случаях он нужен.
PS
извлекаю всегда, при записи на флешку, были случаи потери данных и даже отказ работать и форматироваться, при при не безопасном извлечении.
Но это ж совсем не так.
Но это ж совсем не так.
Проблема, я так понимаю, основная в том, что венда будет перечитывать каталог после записи каждого файла и если очень много мелких файлов, то будет, да, заметно. А так - нэт.
Чтобы информация на накопителе оставалась целостной, в "безкэшном" режиме ОС должна записывать метаданные после каждого чиха (в смысле, после записи каждого блока данных).
При включенном кэшировании блоки с метаданными, столь часто модифицируемые, могут физически писаться существенно реже.
Если у тебя хватает ума понимать, почему быстрее - то осилить включение кеширования ты осилишь 😄
Во-вторых, эту "буферизацию" правильнее называть "кэш на запись" (write cache). А он по смыслу устроен именно так, что "склеивает" множественные записи одного блока в одну запись. И для блоков с метаданными это означает, что при отключении кэширования записи КАЖДАЯ модификация метаданных (а она происходит при каждой записи данных) будет приводить к физической записи такого блока, в то время как при включенном кэшировании достаточно было бы одной записи, условно, раз в 10 секунд.
А о склеивании записей ОДНОГО блока. Этим "одним блоком" является блок, содержащий метаданные.
Запись файла -- особенно большого -- идёт не одной операцией, а толпой последовательных write()'ов; например, по 128КБ. И после КАЖДОЙ такой записи данных обновляется блок с метаданными.
Если кэширование включено -- окей, этот блок будет обновляться раз в сколько-то секунд (например, 10), плюс один раз в конце. А промежуточные изменения будут оставаться только в памяти, в кэше записи.
Если же кэширование отключено, то КАЖДОЕ обновление (после записи каждых условных 128КБ данных) должно физически записываться на накопитель.
Но еще "last modified time/date" и "file size" - они обновляются при каждой записи данных. В FAT/FAT32 эти поля расположены в директории, в иных ФС в других местах, но суть остаётся -- эти метаданные меняются при каждой записи, а расположены они отдельно от данных самого файла.
Если кэширование включено -- окей, этот блок будет обновляться раз в сколько-то секунд (например, 10), плюс один раз в конце. А промежуточные изменения будут оставаться только в памяти, в кэше записи.
Как минимум потому, что в этом случае будет как раз нынешнее поведение - "бегунок быстро доходит до 100%, а потом долго там стоит".
P.S. По-хорошему, надо бы просто взять да проверить оба варианта работы. Жаль, нет сейчас под рукой Форточек для таких экспериментов. Дойдут руки - проверю.
А насчёт физически повредить - просто флешка, как и любое другое устройство, в большинстве случаев выходит со строя при включении ( читай - воткнул в порт и подал напряжение). Никак не связанно с безопасным отключением. Или его отсутствием.
7 ошибок в слове "идиотов"
Я, правда, тоже иногда не пользуюсь "безопасным извлечением", но это при использовании флешки с включенной аппаратной защитой от записи - очень полезная вещь, когда надо засовывать в чужие компьютеры.