Linux: Existe um sistema de arquivos que pode suportar uma desconexão abrupta do dispositivo de armazenamento?

0

Isso pode ser mais apropriado no UNIX & Linux, então por favor me avise. Eu estou querendo saber se há um sistema de arquivos disponível no Linux que pode suportar (ou é projetado para ser capaz de lidar melhor) com desconexões rígidas de mídia SSD / flash? Uma boa resposta do segundo colocado seria a sugestão de uma configuração de parâmetros de montagem do sistema de arquivos que, com o ajuste adequado, pode ser melhor preparada para eventos de desconexão.

Para tornar meu caso de uso claro, um exemplo seria remover um cartão SD montado sem passar por um processo de desmontagem de software / SO. Obrigado!

    
por Jesse Adelman 11.03.2018 / 23:14

2 respostas

1

Este é um assunto assustador, com alguns caminhos para investigar ... vou cobrir os dois grandes.

Veja esta palestra do ELC 2015: Considerações sobre o sistema de arquivos para dispositivos incorporados .

Sistema de arquivos

O sistema de arquivos precisa manipular as gravações no disco com cuidado. Um problema pode se apresentar se, por exemplo, o comprimento do arquivo for estendido primeiro e os dados forem gravados em segundo. Este é um problema que pode ocorrer prontamente, e eu estava revisando um arquivo de log apenas hoje que exibiu esse problema - o sistema perdeu poder inesperadamente:

00017ea0  6f 74 29 20 43 4d 44 20  28 20 20 20 63 64 20 2f  |ot) CMD (   cd /|
00017eb0  20 26 26 20 72 75 6e 2d  70 61 72 74 73 20 2d 2d  | && run-parts --|
00017ec0  72 65 70 6f 72 74 20 2f  65 74 63 2f 63 72 6f 6e  |report /etc/cron|
00017ed0  2e 68 6f 75 72 6c 79 29  0a 00 00 00 00 00 00 00  |.hourly)........|
00017ee0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017ef0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f30  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f40  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f70  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017f90  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017fa0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017fb0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017fc0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017fd0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017fe0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00017ff0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00018000  4d 61 72 20 31 30 20 31  35 3a 31 38 3a 33 34 20  |Mar 10 15:18:34 |
00018010  72 6f 6c 6c 79 20 72 73  79 73 6c 6f 67 64 3a 20  |rolly rsyslogd: |
00018020  5b 6f 72 69 67 69 6e 20  73 6f 66 74 77 61 72 65  |[origin software|

Então, sim ... o sistema de arquivos deve ser capaz de lidar com esses eventos. Existem ofertas comerciais para sistemas de arquivos que fornecem resiliência à perda de energia, mas não é meu lugar recomendar uma.

Naturalmente, usar um sistema de arquivos somente leitura o máximo possível é um grande benefício - por exemplo, ter o sistema operacional em um sistema de arquivos somente leitura e a configuração (etc ...) em um sistema de arquivos de leitura-gravação. Isso poderia ajudá-lo a se recuperar da corrupção e retomar o serviço.

Além disso, os sistemas de arquivos com lançamento diário geralmente lidam melhor com esses eventos , mas não assumem nenhum nível de garantia. .. meu arquivo de log acima estava em um sistema de arquivos ext4 com journalling.

Meio de armazenamento

Você menciona cartões SD como armazenamento subjacente ... o que é preocupante. Na verdade, todo o armazenamento flash tem problemas com a perda de energia inesperadamente. Isso se deve à maneira como eles funcionam - o nivelamento de desgaste é tratado inteiramente pelo controlador de armazenamento e, como tal, pode decidir mover as páginas sempre que quiser.

Além disso, uma gravação em uma página geralmente consiste em um conjunto inteiro de operações, e não há garantia / padrão para ditar qual ordem elas ocorrem.

  1. Verifique se há uma página nova / apagada - apagando uma, se necessário
  2. Ler dados da página antiga
  3. Aplicar modificações por write()
  4. Escreva uma nova página
  5. Vincule novamente o mapeamento lógico ao físico

Existem muitas histórias de pessoas desconectando sistemas ou dispositivos de armazenamento e encontrando " Meu SSD de 128GB aparece como 1GB " ou " Meu cartão SD não funciona mais " , etc ...

Uma citação do JEDEC 84-A441: (reconhecidamente referindo-se à eMMC, mas provavelmente relevante)

Resetting a card (using CMD0, CMD15, or hardware reset for e•MMC) or power failure will terminate any pending or active programming operation. This may leave some or all of the data addressed by the operation in an unknown state unless Reliable Write was enabled. It is the host’s responsibility to prevent this.

Resumo

Infelizmente não existem passos bons / confiáveis que você possa tomar para facilitar a remoção de um cartão SD montado sem passar por um processo de desmontagem de software / SO e não ter problemas.

p>

Moral da história - descubra uma maneira de sync e unmount garantir que os dados do sistema de arquivos sejam contíguos e que nenhum write() s esteja em andamento quando o usuário o desconectar.

    
por 12.03.2018 / 00:22
0

RFS - um sistema de arquivos da Samsung "Robust File System" deve estar OK para isso.

Na prática, você deve ser capaz de usar qualquer sistema de arquivos ou sistema que faça copy-on-write (ext3, ext4 e mais ainda btrfs). O risco que você corre - que se aplica a qualquer sistema de arquivos - é que o sistema operacional pode armazenar as informações, ou pode não terminar de escrever quando você puxa o disco - nesse caso, qualquer informação que não tenha sido gravada não será armazenada (mas os dados existentes não serão corrompidos ou, se forem, poderão ser reproduzidos no diário.

    
por 11.03.2018 / 23:52