Определение состояния неисправных SD-карт с помощью трассировки ядра?

Если вы не возражаете против перестановки порядков, следующее должно сработать

awk -F, '{print $3","$4}' <file name> | uniq -c

uniq -c подсчитывает количество повторений

Для вашего ввода, вывод будет

 2 VO,1000
 1 DT,1000
 1 VO,2000

При необходимости дальнейшее редактирование можно выполнить с помощью 2-го awk

6
26.06.2018, 20:48
1 ответ

This seems more an hardware/use case problem than something else. I bet common sense might be more important than Linux skills here. Are you doing heavy I/O in the cards, MySQL/Apache/compiling stuff...syslog/frequent system updates? -- comment by Rui F Ribeiro

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


  • Should I enable some debug logs for the MMC subsystem?
  • Is there a userspace tool that can sniff what's going on?
  • How do I make the error codes make more sense?

Единственная уверенность, которую я получил от атрибуции сбоев, исходила больше от "истории" и общих результатов, которые я получаю, а не от конкретных ошибок команд низкого -уровня. Которые в любом случае могут различаться между реализациями.

Я полагаю, что даже при использовании твердотельного накопителя разумной марки у меня возвращались неверные данные вместо ошибок ввода-вывода. Это, безусловно, был один из известных режимов отказа многих твердотельных накопителей. [2013 ][ 2017 ]. (Возможно, это удивит людей, знакомых с современными файловыми системами и реализациями баз данных, которые часто надеются на более управляемый набор режимов отказа ). Обратите внимание, что документы, на которые я ссылаюсь здесь, сосредоточены на возвращенных данных; они больше не делали различий в сообщениях об ошибках, за исключением различия мертвого диска / поврежденного сектора, которое вы уже измерили.

Неисправность моего твердотельного накопителя была связана с «восстановленным продавцом» ноутбуком, который уже был «отремонтирован» один раз и снова начал показывать сбои -, что, вероятно, вызывало перебои в подаче питания на диск, как и в связанных документах. Возможно, он также не смог обеспечить стабильные уровни напряжения.

I'm trying to understand if it's a matter of bad SD cards or if there might be something wrong with the controller driver that is pushing the cards to corruption.

Хорошее оборудование с хорошим сетевым питанием не приводит к выходу из строя хорошей SD-карты -, если только вы не слишком нагружаете ее. Рабочая нагрузка — очень важная переменная , которую вы [изначально] не упомянули . Эти карты памяти представляют собой относительно небольшие, обычно дешевые аппаратные средства, предназначенные для относительно не -требовательного использования для хранения мультимедийных файлов (, отсюда MMC, «MultiMediaCard» ). Особенно более дешевые не обязательно будут очень хороши в «выравнивании износа -» (, перераспределяя нагрузку с логических блоков горячей точки на большое количество физических блоков ).

Я измерил рабочую нагрузку с помощью быстрого хака, запланировав выполнение ежедневного задания cron tunefs -l /dev/mmcblk0p4 | grep writes >> /var/log/writes.log.

Но если мы отложим в сторону рабочую нагрузку, вы будете правы, исходя из информации, которую вы предоставили, рассмотреть возможную проблему со стороны контроллера -. У меня были повторяющиеся поврежденные сектора на SD-карте из-за записи с карманного устройства, возможно, когда его батарея была разряжена. Это была карта от одного имени бренда. Сектора можно было восстановить, и я все еще использую ту же карту. У меня также был какой-то временный сбой инициализации на этой карте, я думаю, что это тоже было связано с поврежденными секторами (после того, как я преодолел сбой инициализации ), но я мог ошибаться -вспоминая.

I'm having a series of failing/sometimes failing SD cards.

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

После рабочей нагрузки первой переменной, которой вы управляете, является карта.

Написано в 2018 году, что существует один глобальный бренд, который можно считать «каноническим» для SD-карт-

см. результаты в:https://www.amazon.com/s/field-keywords=sd+card

-и мы надеемся, что у вас есть ряд розничных каналов, которые можно считать... по крайней мере, достаточно надежными для целей сравнения. (Помня о том, что различные популярные интернет-магазины действуют как «торговые площадки», а также продают собственные товары ).

Официальное оборудование Raspbery PI также может быть приемлемо. т.е. SD-карты, официально продаваемые для запуска Linux на небольшом настольном компьютере, которые, как сообщается, работают хорошо. (Более требовательная рабочая нагрузка, чем файлы мультимедиа ).

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

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


The failing ones (can occasionally still be mounted)

Обратите внимание, что в самом общем случае, если вы считаете, что устройство было написано плохо, вы можете попытаться сбросить эту ошибку:

  1. восстановить какие данные можно при желании
  2. , а затем прекратите попытки чтения поврежденных блоков. просто воссоздайте всю таблицу разделов форматирования (+ файловую систему ).
  3. но если вы не уверены и думаете, что устройство все еще умирает, вы, вероятно, также захотите его протестировать.

Если у вас хорошее встроенное оборудование MMC, как у вас, вы можете использовать команду Linux blkdiscardкак более эффективный способ проверить стирание всех блоков устройства перед его «переформатированием».. Но оперативность — единственное преимущество, по сравнению с проверкой на ошибки при перезаписи всего диска нулями, т.е. dd bs=1M if=/dev/zero of=/dev/mmcblk0. (Кроме того, что устраняется необходимость записывать стертые блоки, blkdiscardтеоретически также может впоследствии обеспечивать более «-новую» производительность и повышать срок службы, давая устройству немного больше свободы ).

(Если это был диск SATA -, существует специальная команда «безопасного стирания» для удаления всего содержимого логического диска (, см.man hdparm). Однако я не знаю ни одной эквивалентной команды MMC. Некоторые поставщики твердотельных накопителей воспользовались этой командой для сброса своих таблиц сопоставления блоков в качестве обходного пути, если им не удалось восстановить производительность «как -new» с эквивалентной последовательностью blkdiscard. Обратите внимание, что эта команда не обязательно проверяет полное -стирание диска. В некоторых случаях удаляется только внутренний ключ шифрования ).

Поскольку вы спросили, как выглядят мои ошибки

My SanDisk micro -SD-карта недавно снова заработала. Похоже, что приведенные ниже конкретные ошибки были вызваны ненадежным соединением.Проблема решилась удалением и повторной -вставкой микро -SD в переходник micro -SD на SD, после суеверного обдува всех металлических колодок.

В ридере на моем ноутбуке Dell Latitude E5450(sdhci-pciдрайвер ядра, версия ядра Fedora Linux около v4.17 ), не удалось инициализировать карту. На моем SheevaPlug (те же сведения об аппаратном и программном обеспечении, что и в этом вопросе ), эта карта, похоже, смогла инициализироваться, но показала ошибки ввода-вывода. Возможно на Dell ошибка -обработка тайм-аутов настроена не совсем корректно.

Делл:

[    2.436566] mmc0: Unknown controller version (3). You may experience problems.
[    2.449019] mmc0: SDHCI controller on PCI [0000:01:00.0] using ADMA
...
[509227.374012] mmc0: error -84 whilst initialising SD card
[509227.621510] mmc0: error -84 whilst initialising SD card
[509227.865472] mmc0: error -84 whilst initialising SD card
[509228.142120] mmc0: error -84 whilst initialising SD card

Шиваплаг:

[6076613.118617] mmcblk0: mmc0:aaaa SC16G 14.8 GiB 
[6076613.295811] mmcblk0: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
[6076613.545740] mmcblk0: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
[6076613.555301] mmcblk0: retrying using single block read
[6076613.728413] mmcblk0: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
[6076613.737965] blk_update_request: I/O error, dev mmcblk0, sector 0
[6076613.912043] mmcblk0: error -110 transferring data, sector 1, nr 7, cmd response 0x900, card status 0x0
[6076613.921599] blk_update_request: I/O error, dev mmcblk0, sector 1
...
6
27.01.2020, 20:27

Теги

Похожие вопросы