Se eu entendi o armazenamento de dados corretamente, todos os dispositivos de armazenamento não são confiáveis até certo ponto, e é por isso que a maioria tem camadas de abstração no nível de hardware. Os discos rígidos usam correção de erros. Se um setor é lido e o ECC detecta um erro (seja ele da escrita original ou de um bit aleatório ao longo do tempo), o ECC é usado para tentar se recuperar do erro e esse setor é potencialmente marcado como ruim e remapeado para o setor reserva piscina. Alguns dispositivos de hardware, no entanto, não têm nada disso, especialmente coisas como memória flash em sistemas embarcados, que são acessados diretamente, sem nenhuma camada de verificação de erro em nível de hardware entre ele e o kernel.
O linux fornece métodos, como sistemas de arquivos especiais ou volumes lógicos (por volumes lógicos, quero dizer coisas como cryptsetup ou lvm2), que podem lidar diretamente com esses dispositivos "brutos", fazendo todo o checksumming, mau remapeamento do setor, erro correção, etc. no nível do software? O método de verificação de erros dependeria do tipo ou das propriedades do armazenamento bruto?