Как проверить физическое здоровье USB-накопителя в Linux?

Как проверить состояние здоровья USB-накопителя?

Как узнать, что USB сломан и не подлежит ремонту или ремонту?

25
задан peterh
20.04.2023 0:39 Количество просмотров материала 3210
Распечатать страницу

6 ответов

нет никакого способа запросить карту памяти USB для смарт-подобных параметров; я не знаю ни одной карты памяти, которая поддерживает это даже через общедоступное проприетарное программное обеспечение. Лучшее, что вы можете сделать, это проверить, что вы можете успешно читать + запись на все устройство с помощью badblocks.

https://en.wikipedia.org/wiki/Badblocks

вы хотите указать один из тестов записи, который сотрет все данные на флешке; сделайте резервную копию сначала.

Найти устройство, глядя на dmesg после подключения USB-накопителя; вы увидите имя устройства (скорее всего sd_, ie sdc, sdd и т. д.).) и сведения о производителе. Убедитесь, что вы используете правильное устройство!

Если флешка отформатирована с корректной файловой системой, вам, возможно, придется unmount Это первое.

пример синтаксиса, для USB палки, перечисленные как / dev / sdz, вывод информации о ходе, с data-destructive написать тест и журнал ошибок записывается на USB-накопитель.log:

sudo badblocks -w -s -o usbstick.log /dev/sdz

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

62
отвечен Brett Dikeman 2023-04-21 08:27

Via [ubuntu] ошибка проверки USB флэш-накопитель, Я в конце концов нашел это, что может быть полезно:

Я прибыл в блогах борьбы с флэш-мошенничества и SOSFakeFlash, которые рекомендуют программное обеспечение H2testw (см. здесь или здесь) для тестирования флэш-памяти. Я скачал H2testw и нашел две проблемы с ним: (1) это только для Windows, и (2) он не открыт источник. Тем не менее, его автор был достаточно любезен, чтобы включить текстовый файл, который объясняет, что он делает; эта страница о моей реализации GPLv3 этого алгоритма.

Моя реализация проста и надежна, и я не знаю точно, как F3 сравнивается с H2testw, так как я никогда не запускал H2testw. Я называю свою реализацию F3, что является сокращением от Fight Flash Fraud, или Fight Fake Flash.

добавление @pbhj: F3 находится в репозиториях Ubuntu. Он имеет две части, f3write пишет 1 ГБ файлы на устройство и f3read пытается прочитать их впоследствии. Таким образом, проверяются емкость и способность записывать и эффективно считывать данные.

18
отвечен sdaau 2023-04-21 10:44

Это зависит от режима отказа, я полагаю. Они дешевы не просто так.

в качестве USB-устройства, наблюдая за шиной через Диспетчер устройств в Windows,или выход dmesg в Linux скажет вам, если устройство даже распознается как подключен. Если это не так, то либо контроллер на борту или физические соединения нарушаются.

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

Если диск распознан как диск, но вы не можете его смонтировать, вы можете восстановить его с помощью fdisk и переписать таблицу разделов, а затем создать другую файловую систему.

Если вы ищете эквивалент С. М. А. Р. Т., тогда вы его не найдете. Контроллеры флешки дешевы. Они являются товарным хранилищем, и не предназначены для нормальной отказоустойчивости и интеллекта, которые имеют современные диски.

14
отвечен Matt Simmons 2023-04-21 13:01

многие сбои либо завершены, либо позволяют одному местоположению поддерживать несколько местоположений. Я написал небольшую программу для чтения случайных чисел, которая использует простое число для генератора псевдослучайных чисел, как для шаблонов, так и для адресов. Чтения расположены в шахматном порядке за записями на достаточное количество страниц, чтобы гарантировать, что я не тестирую кэш оперативной памяти в системе. Он еще не параметризован, просто настроен для устройства 64G в моей системе с 8G ram. Не стесняйтесь критиковать, параметризации, сделать его умнее.

это мощная проверка и быстрее, чем делать каждый байт снизу вверх, но также отличный генератор подкачки (свертывает почти все остальное). Я временно поставил swapiness на 1, и он стал медленнее, но более терпимым для других приложений. Любые советы о том, как настроить против swapout также будут оценены:

$ судо КШ -с 'Эхо 1 > /труды/системы/ВМ/значение из файла'

$ cat mysrc/test64g.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main( int argc, char **argv ){

        long long int mask = 0xFFFFFFFF8L ;    // 64Gb word
        long long int stag = 8413257 ;  // 8G / 1021
        long long int inc = 1021L ;     // prime < 1024

        long long int w_addr = 0L ;
        long long int r_addr = 0L ;
        long long int w_ct = 0L ;
        long long int r_ct = 0L ;
        long long int w_patt = 0xFEDCBA9876543210L ;
        long long int r_patt = 0xFEDCBA9876543210L ;
        long long int r_buf ;
        int fd, ret ;

        if ( argc < 2
          || argv[1] == NULL
          || 0 > ( fd = open( argv[1], O_RDWR ))){
                printf( "Fatal: Cannot open file  for RW.\n" );
                exit( 1 );
        }

        while ( 1 ){
                if ( (off_t)-1 == lseek( fd, w_addr & mask, SEEK_SET )){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Seek failed" );
                        exit( 2 );
                }

                if ( 8 != ( ret = write( fd, (void*)&w_patt, 8 ))){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Write failed" );
                        exit( 3 );
                }

                w_ct++ ;
                w_addr += inc ;
                w_patt += inc ;

                if ( ( w_ct - r_ct ) < stag ){
                        continue ;
                }

                if ( (off_t)-1 == lseek( fd, r_addr & mask, SEEK_SET )){
                        printf( "Seek to %llX\n", r_addr & mask );
                        perror( "Fatal: Seek failed" );
                        exit( 4 );
                }

                if ( 8 != ( ret = read( fd, (void*)&r_buf, 8 ))){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Read failed" );
                        exit( 5 );
                }

                if ( ( ++r_ct & 0XFFFFF ) == 0 ){
                        printf( "Completed %lld writes, %lld reads.\n", w_ct, r_ct );
                }

                if ( r_buf != r_patt ){
                        printf( "Data miscompare on read # %lld at address %llX:\nWas: %llX\nS/B: %llX\n\n", r_ct, r_addr & mask, r_buf, r_patt );
                }

                r_addr += inc ;
                r_patt += inc ;
        }
}
1
отвечен David Pickett 2023-04-21 15:18

USB диски довольно рудиментарный, там не так много, что может пойти не так на них! Как правило, если он отображается в виде диска, и вы можете отформатировать его, то он работает. Можно посмотреть портативная версия CrystalDiskInfo как это быстрый легкий инструмент анализа. Очень мало USB-накопители доложить хотя С. М. А. Р. Т. информация и тому подобное.

0
отвечен SimonJGreen 2023-04-21 17:35

по пути к сегодняшнему дню эта тема вызвала некоторые вопросы.

-сколько времени это займет (подразумевается под обсуждением возможности запуска в одночасье).

в настоящее время я тестирую USB 3.0 128G Sandisk с помощью sudo badblocks -w -s -o, Он подключен к моей USB 3 / USBC PCIe карте в старом Athlon 64x2. Таким образом, USB3 в USB3 на PCIe должен быть довольно быстрым.

вот моя консольная командная строка с 33% завершением:

Testing with pattern 0xaa: 33.35% done, 49:47 elapsed. (0/0/0 errors)

и снова позже:

Testing with pattern 0xaa: 54.10% done, 1:17:04 elapsed. (0/0/0 errors)

следующий сегмент:

Reading and comparing: 43.42% done, 2:23:44 elapsed. (0/0/0 errors)

этот процесс повторяется с oxaa, затем 0x55, 0xff и, наконец, 0x00.

ArchLinux дал безоговорочное заявление:

For some devices this will take a couple of days to complete.

N. B.: тестирование было начато около 8: 30 вечера, тестирование было завершено до 8: 45 утра следующего дня, завершив примерно в 12 часов для моей ситуации.

-разрушающий контроль это не единственный возможный метод.

Википедия предложила следующее утверждение:

badblocks -nvs /dev/sdb This would check the drive "sdb" in non-destructive read-write mode and display progress by writing out the block numbers as they are checked.

моя текущая man-страница дистрибутива подтверждает, что-n неразрушающий.

-n Use non-destructive read-write mode. By default only a non- destructive read-only test is done.

и, наконец, что оно того не стоит. заявление.

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

идея здесь заключается в том, что когда 1 ячейка выходит из строя, многие другие ячейки также достигают той же точки отказа. Сегодня одна ячейка вышла из строя, но вы используете ее обычно на некоторое время дольше, затем еще 3 ячейки выходят из строя, затем еще 24, затем 183, и, прежде чем вы это узнаете, массив памяти пронизан плохими пятнами. Есть только так много клеток, которые могут умереть раньше ваш полезный потенциал начинает падать, в конечном итоге быстро падает. как вы знаете, не больше клетки? так, сообщения здесь охраняют ваши данные, говоря, как только у вас есть плохая ячейка, вы в значительной степени сделано в отношении надежного хранения. Ваше использование может дать вам несколько месяцев.

это ваши данные.

HTH

0
отвечен Lee Dunbar 2023-04-21 19:52

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх