Безопасная запись на компактную флэш-память во встроенном Linux

Я разрабатываю встроенную систему Linux, которая работает с компактной флеш-памяти и tmpfs. Флэш-память монтируется только для чтения и обычно должна оставаться такой, но иногда мне нужно что-то записать во флеш-память.

Какие меры предосторожности мне следует предпринять при записи во флеш-память (через интерфейс PATA)? По причинам, которые я не могу вспомнить, я использую файловую систему ext4 , смонтированную с барьером = 1, данными = заказанным, nodelalloc, noatime, ro Это ужасная идея? Система должна быстро загружаться без вмешательства пользователя. Мне очень хочется сделать tune2fs -c 0 -i 0 . Это еще хуже?

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

Как лучше всего это скоординировать? flock выглядит многообещающе; это лучший способ пойти и о чем мне нужно беспокоиться? Я не хочу, чтобы устаревшая блокировка блокировала запись или оставляла файловую систему доступной для записи на неопределенное время.

Для пояснения: Под «случайной» записью я подразумеваю, что система может работать годами без необходимости ничего писать. Когда что-то записывается, это может быть пара сотен байт. В это время, система должна выдерживать непредсказуемые циклы включения питания без какого-либо вмешательства.

8
задан eater 2 February 2011 в 01:30
поделиться