fsck не будет fsck (невозможно установить флаги суперблока)


12

После нечистого выключения на устройстве с SD-картой я вынул SD-карту fsckв корневую файловую систему. Это привело к различиям в следующем:

e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

Здесь я отвечал «нет» оба раза, но нет последовательности да / нет, которая не сразу приводит к одному и тому же результату.

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

Я ddсделал раздел (8 ГБ) в файл, и попытался fsck на этом. Что интересно:

e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

Последующее, fsckпрошедшее очистку, изображение может быть смонтировано, а fsck -fпосле этого также проходит.

Но файловая система на карте, из которой был создан необработанный образ блочной копии, все еще имеет ту же проблему - за исключением того, systemd-fsckчто во время загрузки регистрирует файловую систему как «чистую». Впоследствии, однако, правильное завершение работы, извлечение карты и повторная попытка fsckиз другого окна представляет ту же ошибку.

Всякий раз, когда оригинал монтируется на другом компьютере, примечания системного журнала:

kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

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

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


Что-нибудь в журналах ядра об ошибках устройства? Это не первый раз, когда SD-карта внезапно становится доступной только для чтения.
Марк Плотник

@MarkPlotnick Нет, и это доступно для записи. Последней вещью в журнале перед проблемой была перезагрузка системы (устройство без головы и после долгого перерыва реагировало apt upgrade). После этого он регистрирует нормальную загрузку - и systemd-fsck говорит «clean» (я это отредактирую), но попытка fsck вне этого контекста все равно не удалась.
Златовласка

Ваш fsck для копии очистил 4 инода, но исправил количество свободных инодов, уменьшив его на 2453 инода! Это огромно. Убедитесь, что устройство получает достаточно энергии.
Мех

@ meuh Я замечаю, что всякий раз, когда он монтируется в системный журнал большой коробки, ссылается на эти 4 inode (отредактировано выше). Некоторые вещи в fs оказались испорченными (обновленные модули ядра! \ O /), так что я записал новую карту и буду висеть на старой, если у меня будет возможность покопаться в этом подробнее. Это не совсем новая вещь - карта класса 10 с торговой маркой без торговой марки, находящаяся в (легком режиме) круглосуточно, возможно, в течение нескольких лет, так что ... Я не думаю, что есть какой-либо способ проверить, что карта SD окончательно не работает , но я думаю, это могло быть так. Власть должна быть в порядке, но может быть ненадежной при определенных условиях.
Златовласка

2
Разве это не плохо, когда сам инструмент, который должен решить вашу проблему, не работает из-за характера проблемы? Вывод: инструмент плохой и должен быть исправлен.
23 марта 17

Ответы:


11

Я просто столкнулся с этой же проблемой. После устранения проблемы с 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, так что, думаю, я не могу жаловаться слишком много!


«где данные еще можно было прочитать, но ничего не записать» -> fs была доступна для записи.
Златовласка

@goldilocks: Звучит так, будто ваш суперблок fs может быть недоступен для записи. Кроме того, моя fs оказалась доступной для записи благодаря кэшированию, и только после размонтирования и перемонтирования я заметил, что любые изменения были потеряны.
Malvineous

Это не было иллюзией из-за кеширования.
Златовласка

7

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

Кажется, именно так SD-карты умирают естественной смертью. Количество циклов чтения / записи, которые могут выдержать SD-карты, значительно ниже, чем у большинства других носителей, считающихся «чтение / запись». Когда это будет исчерпано, карта перейдет в режим только для чтения, но не проинформирует вас об этом. Многие будут думать, что они пишут на карту благодаря кэшированию ОС и т. Д., Но ничто не мешает.

Отличный способ убить SD-карту - это смонтировать ее как раздел подкачки или что-то очень интенсивное для чтения / записи. Вы будете удивлены, как быстро вы сможете убить карту таким образом. Я обнаружил, что запуск knoppix с SD-карты или USB-накопителя продлится всего месяц или два, в зависимости от качества карты и интенсивности использования knoppix. (С тех пор я перешел на запуск knoppix с USB-накопителя, который прослужил пару лет).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.