В ubifs нет программы fsck, так как же проверить целостность файловой системы при использовании ubifs?
Моя целевая система — ARM, Linux 3.2.58.
В ubifs нет программы fsck, так как же проверить целостность файловой системы при использовании ubifs?
Моя целевая система — ARM, Linux 3.2.58.
Из того, что я нашел на веб-странице 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
, чтобы контролировать количество получаемых предупреждений.
Вы можете просто прочитать все файлы, что, по сути, заставляет ubifs проверять их. Ср. рекомендации, данные в списке рассылки. Реализация ubifs восстановится, если это возможно. Однако нет гарантии, что это зафиксирует все искажения.
Теоретически ubifs никогда не должны быть повреждены, но на практике ошибки в ubifs или драйверах NAND все еще могут вызывать повреждения.
ubifs should never be corrupted
- такой теории нет, и в оригинальном письме об этом не сказано. Вспышка изнашивается. ubifs может восстанавливать только метаданные, но не данные: linux-mtd.infradead. org/doc/ubifs.html#L_overview
- person Victor Sergienko; 01.09.2017
ubifs should never be corrupted
. Каков источник вашей информации?
- person Victor Sergienko; 05.09.2017