Я разрабатываю встроенную систему Linux, которая работает с компактной флэш-памяти и tmpfs. Флэш-память монтируется только для чтения и обычно должна оставаться такой, но иногда мне нужно что-то записать во флэш-память.
Какие меры предосторожности следует соблюдать при записи во флэш-память (через интерфейс PATA)? По причинам, которые я не могу вспомнить, я использую файловую систему ext4
, смонтированную с помощью barrier=1,data=ordered,nodelalloc,noatime,ro
. Это ужасная идея? Система должна загружаться быстро с нулевым вмешательством. Я испытываю искушение сделать tune2fs -c 0 -i 0
. Это еще худшая идея?
Также, когда я что-то пишу, мне, очевидно, нужно перемонтировать флеш для чтения-записи, выполнить запись, затем перемонтировать только для чтения. Проблема в том, что для этого может потребоваться несколько разных процессов (как бинарных, так и шелл-скриптов С++). Ясно, что каждый процесс без разбора перемонтирует файловую систему только для чтения, когда это будет сделано, - плохая идея.
Как это лучше координировать? flock
выглядит многообещающе; это лучший способ пойти и о чем мне нужно беспокоиться? Я не хочу, чтобы устаревшая блокировка блокировала запись или оставляла файловую систему доступной для записи на неопределенный срок.
Для уточнения: под "периодическим" письмом я подразумеваю, что система может годами работать без необходимости что-либо писать. Когда что-то записывается, это может быть пара сотен байтов. В то же время система должна выдерживать непредсказуемые циклы питания без какого-либо вмешательства.