Вопрос или проблема
После некорректного отключения устройства на базе SD-карты я извлекла SD-карту, чтобы fsck
корневую файловую систему. Это привело к вариациям следующего:
e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: восстановление журнала
Флаг needs_recovery суперкнопки очищен, но журнал содержит данные.
Пробежать журнал все равно<y>? нет
Очистить журнал<y>? нет
e2fsck: не удалось установить флаги суперкнопки на /dev/sdc2
Здесь я ответила “нет” оба раза, но нет ни одной последовательности “да/нет”, которая не привела бы к тому же результату.
Файловая система может быть смонтирована и на поверхностный взгляд выглядит нормально; она также работает хорошо на устройстве, и это корневая файловая система (фактически, как оказалось, не совсем нормально, см. комментарии; кратко: некоторые безвозвратно поврежденные директории).
Я использовала dd
, чтобы скопировать раздел (8 ГБ) в файл, и попыталась запустить fsck на этом файле. Интересно:
e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: восстановление журнала
Очистка сиротского inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Очистка сиротского inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Очистка сиротского inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Очистка сиротского inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Установка количества свободных inode на 406127 (было 408580)
Установка количества свободных блоков на 1305622 (было 1347486)
plush.rootfs: чисто, 60209/466336 файлов, 604906/1910528 блоков (проверить после следующего монтирования)
Последующая команда fsck
прошла успешно, образ может быть смонтирован, и fsck -f
после этого также проходит.
Но файловая система на карте, с которой был создан образ, по-прежнему имеет ту же проблему — за исключением того, что systemd-fsck
, который происходит во время загрузки, фиксирует файловую систему как “чистую”. Позже, однако, при правильном завершении работы, когда я извлекла карту и повторно попыталась запустить fsck
с другого компьютера, появилась та же ошибка.
Каждый раз, когда оригинал смонтирован на другой машине, syslog фиксирует:
kernel: EXT4-fs (sdc2): 4 сиротских inode удалены
kernel: EXT4-fs (sdc2): восстановление завершено
Поскольку у меня все данные сохранены, я открыта к любым предложениям. Я могла бы просто забыть об этом и перезаписать раздел с, по-видимому, исправленного образа, но это не кажется очень удовлетворительным решением, так как подразумевает, что fsck криптически не смог решить, казалось бы, незначительную проблему.
Я подозреваю, что это превратится в “запрос на официальную документацию” касательно таких вещей, как needs recovery_flag (или просто “Что это значит?”), так что любые предложения в этом направлении будут оценены.
Я только что столкнулась с той же проблемой. После устранения неисправности с мейнтейнером e2fsck
мы поняли, что SD-карта была повреждена. Она принимала запись без ошибок, но на самом деле данные не записывались на карту. SD-карта фактически была только для чтения.
Похоже, что карта вошла в какой-то режим безопасного отключения, где данные все еще можно было прочитать, но ничего записать.
Сообщение e2fsck
unable to set superblock flags
означает, что он попытался записать флаги в суперкнопку, чтобы пометить журнал как обработанный, что произошло без ошибок, но когда он снова попытался прочитать суперкнопку, она все еще указывала на то, что журнал необходимо воспроизвести. Другими словами, изменения, записанные в суперкнопке, не были сохранены на носителе.
Карта, которую я использую и у которой возникла эта проблема, это Samsung Evo 16GB microSD, что я упоминаю, на случай если это распространенная проблема для этих карт.
Я смогла проверить это, использовав dd
, чтобы записать 4096 байт из /dev/zero
на карту в блок 0, затем я прочитала данные с карты и вместо того, чтобы получить все нули, как следовало бы, я по-прежнему получила оригинальную неизмененную суперкнопку ext4.
Я сейчас переношу данные на новую карту и затем посмотрю, смогу ли я получить замену от Samsung, которые, как кажется, предлагают 10-летнюю гарантию на SD-карты.
ОБНОВЛЕНИЕ: Samsung заменил 16-гигабайтную карту на 32-гигабайтную из той же серии Evo, так что жаловаться мне не на что!
Я знаю, что это старая тема, но я подумала, что могла бы предложить немного информации.
Похоже, что это способ, которым SD-карты умирают естественным образом. Количество циклов чтения/записи, которое могут выдержать SD-карты, существенно меньше, чем у большинства других сред, которые считаются ‘чтением/записью’. Когда это исчерпано, карта перейдет в режим только для чтения, но не сообщит вам об этом. Многие вещи подумают, что они записывают на карту благодаря кэшированию операционной системы и т.п., но ничего никогда не фиксируется.
Отличный способ убить SD-карту – это смонтировать её как раздел подкачки или что-то с интенсивным вводом-выводом. Вы будете удивлены, как быстро вы сможете убить карту таким образом. Я обнаружила, что работа к Knoppix с SD-карты или USB-флэш-диск продлится всего месяц или два, в зависимости от качества карты и интенсивности использования Knoppix. (С тех пор я переключилась на запуск Knoppix с USB SSD-диска, который работает уже несколько лет).
В моем случае проблема исчезла после использования карты с другим адаптером microSD-USB. После этого она также работала нормально с первым адаптером. Я предполагаю, что в моем случае это была проблема плохого контакта.
У меня была та же проблема, невозможно смонтировать, невозможно прочитать суперкнопку, невозможно установить флаги суперкнопки, невозможно использовать резервную копию суперкнопки.
Проблема, с которой я столкнулась, заключалась в переключателе блокировки записи на адаптере карты 😉
Моя проблема заключалась в старом считывателе SD-карт с картой, которая была слишком большой для считывателя. У меня была карта на 64 ГБ, а считыватель не поддерживал больше 32 ГБ.
Дважды я сталкивалась с аналогичными проблемами с microSD, и оказалось, что проблема была в адаптере SD, а не в microSD. Замена на другой адаптер SD, даже когда первый адаптер был той же марки, что и microSD, решила проблему с невозможностью записать флаги суперкнопки и возникновением ошибок ввода-вывода.
Ответ или решение
Когда вы сталкиваетесь с ошибкой fsck
, сообщающей о том, что "не удалось установить флаги суперблока", это может быть вызвано рядом причин, каждая из которых требует тщательного анализа. Следует рассмотреть следующие аспекты и возможные решения:
-
Проблемы с SD-картой и адаптером:
- Если SD-карта или адаптер повреждены или работают неправильно, это может вызвать проблемы с записью. Проверьте, не активирован ли переключатель защиты от записи на адаптере. Попробуйте использовать другой адаптер или даже другой компьютер, чтобы исключить возможность проблем с устройством, к которому подключён кардридер.
-
Недостаток циклов записи:
- Как упоминали другие пользователи, SD-карты имеют ограниченное количество циклов записи. Если карта исчерпала свой ресурс, она может перейти в режим только для чтения, даже если операционная система не уведомляет об этом. Попробуйте выполнить тест на чтение и запись, например, используя команду
dd
, чтобы записать данные и сразу же прочитать их обратно. Если данные не совпадают, это указывает на проблему с записью.
- Как упоминали другие пользователи, SD-карты имеют ограниченное количество циклов записи. Если карта исчерпала свой ресурс, она может перейти в режим только для чтения, даже если операционная система не уведомляет об этом. Попробуйте выполнить тест на чтение и запись, например, используя команду
-
Использование нового кардридера:
- Некоторые пользователи заметили, что смена кардридера или использование другого USB-адаптера может решить проблему. Это может быть связано с плохими контактами или несовместимостью с определёнными картами.
-
Коррупция файловой системы:
- Возможно, на SD-карте были повреждены или потеряны данные в результате неправильного завершения работы устройства. Если вы можете создать образ диска и выполнить
fsck
на этом образе, как вы уже сделали, это может помочь. Если файловая система на образе исправна, вы можете использовать её для восстановления данных или повторного форматирования карты.
- Возможно, на SD-карте были повреждены или потеряны данные в результате неправильного завершения работы устройства. Если вы можете создать образ диска и выполнить
-
Обновление и использование более новых версий утилит:
- Проверьте, используете ли вы последнюю версию
e2fsck
или других утилит для проверки файловых систем. Иногда обновление программного обеспечения может исправить некоторые нестабильности и ошибки.
- Проверьте, используете ли вы последнюю версию
-
Замена SD-карты:
- Если все вышеперечисленные меры не дают результатов, возможно, стоит рассмотреть замену SD-карты. Поскольку у вас есть резервные копии данных, вы можете безопасно перейти на новую карту.
-
Обращение к производителю:
- Если ваша SD-карта всё ещё находится на гарантии, обратитесь к производителю, возможно, она подлежит замене. Многие производители, как Samsung, предлагают гарантии на свои карты, что делает их замену практичной.
В итоге, ваше решение зависит от состояния SD-карты и доступных вам ресурсов. Не забывайте регулярно создавать резервные копии важных данных, чтобы избежать потерь в будущем.