#filesystems #embedded #embedded-linux
#файловые системы #встроенный #встроенный-linux
Вопрос:
Я немного поиграл с UBIFS. Один тест, который я написал, был стресс-тестом, чтобы увидеть, работает ли выравнивание износа в системе, как ожидалось. В двух словах тест
- Записывает файл со случайными данными в файловую систему, расположенную на томе ubi
- Проверяет содержимое файла
- Удаляет файл
Этот тест выполняется определенное количество раз (около 200 000). «Загруженный» том UBI был смонтирован на другом томе UBI. Как и ожидалось, максимальное количество стираний для «загруженного» тома ubi увеличилось. Я также заметил, что максимальное количество стираний для тома UBI в месте монтирования также увеличилось. Я бы этого не ожидал.
-
Кто-нибудь знает, что может вызвать это? Что-то в UBI? Или какой-то механизм в ядре Linux (например, ведение журнала)?
-
Кто-нибудь видел подобное поведение с другими файловыми системами, в которых реализовано выравнивание износа?
Ответ №1:
Первое предположение состоит в том, что включено ведение журнала во время доступа или, возможно, во время модификации, если тесты выполняются в корне «загруженного» тома. Скорее всего, время доступа — монтирует внешнюю файловую систему (на самом деле, вероятно, обе) с -noatime.
Комментарии:
1. Хорошая идея, но я нашел это на странице руководства для mount: Параметры монтирования для ubifs: «UBIFS — это файловая система flash, которая работает поверх томов UBI. Обратите внимание, что atime не поддерживается и всегда отключен. »
2. Тогда я бы предположил, что это какая-то другая запись данных — это работающая система Linux; различные вещи записываются на диск (особенно, но не ограничиваясь / var). Вы могли бы смонтировать диск tmpfs / ramdisk поверх ubifs, используя unionfs или другую оверлейную файловую систему для обработки записей, а также посмотреть, что записывается и кем
Ответ №2:
Два процесса в системе обмениваются данными через доменный сокет Unix. Этот сокет создается в томе UBI «mount» (я не знаю подходящего местоположения). Когда я переместил этот файл в папку на основе оперативной памяти (т. Е. / tmp), запись на подключаемый том UBI прекратилась. Во время стресс-теста сокет существовал, но не использовался. Было бы неплохо знать, почему файловая система считает, что ей необходимо записывать файл после каждой синхронизации.