Posso tornar a unidade O / S READ ONLY e evitar a gravação de metadados?

5

Desculpe por fazer uma pergunta (provavelmente) estúpida. Eu sou um designer de hardware lutando com o fornecimento de energia de desligamento seguro para um sistema embarcado. Estou ciente de que o Linux normalmente faz um uso pesado do filesytem e faz atualizações de metadados sempre que um arquivo é lido, por exemplo, existe uma gravação consequencial para cada acesso de arquivo. Eu acredito que é possível atrasar essa gravação. Eu estou querendo saber o que acontece se este é um atraso indefinido (ou seja, isso nunca ocorre). Alguns antecedentes:

Por razões operacionais, é preferível não usar o backup de bateria para fornecer energia durante o desligamento do sistema - o que significa que estou olhando para um desligamento de 1 a 5 segundos. Isso não parece ser suficiente para que o O / S desligue o teste de nossos engenheiros de S / W. Somos todos "novos" para o Linux tendo usado RTOS embarcados convencionais até este ponto.

Vamos inicializar a partir de uma unidade FLASH e rodar em RAM na máquina, portanto, se tivermos zero gravações FLASH, normalmente não seria corrompido em uma falha de energia.

Armazenaremos dados NV do sistema em FLASH que é controlado por um pequeno micro que garante um sucesso de gravação em 10ms, o que é bom - no entanto, estou lutando para entender o que o Linux precisa gravar na unidade inicializada de - e se impedirmos que isso aconteça, que consequência haveria?

Infelizmente, estamos correndo de um cartão uSDHC no momento, então não posso simplesmente protegê-lo no hardware para descobrir: - (

Alguém pode me ajudar ou me indicar onde aprender essas informações.

    
por ian 12.02.2014 / 11:00

3 respostas

4

da página de manual de mount :

   -r, --read-only
          Mount the filesystem read-only. A synonym is -o ro.

          Note that, depending on the filesystem type, state and kernel
          behavior, the system may still write to the device. For example,
          Ext3 or ext4 will replay its journal  if  the  filesystem  is
          dirty. To prevent this kind of write access, you may want to mount
          ext3 or ext4 filesystem with "ro,noload" mount options or set the
          block device to read-only mode, see command blockdev(8).

algumas partes da hierarquia do sistema de arquivos precisam ser graváveis (por exemplo, /var/log para colocar arquivos de log em; geralmente /tmp para armazenar arquivos temporários). use algumas partições não persistentes (também conhecido como ramdisk, tmpfs , ...) nesses casos.

    
por 12.02.2014 / 11:07
2

Linux normally makes a heavy use of the filesytem and makes metadata updates whenever a file is read -i.e. there is a consequential write for every file access.

Isso não está correto. Mais preciso: isso não é mais o padrão há anos. O padrão é que o tempo de acesso seja atualizado apenas se for mais antigo que mtime ou ctime ou mais antigo que 24 horas. A atualização do atime pode ser desativada completamente pela opção de montagem noatime .

Se você precisar desligar muito rápido, deve determinar quais etapas demoram e eliminar esses processos imediatamente (-SIGKILL). Os outros devem receber -SIGTERM e um ou dois segundos depois - SIGKILL também. Então o kernel deve ser capaz de fechar os sistemas de arquivos muito em breve.

    
por 12.02.2014 / 11:34
1

executar / no modo r / o é normal, é assim que o nó ovirt funciona, por exemplo. O problema seria ter uma configuração persistente sem remontar para r / w todas as vezes. E a solução é ter uma pequena partição r / w para arquivos de configuração e montar esses arquivos sobre os originais em /etc na inicialização.

    
por 12.02.2014 / 17:20