Форматирование SD-карты с помощью mkfs зависает на неопределённое время.

Вопрос или проблема

Я пытаюсь форматировать SD-карту, следуя этой инструкции. Мне удается успешно создать таблицу разделов, но при попытке форматировать раздел Linux с помощью mkfs появляется следующий вывод:

mke2fs 1.42.9 (4-Feb-2014)
Стирание блоков устройства:    4096/1900544

кажется, что процесс зависает на неопределенное время. Я оставлял процесс работать некоторое время, но ничего не изменялось. Если я извлекаю SD-карту, то mkfs выводит ожидаемый результат в терминал:

mke2fs 1.42.9 (4-Feb-2014)
Стирание блоков устройства: ошибка - ошибка ввода/вывода
Предупреждение: не удалось стереть сектор 2: Попытка записи блока в файловую систему привела к короткой записи
предупреждение: 512 блоков не использовано.

Метка файловой системы=
Тип ОС: Linux
Размер блока=4096 (лог=2)
Размер фрагмента=4096 (лог=2)
Шаг=0 блоков, Ширина полосы=0 блоков
476064 инодов, 1900544 блоков
95026 блоков (5.00%) зарезервировано для суперпользователя
Первый блок данных=0
Максимальное количество блоков файловой системы=1946157056
58 групп блоков
32768 блоков на группу, 32768 фрагментов на группу
8208 инодов на группу
Резервные суперблоки хранятся в блоках: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Выделение таблиц групп: выполнено                            
Предупреждение: не удалось прочитать блок 0: Попытка чтения блока из файловой системы привела к короткому чтению
Предупреждение: не удалось стереть сектор 0: Попытка записи блока в файловую систему привела к короткой записи
Запись таблиц инодов: выполнено                            
Создание журнала (32768 блоков): выполнено
Запись суперблоков и информации учета файловой системы:  0/58
Предупреждение, возникли проблемы с записью суперблоков.

Почему mkfs сообщает, что мы “стираем” блоки и что может вызывать зависание?


РЕДАКТИРОВАТЬ

Мне удается успешно создать два раздела – один на 100MB и другой на 7.3GB. Затем я могу форматировать и монтировать 100MB раздел как FAT32 – это ext4 7.3GB раздел вызывает эти проблемы.

dmesg заполнен:

[ 9350.097112] mmc0: Получен прерывание данных 0x02000000, несмотря на то, что операция с данными не выполнялась.
[ 9360.122946] mmc0: Тайм-аут ожидания аппаратного прерывания.
[ 9360.125083] mmc_erase: ошибка стирания -110, статус 0x0
[ 9360.125086] завершение запроса: ошибка ввода/вывода, устройство mmcblk0, сектор 3096576

РЕДАКТИРОВАТЬ 2

Похоже, проблема проявляется, когда я пытаюсь форматировать как ext4. Если я форматирую 7.3GB раздел как FAT32, операция проходит успешно.

РЕДАКТИРОВАТЬ 2

Интересно, что когда я вставил SD-карту в BeagleBone и отформатировал ее точно так же, как на Mint, все прошло безупречно. Я извлек SD-карту, вновь вставил в мой основной компьютер и завершил копирование данных на вновь созданные и отформатированные разделы.

Я на самом деле подозреваю, что ваша проблема связана с хорошо известной ошибкой повреждения ext4 в ядрах 3 и 4. Обратите внимание на эту ветку,

http://bugzilla.kernel.org/show_bug.cgi?id=89621

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

Тем не менее, предположительно они исправлены в 4.0.3.

“4.0.3 включает исправление критической ошибки ext4, которая может привести к большой потере данных.”

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785672

Существуют и другие ошибки ext4, включая ошибки, исправленные на 30 ноября [2015 года].

https://lists.ubuntu.com/archives/foundations-bugs/2015-November/259035.html

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

http://www.pointsoftware.ch/en/4-ext4-vs-ext3-filesystem-and-why-delayed-allocation-is-bad/

Я бы протестировал карту с другой файловой системой, нежели ext4, возможно ext3.

Эти систематические ошибки с ext4 – одна из причин, почему я использую linux-image-4.3.0-0.bpo.1-amd64 из репозитория backports в Jessie на моей серверной ферме на работе.

Ваша версия в частности, ядро 3.13, по-видимому, более подвержена этой ошибке.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1298972
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389787

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

SD-карты также выходят из строя из-за износа, и из-за журналируемой файловой системы, система ext4fs не является идеальной для SD-карты. Как любопытство, я использую Lamobo R1 и использую SD-карту только для загрузки ядра, с SSD-диском.

http://linux-sunxi.org/Lamobo_R1

Ответ или решение

Форматирование SD-карты с использованием mkfs продолжается бесконечно — проблема, с которой сталкиваются многие пользователи, пытающиеся создать файловые системы на своих устройствах. Давайте разберёмся в этой проблематике, учитывая все доступные детали и контекст, особенно связанные с важностью выбора правильной конфигурации системы и аппаратного обеспечения.

Теория

На первый взгляд, комманда mkfs должна корректно выполнять свою задачу — создание файловой системы. Однако, в вашем случае, она зависает при выполнении операции “discarding device blocks”. Как правило, данная функция используется для очистки блоков памяти, чтобы они были готовы к записи, обеспечивая оптимизацию памяти, особенно в устройствах с флеш-памятью. Если процесс останавливается, возможно несколько причин: от аппаратных проблем до ошибок в программе.

Возможные причины зависания:

  1. Аппаратные проблемы: SD-карты подвержены износу, и со временем могут демонстрировать сбои, особенно если использовалась недорогая память с низкими циклами перезаписи.

  2. Программные баги: Существуют известные баги в файловых системах, особенно с ext4, описанные в различных сообщениях о багах. Характерно для версий ядра Linux 3.x и 4.x, где данные баги приводили к порче данных или бесконечным циклам операций.

  3. Неоптимальная файловая система для флеш-памяти: Journaling системы, как например ext4, не подходят для SD-карт из-за многократных операций записи-стирания, что может ускорить износ карты.

Пример

В вашей ситуации предположительно возник баг при работе с ext4 на ядре версии 3.13. dmesg лог показывает ошибки аппаратного характера — прерывания данных и тайм-ауты ожидания аппаратного прерывания. Эти ошибки указывают на возможные проблемы при взаимодействии с флеш-памятью на уровне драйвера или контроллера SD-карты.

Как было замечено, проблема исчезла, когда та же операция была проведена на другом устройстве (BeagleBone), с тем же набором команд и конфигурацией создана и отформатирована ext4 файловая система без сбоев. Это подчёркивает, что проблема может быть уникальной для вашего текущего аппаратного обеспечения или конфигурации системы.

Применение

Рассмотрим способы, как можно решить или обойти эту проблему:

  1. Проверка SD-карты: Используйте программы для проверки целостности карты, такие как badblocks, что может выявить возможные сбои в памяти, позволяя своевременно заменить карту.

  2. Попробовать другую файловую систему: Если ext4 вызывает сбои, попробуйте использовать ext3 или даже ext2 (если journaling не критично). Если работа будет проходить на устройстве с ограниченными операциями записи, FAT32 может быть тоже приемлемым вариантом.

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

  4. Альтернативные методики форматирования: Использование других машин или систем для создания и форматирования раздела может обойти специфические аппаратные ограничения.

  5. Отключение discard: Попробуйте отключить опцию discard (например с помощью флага -O ^discard при вызове mkfs), если ваш контроллер SD-карты не поддерживает данную операцию корректно.

  6. Использование SSD для критичных данных: Для устройств, которые будут активно использовать файловую систему, может быть более разумным использовать SSD-диск вместо SD-карты для более высокой надежности и долговечности.

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

Оцените материал
Добавить комментарий

Капча загружается...