Как проверить файловую систему ubifs?

В ubifs нет программы fsck, так как же проверить целостность файловой системы при использовании ubifs?

Моя целевая система — ARM, Linux 3.2.58.


person SeanLabs    schedule 06.10.2015    source источник


Ответы (2)


Из того, что я нашел на веб-странице UBIFS :

целостность - UBIFS (как и UBI) подсчитывает контрольную сумму всего, что он записывает на флэш-носитель, чтобы гарантировать целостность данных, UBIFS не оставляет незамеченными повреждения данных или метаданных (JFFS2 делает то же самое); По умолчанию UBIFS проверяет CRC только метаданных при чтении с носителя, но не CRC данных; однако вы можете принудительно проверить данные с помощью CRC, используя один из параметров монтирования UBIFS — см. здесь.

Если вам нужно проверить файловую систему на наличие повреждений

Если ваша файловая система UBIFS смонтирована с параметром chk_data_crc, то простого cat $FILES > /dev/null должно быть достаточно. Если нет, вы можете только обнаружить и восстановить повреждение метаданных. Повреждение тела файла пройдет незамеченным.

Я использовал что-то вроде find / -type f -print -exec cat {} + > /dev/null

Если вам нужно восстановить поврежденные файлы

Снова из раздела обзор:

чтобы было понятнее, представьте себе, что вы стерли таблицу FAT в файловой системе FAT; для FAT FS это было бы фатально; но если вы аналогичным образом уничтожите индекс UBIFS, вы все равно можете его перестроить, хотя для этого потребуется специальный инструмент пользовательского пространства (хотя эта утилита на данный момент не реализована)

Хотя теоретически это возможно, вы сами по себе.

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

изменить: как я понял, драйвер Linux MTD уже применяет ECC (код исправления ошибок) к устройствам MTD.

Я считаю, что критерием потери данных является наличие более /sys/class/mtd/mtd*/ecc_strength ошибок на /sys/class/mtd/mtd*/ecc_step_size flash-блока. mtd_read() (это MTD API на один уровень ниже UBIFS) вернуть EUCLEAN в этом случае. Не знаю, существует ли инструмент, который использует его для проверки ошибок.

Предупреждения о "перевернутом бите", которые мы получаем, не означают, что потеря данных еще. Вы можете написать /sys/class/mtd/mtd*/bitflip_threshold, чтобы контролировать количество получаемых предупреждений.

person Victor Sergienko    schedule 05.09.2017

Вы можете просто прочитать все файлы, что, по сути, заставляет ubifs проверять их. Ср. рекомендации, данные в списке рассылки. Реализация ubifs восстановится, если это возможно. Однако нет гарантии, что это зафиксирует все искажения.

Теоретически ubifs никогда не должны быть повреждены, но на практике ошибки в ubifs или драйверах NAND все еще могут вызывать повреждения.

person Arnout    schedule 05.07.2016
comment
ubifs should never be corrupted - такой теории нет, и в оригинальном письме об этом не сказано. Вспышка изнашивается. ubifs может восстанавливать только метаданные, но не данные: linux-mtd.infradead. org/doc/ubifs.html#L_overview - person Victor Sergienko; 01.09.2017
comment
Предполагается, что UBI защищает от износа вспышки. Как минимум износ из-за циклов записи. Он еще не защищает от сбоев времени хранения (т. е. вообще без доступа к блоку в течение нескольких лет), но с uibihealthd это тоже будет покрыто. - person Arnout; 03.09.2017
comment
Пардон, предполагается? Что подтверждает это утверждение? Я, например, вчера был свидетелем порчи ubifs. - person Victor Sergienko; 03.09.2017
comment
Предполагается означает: предназначено. Но могут быть ошибки или типы повреждения флэш-памяти, о которых разработчики UBI не подумали. Что на самом деле НЕ должно происходить (то есть то, что всегда является ошибкой), так это то, что после выключения и включения файловая система больше не монтируется. Однако обратите внимание, что ошибка очень часто связана не с UBI/UBIFS, а с драйвером NAND. - person Arnout; 04.09.2017
comment
а) В этом вопросе никто не говорил о силовом цикле. 2) еще раз, чем вы можете подтвердить это утверждение? На данный момент в обзоре ubifs мы читаем: восстановимость - UBIFS может быть полностью восстановлена, если информация об индексировании будет повреждена [...] целостность - UBIFS [...] подсчитывает контрольные суммы всего, что пишет [...] не оставляет повреждения данных или метаданных остаются незамеченными. Это гораздо более слабое утверждение, чем ubifs should never be corrupted. Каков источник вашей информации? - person Victor Sergienko; 05.09.2017