Todos os nossos dados importantes ficam em um sistema de arquivos de um tipo ou outro, e os problemas do sistema de arquivos estão prestes a acontecer. No Linux, podemos usar o fsck
comando para localizar e corrigir erros do sistema de arquivos.
Índice
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 nenhum dado em um disco rígido, seja esse disco um prato mecânico giratório ou um disco 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. Portanto, um sistema de arquivos é criado durante o processo de instalação.
Os sistemas de arquivos são criados pelo software , gravados no software e lidos pelo software. Como você sabe, todo software complexo possui bugs. Nossos dados são extremamente importantes para nós, portanto, estamos depositando muita fé nos sistemas de arquivos e no software que os cria e usa. 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 com registro de mudanças modernos são melhores no tratamento de problemas que podem ser causados por uma queda repentina de energia ou um travamento 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, o nome que tem e quais permissões de arquivo estão definidas para eles.
O fsck
comando permite que você verifique se seus sistemas de arquivos estão íntegros. Se encontrar algum problema, ele também pode corrigi-lo para você.
Faça as verificações prévias
O uso fsck
requer privilégios de sudo . Qualquer comando que pode fazer alterações em um sistema de arquivos precisa ser tratado com cuidado e restrito àqueles que sabem o que estão fazendo.
Os pilotos não saltam para dentro de uma aeronave, dão a partida e voam para o céu azul claro. Eles fazem verificações de pré-voo. Há muito em jogo para fazer de outra forma. É um bom hábito a desenvolver. Antes de usar, fsck
você precisa se certificar de que vai usá-lo na unidade correta. Portanto, antes de fazer qualquer coisa com fsck
, vamos fazer um pequeno 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 -l
opção (list) 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 percorrer o arquivo para ver quaisquer outras entradas que possam existir em seu computador.
As partições em /dev/sda
são listados como /dev/sda1
, /dev/sda2
, e /dev/sda3
. Portanto, temos três partições na primeira unidade. Podemos ver um pouco mais de informações usando o parted
comando. Usaremos a 'print'
opção de exibir as tabelas de partição na janela do terminal.
sudo parted / dev / sda 'imprimir'
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 e final Tamanho do sistema de arquivos Sinalizadores de nome 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 540 MB 538 MB fat32 EFI System Partition boot, esp 3 540 MB 34,4 GB 33,8 GB ext4
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 têm 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 Início Final Tamanho Tipo Sistema de arquivos Sinalizadores 1 1049 kB 21,5 GB 21,5 GB 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 Início Final Tamanho Tipo Sistema de arquivos Sinalizadores 1 1049 kB 21,5 GB 21,5 GB ext3 primário
Acontece que a segunda e a terceira unidades têm o mesmo tamanho e cada uma tem uma única partição. Mas o sistema de arquivos da segunda unidade é ext4
, e o sistema de arquivos da terceira unidade é o mais antigo ext3
.
Passamos um identificador de partição para fsck
e ele verifica o sistema de arquivos nessa partição. Mas não podemos executar 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 df
comando.
df / dev / sdb1
df / dev / sdc1
Usando o Comando fsck
Temos todas as informações de 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 /dev/sdb
, que é /dev/sdb1
. Vimos anteriormente que este é um ext4
sistema de arquivos e está montado em “/ run / mount / dave / sata2.”
Usaremos o umount
comando. Observe que não há “n” em “umount”.
sudo umount / run / mount / dave / sata2
Com umount
, nenhuma notícia é uma boa notícia. Se você retornar silenciosamente ao prompt de comando, estamos prontos para prosseguir.
sudo fsck / dev / sdb1
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 é conduzida automaticamente. Também podemos examinar o código de retorno que fsck
retornou ao shell.
echo $?
O valor de retorno de zero indica nenhum erro. Os códigos de retorno possíveis são:
- 0 : Sem erros
- 1 : Erros do sistema de arquivos corrigidos
- 2 : O sistema deve ser reiniciado
- 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 de o sistema de arquivos ser relatado como limpo, podemos forçar a realização de uma verificação do sistema de arquivos, usando a -f
opção (forçar).
sudo fsck / dev / sdb1 -f
Desta vez, a verificação leva mais tempo para ser concluída, mas executa 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 deixar que fsck
o problema seja corrigido ou a ignorar o erro.
Ao terminar o teste, você precisa remontar o sistema de arquivos. A maneira mais fácil de fazer isso é usar mount
a -a
opção (todos). Isso verifica “/ etc / fstab” para a lista de sistemas de arquivos e garante que todos eles estão montados da mesma forma que estariam após uma inicialização normal.
sudo mount -a
Observe que não precisamos dizer 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 /dev/sdc1
, o ext3
sistema de arquivos em nosso PC de teste, usando exatamente o mesmo comando que usamos /dev/sdb1
, que é uma ext4
partição.
sudo fsck / dev / sdc1 -f
Você pode não querer mergulhar direto na correção do sistema de arquivos. Você pode preferir olhar antes de pular. Você pode pedir fsck
para não se oferecer para consertar nada e apenas relatar os problemas para a janela do terminal. A opção -N
(simulação) faz exatamente isso:
sudo fsck -N / dev / sdb1
O oposto disso é dizer fsck
para não se preocupar em avisar se ele 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 fsck
em uma partição montada, mas para inicializar seu computador, a partição raiz deve ser montada. Então, como podemos executar fsck
na partição raiz? A resposta é interromper o processo de inicialização e executar fsck
no modo de recuperação.
Enquanto o computador está inicializando, mantenha pressionada a tecla “Shift”. Se você cronometrou 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 imagens, terá o nome da sua distribuição.
Mova a barra de realce 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 ir para a próxima tela.
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).” Pressione a tecla “Enter”.
Você verá o menu de recuperação. Selecione “fsck verificar todos os sistemas de arquivos” e pressione a tecla “Tab” para mover o destaque para o botão “OK”. Pressione Enter.”
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” .
Pressione a tecla “Tab” para mover o destaque para o botão “Sim” e pressione “Enter”.
Você verá a fsck
execução no modo interativo. Se houver problemas, você será solicitado a deixá- fsck
los 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.
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 o computador esteja operando de acordo com o padrão.
Quando as coisas dão errado
As redes de segurança existem por um motivo. Conheça o fsck
comando. Se surgir a necessidade de usá-lo com raiva um dia, você ficará feliz por ter se familiarizado com antecedência.