LINUX.ORG.RU

Как быстро убить флешку перезаписью?

 ,


0

4

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

dd if=$file of=$dev oflag=direct bs=$bs count=$count seek=$offset
dd if=$dev iflag=direct bs=$bs count=$count skip=$offset

Почему совпали все контрольные суммы? Как воспроизвести проблемы, возникающие из-за износа ячеек?

Флешка умная может, она тебя обхитрила наверное и равномерно перекидывала данные с одной ячейки на другую 5 лимонов раз. Забей её полностью оставив лишь маленький кусочек, и потом копируй/удаляй на неё этот кусочек каждый раз разный 5+ миллионов раз опять.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Флешка умная может

А флешки за 5$ уже умеют выравнивать износ ячеек?

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

Может быть, microSD лучше подойдут для такой цели? Там вроде бы максимально тупые контроллеры используются. Или сейчас даже в них контроллеры поумнели?

newbie24
() автор топика
Ответ на: комментарий от LongLiveUbuntu

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от newbie24

А флешки за 5$ уже умеют выравнивать износ ячеек?

Economy of scale. Всё чипы уже давно по доллару за два мешка. Заморачиватся, чтобы построить специально глупую китайцы не будут.

Какую для эксперимента купить флешку

Ограбить какой-нибудь музей наверное проще будет. Или искать old-new-stock 10..15-и летней давности. Где-нибудь на ebay.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от newbie24

Ну, в 2015 году SanDisk утверждал, что все его флешки с wear levelling algorithm.

А ещё можно нагуглить такую статью: Write Endurance in Flash Drives: Measurements and Analysis. Conference: Proceedings of the 8th USENIX conference on File and storage technologies Authors: Simona Boboila Peter Desnoyers Northeastern University. Её дата февраль 2010 года. Там написано, что практически все устройства с флеш-памятью (SSD, флешки, SD-карты) имеют wear levelling.

Вобще, реализовать какой-то примитивный алгоритм выравнивания, не так сложно, всё одно в NAND памяти не все блоки с завода рабочие, то есть в любом случае нужна таблица отображения. И от 5 млн. раз он сработает. К тому же, физически флеш стирается большими областями, если контроллер будет записывать сектор в одно и тоже место флеш памяти, как раз и будут тормоза, там для быстрой записи будет реализован какой-то алгоритм, пытающийся записать сектор каждый раз в новую свободную область пусть и без учёта её износа. Так что можете не искать.

уже умеют выравнивать

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

Ну, и коррекция ошибок на NAND норма, то есть, вполне вероятно, изношенный сектор вам просто даст ошибку чтения, вы это проверяете или какие эффекты от износа флеш хотите достичь?

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

Китайцы до сих про производят USB 1.1 хабы и 10 Мбит Ethernet-USB. Не думаю, что они когда-то так много чипов наштамповали, скорее всего, старые заводы работают.

Скорее всего, исходно, во всех USB 2.0 флешках было выравнивание износа, всё одно контроллер делает отображение номеров секторов на адреса флеш памяти, ECC.

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

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

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

именно что «столько наштамповали».

прямо сейчас продаются китайрадио golon, ну те что с настройкой крутилками, у которых на плате 2012 год выпуска…

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

А флешки за 5$ уже умеют выравнивать износ ячеек?

Когда флешки только начали внедряться на массовый рынок, их пришлось делать совместимыми с дисковыми накопителями, на которые были рассчитаны все тогдашние ОС и файловые системы. Диск в ОС представляется как блочное устройство, каждый отдельный блок в котором можно прочитать и записать. У флешек всё сложнее. Поэтому был придуман FTL. А когда есть FTL, то добавить wear-leveling к нему очень легко, ведь обращения снаружи происходят к виртуальным «блокам» вместо физических erase-block’ов.

Есть ещё «сырые» флешки, с которыми Linux может работать как с mtd-устройствами, а не с блочными. В этом случае никакого FTL нет, а wear-leveling либо отсутствует, либо реализуется на уровне файловой системы или прослойки UBI. Но эти устройства не USB-шные, их обычно на плату распаивают.

annulen ★★★★★
()

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

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

Вообще, в древности люди придумали орду FATов специально для флеш-памяти. Понятно, что это не для бытовых устройств, но решения на уровне FAT в природе существуют

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

У основной массы пользователей в те времена стояла Windows, причём отнюдь не NT. И нужно было, чтобы воткнул и заработало, без установки драйверов и прочего гемора. Иначе юзер не купит флешку, а использует дискету или CD-R(W), которые прочитаются везде.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

Учитывая бесполезность и длительность занятия скорее всего спортивный интерес.

Бесполезность - возможно. Длительность я пытался сократить, не заполняя весь объем.

Забей её полностью оставив лишь маленький кусочек, и потом копируй/удаляй на неё этот кусочек каждый раз разный 5+ миллионов раз опять.

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

Цель эксперимента - понять, в каких режимах флешка умирает особенно быстро. Затем я планирую исследовать некоторые файловые системы на предмет выравнивания записи по всему объёму носителя.

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

Задача в общих чертах такая. Есть одноплатник, пишущий данные в лог. Одноплатник находится в неудобном для обслуживания месте. Время от времени логи забирает по сети другой компьютер. Возможны перебои по питанию, поэтому хранить лог в RAM недостаточно, нужна постоянная память, а файловая система должна быть журналируемой. Скорость генерации данных меньше сотни байт в секунду, но данные раз в секунду желательно сохранить. В качестве рабочего носителя я рассматриваю либо компактную USB-флешку, либо microSD.

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

newbie24
() автор топика
Ответ на: комментарий от mky

Ну, и коррекция ошибок на NAND норма, то есть, вполне вероятно, изношенный сектор вам просто даст ошибку чтения, вы это проверяете или какие эффекты от износа флеш хотите достичь?

Я сравнивал контрольные суммы записанного и прочитанного, они совпали в каждой попытке. Измерял время одной итерации записи-чтения: за 5 млн. оно увеличилось всего на 15-20% от исходного, в основном в первые 500 тыс. итераций, а затем практически не менялось. Главного же - ошибок чтения или записи я не встретил за весь эксперимент.

newbie24
() автор топика

Скорей всего на флеш при этом особо ничего не пишется. Где-нибудь кешируется.

Правильный способ тестирования - записывать всё устройство от первого до последнего доступного сектора.

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

Где-нибудь кешируется.

Где? Система кешировать не должна, этому препятствует флаг oflag=direct. Возможно, флешка кеширует в специальном кеше с повышенным ресурсом записи. Но по слухам в дешевых флешках такой кеш отсутствует. Да и мои тесты тоже не выявили кеша.

Правильный способ тестирования - записывать всё устройство от первого до последнего доступного сектора.

Я искал более быстрый способ. Если перезаписывать весь объем, то по моим прикидкам выходило время исчерпания ресурса 3-15 месяцев непрерывной записи на максимальной скорости флешки.

А люди как-то умудряются убивать флешки за 1-3 месяца с гораздо меньшей интенсивностью. В чём их секрет?

newbie24
() автор топика
Ответ на: комментарий от annulen

В оперативной памяти контроллера флэшки.

Допустим. Как долго контроллер держит данные незаписанными в постоянную память? Пока питание не пропадет? Как выявить наличие такого кеша? Как определиь его объем?

newbie24
() автор топика
Ответ на: комментарий от newbie24

Как долго контроллер держит данные незаписанными в постоянную память? Пока питание не пропадет?

Точно нет. Но если сектор перезаписывается раньше, чем истёк таймаут кэша, контроллер может быть сбросить таймер.

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

В чём их секрет?

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

Ну, и плюс, как нас учили, статистика начинается с 4 измерений, то есть одна конкретная флешка не показатель.

то по моим прикидкам выходило время исчерпания ресурса 3-15 месяцев непрерывной записи

Покажите свои прикидки, может там ошибка.

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

Ну, и плюс, как нас учили, статистика начинается с 4 измерений, то есть одна конкретная флешка не показатель.

Распределение Стьюдента вполне работает для трёх. Например, титруют обычно три раза, и это позволяет определить не только среднее, но и погрешность.

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

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

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

Как быстро убить флешку перезаписью?

Попробуй писать случайные 512 байт по смещениям 131072×n, где n — случайные числа.

Считается, что флешки содержат 2-8 рабочих зон по 128k-4M каждая. Что-то вроде кеша в процессорах. Как только хост начинает писать в другое место, содержимое одной из зон сбрасывается в основной флеш, и вызывает перезапись объёма, равного объёму рабочей зоны. Запись по разным смещениям вынудит контроллер флешки постоянно открывать новые зоны и закрывать старые, многократно усиливая запись.

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

Покажите свои прикидки, может там ошибка.

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

Скажем, есть флешка на 64 GB с заявленной скоростью записи до 80 MB/s и скоростью чтения в 2 раза выше. Она будет полностью перезаписана в лучшем случае за 800 сек и прочитана за 400 сек для сверки контрольной суммы. Получается 72 цикла в сутки, 2 тыс. в месяц и около 26 тыс за год.

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

Считается, что дешевые флешки должны выдерживать около 1000 циклов. Реальное количество должно быть в несколько раз больше гарантированного. Тут я встаю на скользкую почву и умножаю на 3, получая 1.5 месяца. За время интенсивного тестирования скорости снизятся, и мы можем получить примерно 2 месяца.

Более дорогие флешки должны гарантированно выдерживать и 5000 циклов, что с учётом множителя может растянуться на год непрерывного теста.

newbie24
() автор топика
Ответ на: комментарий от vbr

Настоящая скорость записи выявляется по записи длинного файла (вместе с последующим eject).

По моему опыту после тестовой записи командой dd ... oflag=direct последующий запуск всяких sync и eject выполняется за околонулевое время и потому не имеет смысла. Но допускаю, что в каких-то условиях такой подход может быть некорректным.

В каких случаях для тестирования недостаточно использовать oflag=direct и требуется eject?

newbie24
() автор топика
Ответ на: комментарий от newbie24

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

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от newbie24

Ну, как бы верно, но зачем читать после каждой записи, если цель просто угробить? Читайте после 10 записей. С ресурсом флеш действительно большая неопределённость, но 5000 циклов — это для TLC, вроде, во флешках её уже не используют.

А у QLC большой разброс, по разным данным от 100 до 1000. У QLC сейчас в ходу 128 Гбайт чипы, то есть главный вопрос, 64 Гбайт это что-то старое, на чипе 64 Гбайт и продаётся дёшево, чтобы распродать, или новое, на отбракованых чипах, которые должны были быть 128, но слишком много бракованых блоков с завода. Во втором случае, вполне возможно что ресурс и будет около 100 циклов перезаписи. ИМХО, такие флешки у людей за месяц-другой и дохнут.

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

люди как-то умудряются убивать флешки за 1-3 месяца с гораздо меньшей интенсивностью. В чём их секрет?

Высокая температура. (с)

mydibyje ★★★★
()
Последнее исправление: mydibyje (всего исправлений: 2)
Ответ на: комментарий от newbie24

55 хватит, учитывая работу 24/7.

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

mydibyje ★★★★
()
Последнее исправление: mydibyje (всего исправлений: 1)
Ответ на: комментарий от mydibyje

55 хватит

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

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

newbie24
() автор топика