Como usar o comando fsck no Linux

Publicados: 2022-01-29
Uma unidade de disco rígido com código binário escrito sobre ela.
Estúdio Pixza/Shutterstock

Todos os nossos dados importantes ficam em um sistema de arquivos de um tipo ou de outro, e problemas no sistema de arquivos estão prestes a acontecer. No Linux, podemos usar o comando fsck para localizar e corrigir erros do sistema de arquivos.

Sistemas de arquivos são software

Os sistemas de arquivos são um dos componentes mais críticos de um computador. Sem um sistema de arquivos, o computador não pode armazenar dados em um disco rígido, seja esse disco mecânico giratório ou uma unidade de estado sólido. Na verdade, um sistema de arquivos deve ser criado antes que o sistema operacional possa ser instalado no disco rígido. Deve haver algo para os arquivos do sistema operacional serem armazenados. Assim, um sistema de arquivos é criado durante o processo de instalação.

10 comandos básicos do Linux para iniciantes
RELACIONADOS 10 comandos básicos do Linux para iniciantes

Os sistemas de arquivos são criados por software, gravados por software e lidos por software. Como você sabe, todo software complexo tem bugs. Nossos dados são extremamente importantes para nós, por isso estamos confiando muito nos sistemas de arquivos e no software que os cria e os utiliza. Se algo der errado, podemos perder o acesso a partes do sistema de arquivos ou até mesmo a uma partição inteira.

Os sistemas de arquivos de journaling modernos são melhores para lidar com problemas que podem ser causados ​​por uma perda repentina de energia ou uma falha do sistema. Eles são robustos, mas não são invencíveis. Se suas tabelas internas forem embaralhadas, eles podem perder o controle de onde cada arquivo reside na unidade, qual é o tamanho, qual o nome e quais permissões de arquivo estão definidas neles.

O comando fsck permite verificar se seus sistemas de arquivos estão íntegros. Se encontrar algum problema, geralmente também pode corrigi-lo para você.

Faça as verificações de pré-voo

Usar fsck requer privilégios sudo. Qualquer comando que possa fazer alterações em um sistema de arquivos precisa ser tratado com cautela e restrito àqueles que sabem o que estão fazendo.

Propaganda

Pilotos não pulam em uma aeronave, dão partida e voam para o céu azul pálido. Eles fazem verificações de pré-voo. Há muito em jogo para fazer o contrário. Esse é um bom hábito para desenvolver. Antes de usar o fsck , você precisa garantir que o usará na unidade correta. Então, antes de fazer qualquer coisa com fsck , vamos fazer um pouco de reconhecimento.

Vamos começar com fdisk e canalizá-lo para less . Não estamos pedindo informações sobre uma partição específica. Usando a opção -l (list) o fdisk lista as tabelas de partição em todos os dispositivos que encontra no arquivo “/proc/partitions”, se existir.

 sudo fdisk -l | menos 

Podemos ver as entradas para /dev/sda e /dev/sdb . Você pode rolar pelo arquivo para ver quaisquer outras entradas que possam existir em seu computador.

Observe a saída na janela do terminal

As partições em /dev/sda são listadas como /dev/sda1 , /dev/sda2 e /dev/sda3 . Portanto, temos três partições na primeira unidade. Podemos ver um pouco mais de informação usando o comando parted . Usaremos a opção 'print' para exibir as tabelas de partição na janela do terminal.

 sudo parted /dev/sda 'print' 

Obtenha informações sobre tabelas de partição

Desta vez, obtemos algumas informações extras, incluindo o tipo de sistema de arquivos em cada partição.

 Modelo: ATA VBOX HARDDISK (scsi) 
Disco /dev/sda: 34,4 GB 
Tamanho do setor (lógico/físico): 512B/512B 
Tabela de partição: gpt 
Sinalizadores de disco:

Número Inicial Tamanho Final Sistema de Arquivos Sinalizadores de Nome 
1 1049kB 2097kB 1049kB bios_grub 
2 2097kB 540MB 538MB fat32 EFI System Partição de inicialização, esp 
3 540 MB 34,4 GB 33,8 GB ext4
Propaganda

Existem três unidades neste computador de teste. Estes são os resultados para as outras duas unidades /dev/sdb e /dev/sdc . Observe que esses sistemas de arquivos não possuem o campo “Nome”.

 sudo parted /dev/sdb 'print'
 Modelo: ATA VBOX HARDDISK (scsi) 
Disco /dev/sdb: 21,5 GB 
Tamanho do setor (lógico/físico): 512B/512B 
Tabela de partição: msdos 
Sinalizadores de disco:

Número Inicial Tamanho Final Tipo Sinalizadores do sistema de arquivos 
1 1049kB 21,5GB 21,5GB ext4 primário
 sudo parted /dev/sdc 'print'
 Modelo: ATA VBOX HARDDISK (scsi) 
Disco /dev/sdc: 21,5 GB 
Tamanho do setor (lógico/físico): 512B/512B 
Tabela de partição: msdos 
Sinalizadores de disco:

Número Inicial Tamanho Final Tipo Sinalizadores do sistema de arquivos
1 1049kB 21,5GB 21,5GB ext3 primário

A segunda e a terceira unidades são do mesmo tamanho e cada uma tem uma única partição. Mas o sistema de arquivos na segunda unidade é ext4 , e o sistema de arquivos na terceira unidade é o ext3 mais antigo.

Como montar e desmontar dispositivos de armazenamento do terminal Linux
RELACIONADO Como montar e desmontar dispositivos de armazenamento do terminal Linux

Passamos um identificador de partição para fsck e ele verifica o sistema de arquivos nessa partição. Mas não podemos executar o fsck em um sistema de arquivos montado. Precisamos desmontar a unidade. Para fazer isso, precisamos saber o ponto de montagem em que a partição - e, portanto, o sistema de arquivos - está montada.

Podemos descobrir isso facilmente usando o comando df .

 df /dev/sdb1
 df /dev/sdc1 

Usando o comando fsck

Temos todas as informações que precisamos. A primeira coisa que faremos é desmontar o sistema de arquivos que vamos verificar. Vamos trabalhar no sistema de arquivos na primeira e única partição de /dev/sdb , que é /dev/sdb1 . Vimos anteriormente que este é um sistema de arquivos ext4 e é montado em “/run/mount/dave/sata2”.

Usaremos o comando umount . Observe que não há “n” em “umount”.

 sudo umount /run/mount/dave/sata2 

Use o comando umount para desmontar o sistema de arquivos.

Propaganda

Com umount , nenhuma notícia é uma boa notícia. Se você retornar silenciosamente ao prompt de comando, estamos prontos.

 sudo fsck /dev/sdb1 

Use o comando fsck para verificar o status do sistema de arquivos.

Este sistema de arquivos é relatado como limpo. Isso significa que o sistema de arquivos está relatando que não tem erros ou problemas. Uma verificação mais profunda do sistema de arquivos não é realizada automaticamente. Também podemos ver o código de retorno que o fsck retornou ao shell.

 eco $? 

O valor de retorno de zero indica que não há erros. Os códigos de retorno possíveis são:

  • 0 : Sem erros
  • 1 : Erros do sistema de arquivos corrigidos
  • 2 : O sistema deve ser reinicializado
  • 4 : Erros do sistema de arquivos não corrigidos
  • 8 : Erro operacional
  • 16 : Erro de uso ou sintaxe
  • 32 : Verificação cancelada por solicitação do usuário
  • 128 : Erro de biblioteca compartilhada

Apesar do sistema de arquivos ser relatado como limpo, podemos forçar uma verificação do sistema de arquivos, usando a opção -f (forçar).

 sudo fsck /dev/sdb1 -f 

Forçar uma verificação do sistema de arquivos usando a opção force em um comando fsck

Desta vez, a verificação demora mais para ser concluída, mas realiza um teste mais completo do sistema de arquivos. Nosso sistema de arquivos estava realmente limpo e nenhum erro foi relatado. Se forem encontrados problemas durante a realização dos testes, você será solicitado a permitir que o fsck corrija o problema ou ignore o erro.

Ao terminar o teste, você precisa remontar o sistema de arquivos. A maneira mais fácil de fazer isso é usar mount com a opção -a (all). Isso verifica “/etc/fstab” para a lista de sistemas de arquivos e garante que todos estejam montados como se estivessem seguindo uma inicialização normal.

 sudo mount -a 

Remonte o sistema de arquivos usando o comando mount

Qual sistema de arquivos Linux você deve usar?
RELACIONADO Qual sistema de arquivos Linux você deve usar?

Observe que não precisamos dizer ao fsck que tipo de sistema de arquivos está em uma partição; o utilitário determina isso examinando o sistema de arquivos. Isso significa que podemos forçar uma verificação do sistema de arquivos em /dev/sdc1 , o sistema de arquivos ext3 em nosso PC de teste, usando exatamente o mesmo comando que usamos em /dev/sdb1 , que é uma partição ext4 .

 sudo fsck /dev/sdc1 -f 

Use o comando fsck para forçar uma verificação do sistema de arquivos

Propaganda

Você pode não querer mergulhar direto na correção do sistema de arquivos. Você pode preferir olhar antes de pular. Você pode pedir ao fsck para não se oferecer para corrigir nada e apenas relatar problemas na janela do terminal. A opção -N (dry run) faz exatamente isso:

 sudo fsck -N /dev/sdb1 

Antes de reparar um sistema de arquivos, faça uma simulação

O oposto disso é dizer ao fsck para não se incomodar em avisar se encontrar algum erro e apenas ir em frente e corrigi-lo. Para fazer isso, use a opção -y (sem prompts).

 sudo fsck -y /dev/sdb1

Usando fsck na partição raiz

Você não pode usar o fsck em uma partição montada, mas para inicializar seu computador, a partição raiz deve estar montada. Então, como podemos executar o fsck na partição raiz? A resposta é interromper o processo de inicialização e executar o fsck no modo de recuperação.

Enquanto o computador está inicializando, mantenha pressionada a tecla “Shift”. Se você cronometrar corretamente, você não inicializará no Linux. O processo de inicialização irá parar em um menu preto e branco. A máquina de teste usada para este artigo estava executando o Ubuntu, mas outras distribuições têm o mesmo tipo de menu, embora possa variar na aparência. Onde diz “Ubuntu” nas capturas de tela, terá o nome da sua distribuição.

Menu de recuperação com o item de menu de opções avançadas selecionado

Mova a barra de destaque com as teclas “Seta para cima” e “Seta para baixo” para que o item de menu “Opções avançadas para Ubuntu” seja selecionado. Pressione “Enter” para passar para a próxima tela.

Menu de recuperação com o item de menu "modo de recuperação" selecionado

Propaganda

Selecione a opção que termina com “(modo de recuperação)”. Em nosso exemplo, é “Ubuntu, com Linux 5.11.0-20-generic (modo de recuperação)”. Aperte a tecla “Enter”.

Você verá o menu de recuperação. Selecione “fsck check all file systems” e pressione a tecla “Tab” para mover o destaque para o botão “OK”. Pressione Enter."

Menu de recuperação com fsck selecionado

Você verá uma notificação de que a partição raiz será montada junto com quaisquer outras partições definidas em seu arquivo “/etc/fstab”.

Selecione sim para iniciar o fsck no modo interativo

Pressione a tecla "Tab" para mover o destaque para o botão "Sim" e pressione "Enter".

Você verá o fsck executado no modo interativo. Se houver problemas, você será solicitado a deixar o fsck corrigi-los ou ignorá-los. Quando os sistemas de arquivos forem verificados, você verá o menu de recuperação novamente.

Selecione a opção “retomar”, pressione a tecla “Tab” para mover o destaque para o botão “Ok” e pressione “Enter”. O processo de inicialização será retomado e você inicializará no Linux.

Propaganda

A inicialização do modo de recuperação pode afetar alguns drivers, portanto, é uma boa prática reinicializar mais uma vez, assim que inicializar no Linux. Isso garante que seu computador esteja operando de maneira padrão.

Quando as coisas dão errado

As redes de segurança existem por uma razão. Conheça o comando fsck . Se surgir a necessidade de usá-lo com raiva um dia, você ficará feliz por se familiarizar com antecedência.

RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas