Как проверить файловую систему 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 могут по-прежнему вызывать повреждения.