AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 481449
Accepted
Jürgen
Jürgen
Asked: 2018-11-14 04:53:05 +0800 CST2018-11-14 04:53:05 +0800 CST 2018-11-14 04:53:05 +0800 CST

Podemos confiar nos arquivos em um sistema de arquivos que foi reparado pelo e2fsck?

  • 772

Tema

Se um sistema de arquivos foi reparado com sucesso pelo e2fsck, é garantido que ele está em um estado consistente (limpo). No entanto, não é fácil avaliar a confiabilidade dos próprios arquivos após o reparo.

Esta questão visa critérios para julgar a integridade dos dados armazenados em sistemas de arquivos ext2 e ext4 que foram reparados após serem danificados em um cenário de falha específico.


Fundo

Eu uso um sistema de arquivos ext2 em um HDD USB externo (ou seja, baseado em prato, sem flash) para fazer backup de várias máquinas Linux. Para isso, monto o drive manualmente com as opções rw, relatime(no total), então nenhuma syncopção é usada.

Recentemente, depois de fazer um backup grande (vários 100 GB) de um sistema openSUSE 13.1 (kernel Linux 3.11.6-4) e depois que todas as atividades de gravação no HDD USB foram concluídas, não consegui desmontar essa unidade: O umountcomando bloqueado e não retornou. syncO mesmo se aplica a um comando emitido posteriormente , que entrou em suspensão ininterrupta ( psestado D).

Foi quando desconectei o HDD USB, que não liberou os blocos.

Uma tentativa de desligar a máquina posteriormente por meios padrão (pm-utils) também ficou presa. Para derrubar a máquina, usei a saudação SysRq r, e, i, s, u, b. Mas mesmo lá, as solicitações s(sincronizar) e u(remontar somente leitura) não foram bem-sucedidas: De acordo com a documentação do kernel para sysrq.c (sysrq.txt), essas solicitações não são concluídas antes de anunciarem explicitamente que são, o que nenhum dos fizeram neste caso. Portanto, nenhum dos sistemas de arquivos montados foi confirmado como desmontado corretamente quando o SysRq b(reinicialização) atingiu, o que finalmente iniciou uma reinicialização completa.

Verificando todos os sistemas de arquivos envolvidos (ext4 na partição raiz e ext2 no HDD USB) com e2fsck, felizmente encontrei o sistema de arquivos raiz limpo, e o sistema de arquivos no HDD USB mostrou apenas contagens erradas de blocos e inodes livres, que poderiam ser reparados pelo e2fsck.

O diário do Systemd da máquina que foi usado aqui não mostrou nenhuma entrada relacionada ao bloqueio do umount e das sincronizações. Em particular, não havia entradas relacionadas a problemas de IO. O evento USB unplug e o restante das minhas medidas, além dos SysRqs, foram registrados corretamente.

O SMART e badblocksos testes que foram realizados no HDD USB após esse incidente não revelaram nenhuma anomalia. A unidade, que tem cerca de 5 meses, parece funcionar normalmente agora.


Variações

Encontrei o mesmo cenário várias vezes nos últimos anos com diferentes HDDs USB (nenhum deles com mais de 16 meses) e em diferentes máquinas Linux executando diferentes versões do kernel. O único desvio no meu tratamento foi que às vezes eu usava o botão liga / desliga em vez do SysRq para desligar a máquina.

Em cada um desses incidentes, verifiquei todos os sistemas de arquivos possivelmente afetados (todos ext2 e ext4) com e2fsck, encontrando todos eles em um dos seguintes estados de erro:

  1. Sistema de arquivos limpo.

  2. Sistema de arquivos sujo que e2fsck poderia reparar apenas reproduzindo o diário (ext4).

  3. Sistema de arquivos mostrando contagens erradas de blocos e inodes livres que podem ser corrigidos pelo e2fsck.

  4. Sistema de arquivos contendo inodes órfãos que o e2fsck conectou ao lost+found.

  5. Sistema de arquivos contendo inodes de várias reivindicações (reivindicados por vários arquivos) que foram clonados por e2fsck.


A pergunta real

Um sistema de arquivos ext2 ou ext4 que foi afetado pelo cenário descrito acima e posteriormente reparado com sucesso pelo e2fsck está certamente em um estado consistente (limpo).

Mas e quanto ao conteúdo e metadados dos arquivos dentro desse sistema de arquivos?

Existe uma correlação exclusiva entre os danos ao sistema de arquivos encontrados pelo e2fsck e a corrupção de dados? Por exemplo como:

Se nenhum outro dano além de contagens erradas for encontrado no sistema de arquivos, os dados reais do arquivo estão corretos.

Ou:

Se o sistema de arquivos contiver inodes com várias solicitações, o conteúdo de pelo menos um arquivo estará corrompido.

Ou é o contrário: o sistema de arquivos e os dados dos arquivos são independentes na medida em que não se pode concluir dos danos de um aos do outro - pelo menos sem um conhecimento exato sobre o que causou o dano no nível de comunicação do dispositivo?

No último caso, o cenário descrito poderia ter corrompido o conteúdo do arquivo, mesmo que o sistema de arquivos fosse posteriormente considerado limpo. Certo?

Existem valores de experiência ou critérios fundamentados que podem ser usados ​​para avaliar a integridade dos arquivos, dependendo dos erros do sistema de arquivos encontrados pelo e2fsck?

Nesse contexto, a resposta de Gilles para "Como testar a correção do sistema de arquivos feita pelo fsck" é uma boa leitura.

A distinção entre sistema de arquivos e integridade de dados também é abordada na seção "Modo de dados" na documentação do kernel do sistema de arquivos ext4 . Para este último, fui apontado pela excelente resposta de Mikel para "Os sistemas de arquivos com journaling garantem contra corrupção após uma falha de energia?" , que também é muito relevante para este tópico.


Suposição própria e impacto

Systemd oferece a unidade de serviço (template) [email protected] que por padrão "preens" sistemas de arquivos selecionados passnoem /etc/fstab no momento da inicialização. De acordo com a descrição da -popção na página man e2fsck(8) , preening "corrige automaticamente quaisquer problemas do sistema de arquivos que podem ser corrigidos com segurança sem intervenção humana." Infelizmente, a descrição não especifica se "seguramente" se refere apenas à consistência do sistema de arquivos ou também inclui o conteúdo e os metadados dos arquivos.

No entanto, como esse serviço do Systemd inicia a limpeza de maneira totalmente transparente para o usuário, existem pelo menos alguns especialistas que confiam suficientemente nos resultados dos reparos do sistema de arquivos correspondentes.

Portanto, com base em um sentimento vago (!), eu diria que para sistemas de arquivos limpos (estado de erro 1 descrito acima) e tais que possam ser reparados apenas reproduzindo o diário (estado de erro 2), é seguro assumir que os próprios arquivos não são corrompidos, mesmo após tal incidente.

Para sistemas de arquivos que estavam no estado de erro 5, por outro lado, eu me referiria a um backup.

Então, por que tanto barulho? De acordo: No caso de um sistema de arquivos inicial ou raiz padrão, eu apenas compararia seu conteúdo com o backup mais recente. Mas, neste caso, esses backups estão no próprio HDD USB afetado. Se houver alguma dúvida sobre sua integridade, várias máquinas precisam ser copiadas instantaneamente novamente. , sem significado.

Portanto, seria bastante útil ter alguns critérios razoáveis ​​e confiáveis ​​sobre até que ponto podemos confiar nos dados em um sistema de arquivos ext2 ou ext4 que foi reparado após ser afetado pelo cenário descrito.


Outras descobertas

Tentando resolver esse problema sozinho, encontrei este excelente capítulo sobre fsck no Oracles System Administration Guide for Sun. Embora descreva a versão USF do fsck, as ideias gerais também se aplicam ao e2fsck. Mas também este documento muito detalhado se concentra no uso do fsck e no próprio sistema de arquivos, em vez de considerar a carga útil deste último.

Nesta resposta para "O que fsck -p (preen) faz no ext4?" , Noah postou uma lista de erros do sistema de arquivos que podem ser tratados automaticamente pelo fsck preening um sistema de arquivos ext4 e aqueles que não podem ser. Seria ótimo ter uma lista de erros do sistema de arquivos que indique quais deles implicam em corrupção de dados de arquivo e quais não - é claro, apenas se tal correlação existir ...

Em sua resposta , Michael Prokopec mencionou a importância dos caches de gravação para essa pergunta. A esse respeito, encontrei na resposta de Tall Jeff para "Discos SATA que manipulam o cache de gravação corretamente?" que pelo menos a maioria das unidades SATA tem o cache de gravação ativado por padrão. No entanto, de acordo com o mesmo post, as unidades tentam liberar esses caches o mais rápido possível. Mas é claro que não há garantias...

linux synchronization
  • 1 1 respostas
  • 423 Views

1 respostas

  • Voted
  1. Best Answer
    Michael Prokopec
    2018-11-19T23:06:03+08:002018-11-19T23:06:03+08:00
    • Contanto que o sistema não estivesse fazendo um grande trabalho intensivo de disco quando as coisas deram errado.
    • E se as configurações da unidade não foram definidas propositadamente para armazenar dados em cache antes da gravação.

    Você pode estar razoavelmente certo de que, se todas as verificações forem aprovadas, os dados são confiáveis. No entanto, dependendo da idade da unidade e do caso de uso, eu clonaria a unidade para uma mais recente e usaria a nova unidade.

    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve