Corrupção de dados - Data corruption

Corrupção de dados de fotos; neste caso, o resultado de uma falha na recuperação de dados de uma unidade de disco rígido
Foto de um Atari 2600 com RAM corrompida.

A corrupção de dados refere-se a erros nos dados do computador que ocorrem durante a escrita, leitura, armazenamento, transmissão ou processamento, que introduzem alterações não intencionais nos dados originais. Os sistemas de computador, transmissão e armazenamento usam uma série de medidas para fornecer integridade de dados de ponta a ponta , ou ausência de erros.

Danos na imagem PNG como resultado de um bit alterado

Em geral, quando ocorre corrupção de dados, um arquivo que contém esses dados produzirá resultados inesperados quando acessado pelo sistema ou aplicativo relacionado. Os resultados podem variar de uma pequena perda de dados a uma falha do sistema. Por exemplo, se um arquivo de documento está corrompido, quando uma pessoa tenta abrir esse arquivo com um editor de documentos, ela pode receber uma mensagem de erro , portanto, o arquivo pode não ser aberto ou pode ser aberto com alguns dos dados corrompidos (ou em alguns casos , completamente corrompido, deixando o documento ininteligível). A imagem adjacente é um arquivo de imagem corrompido no qual a maioria das informações foi perdida.

Alguns tipos de malware podem corromper intencionalmente arquivos como parte de suas cargas , geralmente sobrescrevendo-os com código inoperante ou lixo, enquanto um vírus não malicioso também pode corromper acidentalmente arquivos ao acessá-los. Se um vírus ou cavalo de Tróia com este método de carga útil conseguir alterar arquivos essenciais para a execução do software do sistema operacional ou hardware físico do computador, todo o sistema pode ficar inutilizável.

Alguns programas podem dar sugestões para reparar o arquivo automaticamente (após o erro), e alguns programas não podem repará-lo. Depende do nível de corrupção e da funcionalidade interna do aplicativo para lidar com o erro. Existem várias causas para a corrupção.

Visão geral

Um vídeo que foi corrompido. Aviso: este vídeo contém imagens brilhantes e brilhantes.

Existem dois tipos de corrupção de dados associados aos sistemas de computador: não detectados e detectados. A corrupção de dados não detectada, também conhecida como corrupção silenciosa de dados , resulta nos erros mais perigosos, pois não há indicação de que os dados estejam incorretos. A corrupção de dados detectada pode ser permanente com a perda de dados ou pode ser temporária quando alguma parte do sistema é capaz de detectar e corrigir o erro; não há corrupção de dados no último caso.

A corrupção de dados pode ocorrer em qualquer nível de um sistema, desde o host até o meio de armazenamento. Os sistemas modernos tentam detectar a corrupção em muitas camadas e, em seguida, recuperar ou corrigir a corrupção; isso quase sempre é bem-sucedido, mas muito raramente as informações que chegam à memória do sistema são corrompidas e podem causar resultados imprevisíveis.

A corrupção de dados durante a transmissão tem várias causas. A interrupção da transmissão de dados causa perda de informações . As condições ambientais podem interferir na transmissão de dados, especialmente ao lidar com métodos de transmissão sem fio. Nuvens pesadas podem bloquear as transmissões de satélite. As redes sem fio são suscetíveis à interferência de dispositivos como fornos de microondas.

Falha de hardware e software são as duas principais causas de perda de dados . A radiação de fundo , colisões de cabeça e envelhecimento ou desgaste do dispositivo de armazenamento se enquadram na primeira categoria, enquanto a falha de software normalmente ocorre devido a bugs no código. Os raios cósmicos causam a maioria dos erros leves em DRAM.

Silencioso

Alguns erros passam despercebidos, sem serem detectados pelo firmware do disco ou sistema operacional do host; esses erros são conhecidos como corrupção silenciosa de dados .

Existem muitas fontes de erro além do próprio subsistema de armazenamento em disco. Por exemplo, os cabos podem estar ligeiramente soltos, a fonte de alimentação pode não ser confiável, vibrações externas, como um som alto, a rede pode apresentar corrupção não detectada, radiação cósmica e muitas outras causas de erros de memória suave , etc. Em 39.000 sistemas de armazenamento que foram analisados, os bugs de firmware foram responsáveis ​​por 5 a 10% das falhas de armazenamento. Ao todo, as taxas de erro observadas por um estudo do CERN sobre corrupção silenciosa são muito mais altas do que um em cada 10 16 bits. A Webshop Amazon.com reconheceu altas taxas de corrupção de dados semelhantes em seus sistemas. Em 2021, núcleos de processador defeituosos foram identificados como uma causa adicional em publicações do Google e do Facebook; os núcleos estavam com defeito em uma taxa de vários em milhares de núcleos.

Um problema é que as capacidades da unidade de disco rígido aumentaram substancialmente, mas suas taxas de erro permanecem inalteradas. A taxa de corrupção de dados sempre foi quase constante no tempo, o que significa que os discos modernos não são muito mais seguros do que os discos antigos. Em discos antigos, a probabilidade de corrupção de dados era muito pequena porque eles armazenavam pequenas quantidades de dados. Em discos modernos, a probabilidade é muito maior porque eles armazenam muito mais dados, embora não sejam mais seguros. Dessa forma, a corrupção silenciosa de dados não foi uma preocupação séria, enquanto os dispositivos de armazenamento permaneceram relativamente pequenos e lentos. Nos tempos modernos e com o advento de unidades maiores e configurações RAID muito rápidas, os usuários são capazes de transferir 10 16 bits em um tempo razoavelmente curto, atingindo facilmente os limites de corrupção de dados.

Como exemplo, o criador do ZFS Jeff Bonwick afirmou que o banco de dados rápido da Greenplum , uma empresa de software de banco de dados especializada em armazenamento e análise de dados em grande escala, enfrenta corrupção silenciosa a cada 15 minutos. Como outro exemplo, um estudo real realizado pela NetApp em mais de 1,5 milhão de HDDs ao longo de 41 meses encontrou mais de 400.000 corrupções de dados silenciosas, das quais mais de 30.000 não foram detectadas pelo controlador RAID de hardware. Outro estudo, realizado pelo CERN ao longo de seis meses e envolvendo cerca de 97  petabytes de dados, descobriu que cerca de 128  megabytes de dados foram corrompidos permanentemente.

A corrupção silenciosa de dados pode resultar em falhas em cascata , nas quais o sistema pode ser executado por um período de tempo com erro inicial não detectado, causando cada vez mais problemas até que seja finalmente detectado. Por exemplo, uma falha que afeta os metadados do sistema de arquivos pode resultar em vários arquivos parcialmente danificados ou completamente inacessíveis, pois o sistema de arquivos é usado em seu estado corrompido.

Contramedidas

Quando a corrupção de dados se comporta como um processo de Poisson , onde cada bit de dados tem uma probabilidade independentemente baixa de ser alterado, a corrupção de dados geralmente pode ser detectada pelo uso de somas de verificação e muitas vezes pode ser corrigida pelo uso de códigos de correção de erros .

Se for detectada uma corrupção de dados incorrigível, procedimentos como retransmissão automática ou restauração de backups podem ser aplicados. Certos níveis de matrizes de disco RAID têm a capacidade de armazenar e avaliar bits de paridade para dados em um conjunto de discos rígidos e podem reconstruir dados corrompidos em caso de falha de um ou vários discos, dependendo do nível de RAID implementado. Algumas arquiteturas de CPU empregam várias verificações transparentes para detectar e mitigar a corrupção de dados em caches de CPU , buffers de CPU e pipelines de instrução ; um exemplo é a tecnologia Intel Instruction Replay , que está disponível nos processadores Intel Itanium .

Muitos erros são detectados e corrigidos pelas unidades de disco rígido usando os códigos ECC que são armazenados no disco para cada setor. Se a unidade de disco detectar vários erros de leitura em um setor, ela pode fazer uma cópia do setor com falha em outra parte do disco, remapeando o setor com falha do disco para um setor sobressalente, sem o envolvimento do sistema operacional (embora isso possa ser adiado até a próxima gravação para o setor). Essa "correção silenciosa" pode ser monitorada usando o SMART e as ferramentas disponíveis para a maioria dos sistemas operacionais para verificar automaticamente a unidade de disco em busca de falhas iminentes, observando a deterioração dos parâmetros SMART.

Alguns sistemas de arquivos , como Btrfs , HAMMER , ReFS e ZFS , usam dados internos e soma de verificação de metadados para detectar corrupção silenciosa de dados. Além disso, se for detectada uma corrupção e o sistema de arquivos usar mecanismos RAID integrados que fornecem redundância de dados , esses sistemas de arquivos também podem reconstruir os dados corrompidos de forma transparente. Esta abordagem permite proteção de integridade de dados aprimorada cobrindo todos os caminhos de dados, que geralmente é conhecido como proteção de dados ponta a ponta , em comparação com outras abordagens de integridade de dados que não abrangem camadas diferentes na pilha de armazenamento e permitem que a corrupção de dados ocorra enquanto o os dados passam pelos limites entre as diferentes camadas.

A depuração de dados é outro método para reduzir a probabilidade de corrupção de dados, pois os erros de disco são detectados e recuperados antes que vários erros se acumulem e sobrecarreguem o número de bits de paridade. Em vez de a paridade ser verificada em cada leitura, a paridade é verificada durante uma varredura regular do disco, geralmente feita como um processo em segundo plano de baixa prioridade. Observe que a operação de "limpeza de dados" ativa uma verificação de paridade. Se um usuário simplesmente executar um programa normal que lê dados do disco, a paridade não seria verificada, a menos que a verificação de paridade na leitura fosse suportada e ativada no subsistema de disco.

Se os mecanismos apropriados forem empregados para detectar e corrigir dados corrompidos, a integridade dos dados pode ser mantida. Isso é particularmente importante em aplicações comerciais (por exemplo, bancos ), onde um erro não detectado pode corromper um índice de banco de dados ou alterar dados para afetar drasticamente o saldo de uma conta, e no uso de dados criptografados ou compactados , onde um pequeno erro pode causar um grande erro conjunto de dados inutilizável.

Veja também

Referências

links externos