Китайский покер: флеш-фальш

⏱ 3 мин. на чтение

Дочка прикупила под диплом флешку. Всё работало на старте, а потом вдруг или не записывает — зависает, или считать не даёт, что записано, тоже зависает. Знакомо? Бывало?

Я тоже с таким сталкивался. В своё время Pleer.ru мне пару флешек по 16Гб продал. А на поверку они по 4Гб были. В то время ещё просто писали другое, а сейчас уже контроллер фигачат, чтобы их «истину» показывал.

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

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

Проверка на наличие битых секторов (Поверхностный тест)

Битые сектора — это физически повреждённые блоки памяти, на которые уже нельзя записать информацию.

Что понадобится: Утилита badblocks, которая уже есть в любой системе Linux. Также мы используем lsblk для идентификации диска.

Следуйте инструкции:

Вставьте и размонтируйте флешку. Сначала узнайте имя устройства в системе: lsblk. Вы увидите список дисков, например: sda, sdb. Флешку можно опознать по её размеру. Пусть для примера она называется sdb.

Теперь обязательно размонтируйте её (замените sdb1 на вашу конкретную секцию):

sudo umount /dev/sdb1

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

sudo badblocks -svn /dev/sdb

где,
    -s — показывает прогресс.
    -v — подробный режим.
    -n — неразрушающий режим (чтение-запись).

Интерпретируйте результат: Если утилита не выдаёт никаких сообщений, кроме строк прогресса, а по завершении теста просто возвращает приглашение командной строки — это отличный результат, означающий, что битых секторов нет. Если в процессе проверки появляются сообщения вида «блок номер N — bad», значит, на флешке есть повреждённые сектора, и полагаться на неё для хранения важных данных уже нельзя.

Выявление фальшивых флешек (Расширенный тест)

Попробуем выявить, что есть истина. Поддельные флешки — это устройства с изменённым контроллером, которые сообщают системе неверный, завышенный объём (например, 512 ГБ вместо реальных 32 ГБ). При попытке записать больше реального объёма старые данные на них начинают затираться новыми. Для выявления таких подделок существует пакет F3 (Fight Flash Fraud), который нужно установить отдельно:

sudo apt update && sudo apt install f3

Метод 1: Самая быстрая проверка с помощью f3probe (рекомендуется)

Важно, все данные будет стёрты!

Так же как в первом случае определите устройство и обязательно размонтируйте, а потом запускайте:

sudo f3probe --destructive --time-ops /dev/sdb

По итогу программа сообщит, является ли флешка подделкой или нет, и укажет её реальный объём.

Метод 2: Традиционная проверка с помощью f3write и f3read

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

Вставьте флешку и смонтируйте её.

Заполните всю свободную область тестовыми файлами (в примере команды поправьте путь к флешке):

f3write /media/user/ФЛЕШКА/

После окончания записи запустите проверку:

f3read /media/user/ФЛЕШКА/

Если в конце проверки вы увидите ошибки «Data lost» или «Data mismatch«, это верный признак того, что флешка поддельная и её реальный объём меньше заявленного.

Что ещё?

Также для большинства задач, помимо командной строки, можно воспользоваться программой gnome-disk-utility (gnome-disks). В ней есть простой графический интерфейс для тестирования дисков, включая бенчмарк скорости.

А что у меня с флешкой дочки?

Флешка полностью нерабочая.

Тест не смог записать/прочитать ни одного блока (Usable size: 0.00 Byte).

Выбросить.