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

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

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

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 (возможно, источниками) и шестнадцатеричным редактором, и удачи.

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

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

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

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

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

Другие вопросы по тегам