1

С развитием интернет торговли очень часто в продаже продавцы пытаются нас обмануть.
Берут дешевые флеш накопители и программируют объем намного больше чем они могут вместить.

Результат:
1. в лучшем случае потеря нервов, это когда вы во время вернули деньги
2. в худшем средств, это когда Вы не проверив и не протестировав накопитель ставите отзыв продавцу, а после замечаете деффект.
3. а в самом печальном раскладе потеря данных.

Итак хорошо на руках у нас во 2 и 3-м случае остается накопитель с которым работать нельзя.
Но не все потеряно. Можно исправить фальшивый объем на реальный и пользоваться тем что осталось.

Как же вылечить китайские флешки с фейковым размером в операционной системе Линукс.

Для начала нам нужно протестировать накопитель на ошибки.

Приготовьтесь к тому что чем больше объем фальшивой флешки тем больше времени будет затрачено на тестирование.

В оффтопике есть утилита H2testw, но речь пойдет не о ней, а об его аналоге для операционой системы Линукс.

Утилита F3 <- ссылка для скачивания.

Переходим по ссылке выше и берем в разделе Download and Compile архив.

Скачав архив распаковываем его удобным Вам способом, автор рекомендует команду:

 Консоль:
$ unzip f3-2.2.zip

Далее изучаем файл README...
Немного переведу содержимое (там написано, как скомпилировать и использовать программу).
Для компиляции в Линукс выполняем команду:

 Консоль:
make linux

Для компиляции в Mac
 Консоль:
make mac

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

/media/5EBD-5C80/

Теперь в консоли выполняем команду:

 Консоль:
./f3write /media/5EBD-5C80/

Ждать можно слишком долго я к примеру около 6ти часов записывал накопитель объемом 64 фальшивых гигабайта.
В консоли будут выводится запись о том что записан очередной файл объемом 1 гигабайт в таком виде:
 Консоль:
$ ./f3write /media/5EBD-5C80/
Free space: 28.83 GB
Creating file 1.fff ... OK!
Creating file 2.fff ... OK!
Creating file 3.fff ... OK!
Creating file 4.fff ... OK!

В конце процесса будет информация о том что накопитель заполнен полностью:
 Консоль:
Creating file 28.fff ... OK!
Creating file 29.fff ... OK!
Free space: 0.00 Byte
Average Writing speed: 2.60 MB/s

Теперь нужно выполнить обратную команду, для определения реального объема живых секторов накопителя:
 Консоль:
$ ./f3read /media/5EBD-5C80/

Результат работы команды будет таков:
 Консоль:
$ ./f3read /media/5EBD-5C80/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.fff ...       0/  2097152/      0/      0
Validating file 2.fff ...       0/  2097152/      0/      0
Validating file 3.fff ...       0/  2097152/      0/      0
Validating file 4.fff ...       0/  2097152/      0/      0
Validating file 5.fff ...       0/  2097152/      0/      0
Validating file 6.fff ...       0/  2097152/      0/      0
Validating file 7.fff ...       0/  2097152/      0/      0
Validating file 8.fff ...       0/  2097152/      0/      0
Validating file 9.fff ...       0/  2097152/      0/      0
Validating file 10.fff ...       0/  2097152/      0/      0
Validating file 11.fff ...       0/  2097152/      0/      0
Validating file 12.fff ...       0/  2097152/      0/      0
Validating file 13.fff ...       0/  2097152/      0/      0
Validating file 14.fff ...       0/  2097152/      0/      0
Validating file 15.fff ...       0/  2097152/      0/      0
Validating file 16.fff ...       0/  2097152/      0/      0
Validating file 17.fff ...       0/  2097152/      0/      0
Validating file 18.fff ...       0/  2097152/      0/      0
Validating file 19.fff ...       0/  2097152/      0/      0
Validating file 20.fff ...       0/  2097152/      0/      0
Validating file 21.fff ...       0/  2097152/      0/      0
Validating file 22.fff ...       0/  2097152/      0/      0
Validating file 23.fff ...       0/  2097152/      0/      0
Validating file 24.fff ... 1916384/   180768/      0/      0
Validating file 25.fff ...  186816/  1910336/      0/      0
Validating file 26.fff ...       0/  2097152/      0/      0
Validating file 27.fff ...       0/  2097152/      0/      0
Validating file 28.fff ...       0/  2097152/      0/      0
Validating file 29.fff ...   28224/  1705280/      0/      0

  Data OK: 1.02 GB (2131424 sectors)
Data LOST: 27.81 GB (58322336 sectors)
           Corrupted: 27.81 GB (58322336 sectors)
    Slightly changed: 0.00 Byte (0 sectors)
         Overwritten: 0.00 Byte (0 sectors)
Average Reading speed: 9.54 MB/s

Нам нужно только вот это:   Data OK: 1.02 GB (2131424 sectors)

Ну а теперь осталось дело за малым создать раздел который не выходит за пределы 2131424 секторов.
Самый простой способ сделать это использовать fdisk или любую другую утилиту которая позволяет указывать объем разделов в секторах.
Последовательность команд fdisk описана на странице с описанием утититы F3 в разделе How to "fix" a fake card.
Некоторые параметры fdisk могут отличатся в зависимости от дистрибутива и версии, но незначительно.

2

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

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

3

скукота... я думал тут будет обзор утилит по перепрошивке флешки.... а тут просто костыль к dd =(

95% процентов проблем находятся между клавиатурой и стулом.

4

Fat-Zer, а чего ради шить, если реальная емкость - гигабайт? Не, найдутся и такие, кому флешки в гиг объемом за уши хватает, но вот лично мне, аскету, уже хочется 32 ab

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

5

yars пишет:

Fat-Zer, а чего ради шить, если реальная емкость - гигабайт? Не, найдутся и такие, кому флешки в гиг объемом за уши хватает, но вот лично мне, аскету, уже хочется 32

не выбрасывать же её после этого... а вот чип перепрошить, чтоб реальный объём показывало — было бы хорошо...  32-х гиговой я сам разжился недавно... правда ещё не перешёл на неё...

95% процентов проблем находятся между клавиатурой и стулом.

6

yars пишет:

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

Опередил! )))

Но вдруг лишний инструмент кому-то не лишний?

7

Fat-Zer пишет:

не выбрасывать же её после этого... а вот чип перепрошить, чтоб реальный объём показывало — было бы хорошо...

Фишка заключается в следующем. Утилиты как правило для оффтопика это основная проблема.
Следующая проблема - если для известных чипов можно найти утилиту и исправить фейковый размер на реальный.
То для менее известных к которым относится и мой "трупик" утилита вроде есть.
Но китайцы постарались по полной и скрыли информацию о чипе. Таким образом что определяется только VID и PID.
Перебрал пару десятков оффтопиковых утилит лишь одна показала более менее близкий результат, но все Firmware Utility, найденные в сети для моего чипа, не определяют накопитель. Потому как служебная информация заблокирована для изменений.

Вот поэтому единственный выход создать раздел вписывающийся в количество живых секторов.

8

Спасибо mozgfx'у за ссылку на эту тему, впервые узнал, что китаёзы "бодяжат" флешки, вот заразы и что вообще начали флешки бодяжить. Было бы хорошо, если тему продолжили и развили, мне, новичку интересно будет почитать ещё что-нибудь.

PS: больше всего нравится тон общения, может быть не всё подробно(новичку не определить - подробно или нет), зато без уничижений друг в друга и без базара, всё понятно (а что не понятно, потом дойдёт). Я не к тому, что в топике должны быть только научные выкладки, живой разговор наоборот раскрывает нюансы, но повторю без базарного разговора и превосходства над собеседником. Приятно было зайти и глотнуть информации  ay

Изучайте нюансы и мелочи - порой в них заключена вся суть проблемы!
Mageia 5.1х86_64 KDE; Mageia 6х86_64 Xfce [ highlight=#000][ console=inline] [ b][ color=#4f4]текст[ /color][ /b] [ /console][ /highlight]

9

Меня смущает надежность перепрограммированной флешки - а вдруг это отработавшие свое экземпляры, перешитые на много меньший объем и выпущенные на рынок под видом новых? =) Конечно, изготовить флешку на гигабайт, перепрошить контроллер и продавать как флешку, скажем, на 16 Гбайт - дешевле флешки с честными 16-ю гигами, но еще дешевле взять готовый брак...

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

10

yars пишет:

Меня смущает надежность перепрограммированной флешки - а вдруг это отработавшие свое экземпляры, перешитые на много меньший объем и выпущенные на рынок под видом новых? =)

Все дело в том что устройство флешки просто есть контроллер и есть сама память.
Нормальная флешка позволяет оптимизировать её работу уменьшая скорость увеличиваем объем и наоборот... Незначительный, но прирост.
_______________
А вот нерадивый продавец берет утилиту указывает запредельный объем...
Что получается адресация контроллера выходит за пределы адресации памяти и происходит потеря данных.
Описанный способ лечения выше работает по аналогии технолигии TRIM в SSD.
Поэтому выжав максимум из того что есть можно смело пользоваться пока сектора не начнут сыпаться.
Ведь процесс проверки мы повторяем после того как скорректировали объем.
_______________
Минус китайских флешек в том что у них малоизвестные чипы памяти, а поэтому они берут и блокируют информацию на уровне контроллера...
А поэтому перепрошить их даже в оффтопике не представляется возможным.

11

algri14 пишет:

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

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

12

mozgfx пишет:

Описанный способ лечения выше работает по аналогии технолигии TRIM в SSD.

TRIM работает совсем не так.
тут вы просто забиваете флешку чем-то (кстати, чем?), и проверяете, что получилось. Тащем-то можно взять любой большой файл(файлы, слепить командой cat сериал например), и записать на флешку кусочками man split. Потом командой cmp проверять соответствие.

Хотя имхо я-бы "вылечил" иначе, путём возврата в магазин этого УГ.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

13

drBatty пишет:

TRIM работает совсем не так.
Тащем-то можно взять любой большой файл(файлы, слепить командой cat сериал например), и записать на флешку кусочками man split. Потом командой cmp проверять соответствие.
Хотя имхо я-бы "вылечил" иначе, путём возврата в магазин этого УГ.

1. Про TRIM Я написал что разбивая флешку мы указываем размер диска не более того количества секторов, которые при проверке оказались целыми. А это и есть работа принципов TRIM. (При использовании SSD рекомендуется оставить процентов 10% не распределенными, для того чтобы когда "диск" начнет сыпаться, вместо неисправных ячеек можно бы было добрать рабочих из этой не распределенной области)
В случае с флешкой работают те-же принципы, но место мы не оставляем, а указываем реальный размер.

3. Возвращать китайцам через почту России будет дороже себе...
Да и нет гарантии что китаец вышлет что-то обратно.

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

P/S/
Но вот Вам (обращаюсь не только к Доктору но и остальным) задача-вызов так сказать... Все пришли описали возможный ход своих действий. А полноценно расписать процесс никто не расписал.
Мы же здесь не только для себя общаемся, а для того чтобы научить других.
Поэтому просьба не писать пустых комментариев, а давать развернутый ответ в случае альтернативных точек зрения.

14

mozgfx пишет:

Про TRIM Я написал что разбивая флешку мы указываем размер диска не более того количества секторов, которые при проверке оказались целыми. А это и есть работа принципов TRIM. (При использовании SSD рекомендуется оставить процентов 10% не распределенными, для того чтобы когда "диск" начнет сыпаться, вместо неисправных ячеек можно бы было добрать рабочих из этой не распределенной области)
В случае с флешкой работают те-же принципы, но место мы не оставляем, а указываем реальный размер.

ещё раз:

drBatty пишет:

TRIM работает совсем не так.

повторюсь, а то кто-то ваш пост прочитает, и вам поверит.

Как именно работают твёрдотельные носители(SSD/флешки) — отдельная и доступная тема. Я тоже писал про это.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

15 (26.08.2014 11:29:11 отредактировано sergey888)

Честно говоря впервые слышу о таком, по этому и стоит покупать флешки не гдето, а в нормальных магазинах,  тем более обычно на флешку идет гарантия на 3-5 лет  и лучше чуть переплатить но взять нормальную вещь ab

16

drBatty, прежде чем писать не мешало бы спецификацию почитать...TRIM (англ. to trim — подрезать) — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

Расшифровываю: То есть если есть раздел определённого размера и ячейка умрёт, то она будет вычеркнута.  Уменьшается сам диск но не раздел. Поэтому если не оставить нераспределенного места то получится как с китайской флешкой адресное пространство после вычеркивания убитых ячеек не сможет их компенсировать. И логично что чревато потерей данных. Чем меньше свободного пространства на разделе и чем больше уменьшится адресное пространство тем больше шанс потери данных. При этом если мы оставляем нераспределенное место оно в итоге по мере вымирания ячеек будет уменьшаться но данные небудут утеряны до тех пор пока не умрёт то количество процентов диска которые вы оставили нерапределеными.

С флешкой этот принцип непрокатит так как Трим на нем не действует. Но узнав адресное пространство флешки мы создаём раздел который не выходит за его пределы.
Что не так?

17

sergey888 пишет:

Честно говоря впервые слышу о таком, по этому и стоит покупать флешки не гдето, а в нормальных магазинах,  тем более обычно на флешку идет гарантия на 3-5 лет  и лучше чуть переплатить но взять нормальную вещь ab

Это же где такую гарантию на флешки-то дают?)

18

nastyfomina, вот тут например http://fcenter.ru/product/type/97

19

nastyfomina пишет:
sergey888 пишет:

Честно говоря впервые слышу о таком, по этому и стоит покупать флешки не гдето, а в нормальных магазинах,  тем более обычно на флешку идет гарантия на 3-5 лет  и лучше чуть переплатить но взять нормальную вещь ab

Это же где такую гарантию на флешки-то дают?)

Не скажу, но не в России  ag
А вообще от магазина зависит, у меня тут под боком два магазина и один дает гарантию на флешки 1-2 года в зависимости от фирмы, а второй 3-5 лет,  я обычно закупаюсь во втором, там флешки значительно дешевле, а главное обслуживание лучше, если что ломается все сразу чиниться или заменяется без вопросов и отмазок ag

20 (16.09.2014 21:17:00 отредактировано drBatty)

mozgfx пишет:

прежде чем писать не мешало бы спецификацию почитать...TRIM (англ. to trim — подрезать) — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

хватит чушь пороть, ей больно.

Принципиальное отличие твёрдотельных накопителей от HDD заключается в том, что на HDD можно писать нули и единицы, а на флешки и SSD можно писать только нули. Единицы писать невозможно, если в ячейке 0, то после записи 1, в ней так 0 и останется.

Можно стереть ячейку, но для этого нужно высокое(по меркам микроэлектроники, где всё маленькое, в т.ч. и изоляция) напряжение. Изолировать от которого каждую ячейку невозможно, можно изолировать только остров из десятков тысяч ячеек. Потому флешки(и SSD) поддерживают только групповое стирание, которое к тому же требует много времени и энергии("флеш" это "вспышка" по нашему. Именно эта вспышка и нужна для стирания острова)

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

mozgfx пишет:

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

facepalm

На самом деле, всё совсем не так. Вся проблема из-за высокого напряжения во время стирания. Которое разрушает ячейки.  Разрушает хоть и медленно, но неотвратимо и неумолимо. Причём разрушает ВНЕЗАПНО, т.е. нет никакой возможности предугадать, какую именно ячейку оно разрушит. Посему, данные размазывают на несколько ячеек, дабы потом можно было собрать их с битых. К примеру из 1000 битов делают 1200 бит, и их пишут. При извлечении часть информации неизбежно теряется, но если остаётся хоть 1000 живых бит из 1200, то их можно восстановить.

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

Никакой жёсткой привязки блоков "снаружи" к блокам "внутри" нет. Если вы пишете в блок №17, то он в первый раз окажется №27382, а во второй №2891. Эта рандомизация спасает от того повышенного износа часто используемых блоков. Кроме того, блоков "внутри" значительно больше, чем "снаружи", потому всегда есть некий резерв блоков. Даже когда многие блоки вышли из строя, флешка работает нормально. Просто требуется больше времени на восстановление, т.к. на старой флешке из записанных 1200 битов прочитываются не 1180 как в новой, а всего 1070. Однако, никаких механизмов для "вычёркивания плохих" там не предусмотрено.

И да, TRIM с этим всем слабо связана. Просто стирать данные долго, и есть смысл стереть данные после того, как они освободятся. Это как посуда, из которой вы едите. Когда вы её моете? После того, как поели, или перед тем, как поесть? Например я — после. Что-бы потом не заморачиваться. Ну а во флешках это не работает, потому перед записью приходится "мыть посуду", потому и флешки тормозят, если туда пиать помногу.

PS: подробнее, если кому интересно, можно почитать здесь: http://emulek.blogspot.ru/2013/04/ssd.html

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

21

drBatty пишет:

хватит чушь пороть, ей больно.

Это Вы себе говорите?

drBatty пишет:

Единицы писать невозможно, если в ячейке 0, то после записи 1, в ней так 0 и останется.

Меняй такую флешку по гарантии...
Вот Вам про ноли и единицы... с картинками.
http://theoryandpractice.ru/posts/667-k … et-fleshka
А вот ещё:
http://www.storelab-rc.ru/ssd-review.htm*
http://www.storelab-rc.ru/img/ssd-review_clip_image003.gif
Цитирую:

В SSD как и в USB Flash используются три типа памяти NAND: SLC (Single Level Cell), MLC (Multi Level Cell) и TLC (Three Level Cell). Отличие только в том, что SLC позволяет хранить в каждой ячейке только один бит информации, MLC – два, а TLC – три ячейки (использование разных уровней электрического заряда на плавающем затворе транзистора), что делает память MLC и TLC более дешёвой относительно ёмкости.

Вы пишите про разные технологии описывая гигантские по Вашим меркам напряжения требуемые для прошивки ПЗУ, и тут же пытаетесь применить эти знания на флешки и SSD.
В случае использования Флеш и SSD есть два агрегатных состояния каждой ячейки. Пустая или с информацией (0 и 1).
Рандомная запись в ячейки законов не отменяет, тем более она производится намного сложнее так как при записи/изменении ещё возможно проведение операций по вычищению блоков размером в 512Кб.