configuração ext4 “segura” para sistemas em execução sem supervisão

18

Eu tenho um sistema rodando linux que deve ser executado sem supervisão por longos períodos de tempo. O sistema usa cartão CF industrial para armazenamento. Na maioria das vezes não há gravações em flash, embora de vez em quando alguns dados / configurações de configuração possam ser modificados. O sistema deve ser resistente a falhas de energia.

Eu gostaria de usar o ext4 para isso. Qual é a melhor maneira de configurar o ext4 para este tipo de configuração? Tendo em mente que:

  • O desempenho é não um problema (especialmente desempenho de gravação)
  • Após a perda de energia, o sistema deve sempre inicializar em um estado limpo, mesmo que isso signifique que os dados gravados nos últimos segundos sejam perdidos
  • Se for possível evitar o fsck, melhor ainda.

(estou ciente desta questão relacionada: Evite a corrupção de dados na unidade ext4 / Linux na perda de energia )

    
por Grodriguez 03.02.2012 / 12:50

4 respostas

10

Eu trabalhei na construção de um sistema para automação em barcos, e havia um pré-requisito: em todos os momentos a energia poderia diminuir e tudo deveria se reorganizar corretamente.

Minha solução foi criar um sistema initramfs baseado no Gentoo, com apenas uma pasta rw para aplicativos e configurações (essa é a abordagem usada por todos os fornecedores de roteadores / firewalls). Essa solução adiciona uma camada adicional de complexidade ao lidar com atualizações do sistema, mas garante que o sistema sempre será inicializado.

Com relação à sua pergunta específica, você deve manter o EXT4 ativado pelo diário para ter um fsck mais rápido (de algumas secods), use a opção de montagem data = journal , reduza o < opção strong> commit ou use a opção sync para manter os buffers sempre vazios.

Refs: link

    
por 07.02.2012 / 08:17
12

Vou começar dizendo que, no que me diz respeito, o EXT (em todas as suas encarnações) é um sistema de arquivos muito horrível - eu já vi mais casos de sistema de arquivos " interessantes " corrupção no número relativamente pequeno de sistemas Linux / EXT {2,3,4} que eu administrei do que eu tenho no relativamente grande número de sistemas de arquivos Not-EXT que tive a oportunidade de usar.
Se for possível, tente escolher um sistema de arquivos mais robusto. Você vai se agradecer quando o inevitável acontecer.

Assim sendo, e com todos os meus preconceitos pessoais expostos e deixados de lado, o EXT4 tem três recursos que podem ajudá-lo:

  • Registro no diário
    EXT4 pode ser um sistema de arquivos Journaled, se você quiser. Habilite o recurso de registro no diário (e defina especificamente o modo de registro no diário de dados como journal via tune2fs ou como uma opção de montagem). Isso gera um impacto no desempenho, pois todos os dados devem ser gravados no diário EXT antes que ele seja "consolidado" no sistema de arquivos (cada gravação ocorre basicamente duas vezes), mas garante que você sempre possa recuperar até o replay do diário problemas.

  • SYNC hronous Montagens
    Quando a segurança é fundamental, montar um sistema de arquivos com a opção sync é sempre uma boa ideia. Isso força todas as gravações no disco imediatamente - novamente, isso é um impacto no desempenho, mas é uma boa ideia se você espera que falhas de energia ou estranhos aleatórios arranquem o cartão CF.

  • Limite o máximo possível de sistemas de arquivos graváveis Este não é específico para EXT, mas a filosofia Linux muito comum de "apenas criar uma grande partição raiz e despejar tudo nela" é, francamente, estúpida . Crie uma estrutura de sistema de arquivos adequada ( / , /var , /usr , /home , etc ...) e monte o máximo possível de sistemas de arquivos somente leitura.
    Isso costumava ser um conselho comum para sistemas unix por questões de segurança, mas no seu caso tem um benefício adicional: você não pode corromper um sistema de arquivos se não puder escrever nele.

por 07.02.2012 / 08:30
7

O EXT4 não parece a melhor escolha para o seu sistema; Eu sugeriria olhar para um sistema de arquivos estruturado em log. Eles funcionam tratando dados como um fluxo constante de atualizações de gravação em um fluxo virtual, com um ponteiro que aponta o 'cabeçalho' mais recente. As atualizações ocorrem gravando dados e metadados no armazenamento e atualizando o ponteiro. No caso de uma falha após a gravação, mas antes da atualização do ponteiro, os dados mais recentes são perdidos, mas o sistema de arquivos é consistente.

Dois sistemas de arquivos candidatos são LogFS e NILFS . Ambos estão disponíveis no kernel Linux da linha principal.

    
por 06.02.2012 / 03:32
1

Estou intrigado com o dispositivo do seu prédio. Você está atrás da confiabilidade de um dispositivo incorporado ao usar um sistema de arquivos que não é realmente adequado.

O Ext4 (e sua família) é um excelente sistema de arquivos de uso geral com (eu acho) muitos bilhões de horas de uso em hardware e casos de uso variados. No entanto, o que você está pedindo realmente não se encaixa com o ext4. Os ponteiros do voretaq7 e do Giovanni ajudarão a tirar o melhor proveito do uso do ext4 se for necessário, mas a resposta real é usar algo mais adequado às suas necessidades. Steve deu-lhe algumas opções. Se você continuar a puxar energia de um ext4 FS, você acabará por ficar confuso.

Se este for um sistema que você está construindo, você deve escolher usar algo mais adequado ou aceitar que haverá problemas em algum momento. Pode ser apenas uma queda de energia de 100 ou 1 em 1000. Isso pode ser bom o suficiente para você assumir o risco e o dispositivo provavelmente funcionará por um longo período (anos) sem qualquer intervenção manual.

Se este é um produto que você pretende implantar amplamente / trazer para o mercado, você tem a opção de usar algo mais adequado. Ou você toma a decisão de negócios de dar suporte a uma porcentagem dos dispositivos que serão acionados a cada ano e precisam de substituição ou intervenção manual para recuperá-los.

    
por 07.02.2012 / 22:11

Tags