Três maneiras principais de corrigir o erro “Não resta espaço no dispositivo” no Linux


Erros sem causa clara são os problemas mais irritantes de se lidar. E embora o Linux geralmente seja específico em suas mensagens de erro, esta é uma das poucas vezes em que ele deixa a bola cair.

Receber um erro “Não resta lugar no dispositivo” explica muito pouco, especialmente se a sua unidade estiver longe de estar cheia. Por que esta mensagem de erro está aparecendo? Por que você não consegue criar novos arquivos apesar de ter espaço suficiente no disco? E o mais importante, como você corrige isso?

Vamos descobrir.

Seu disco rígido realmente tem espaço suficiente?

Antes de se apressar para encontrar uma solução, primeiro verifique se há um problema. Afinal, se o espaço em disco do seu sistema realmente acabar, não há necessidade de entrar em pânico. Você pode simplesmente remover dados desnecessários para liberar mais espaço.

Existem dois comandos do sistema Linux para obter informações sobre o espaço em disco – du e df. O comando du estima o uso do espaço em disco, enquanto o comando df analisa o espaço livre presente no disco. Usá-los em conjunto com sudo fornece um relatório preciso de quanto espaço está realmente disponível no disco.

  1. Vamos começar com o comando du. Sua saída pode ser bastante longa e complicada, então usaremos os sinalizadores -s e -h. -s resume os resultados, enquanto -h garante que sejam legíveis por humanos. Portanto, digite o comando sudo du -sh /onde /aponta para o diretório base.
    1. Não se preocupe com todas as mensagens de permissão negada – é assim que ele percorre todos os subdiretórios do sistema. Dependendo do tamanho da unidade, você pode ter que deixá-la funcionando por um tempo, pois ela passa por tudo recursivamente.
      1. Quando du terminar a digitalização, ele exibirá uma lista simples de diretórios junto com seus tamanhos. Por exemplo, esta é a saída do comando du aplicado a um diretório comum.
      2. Agora usaremos df para ver quanto espaço livre está disponível. O comando df é muito mais simples de usar, pois mostra apenas os sistemas de arquivos montados e suas estatísticas de uso. Mais uma vez, usaremos o sinalizador -h para tornar a saída legível por humanos.

        sudo df -h .

        A ideia é contabilizar os resultados dos comandos du e df. Qualquer discrepância indica que o espaço em disco não está disponível gratuitamente, apesar de não ser usado por nenhum arquivo ou pasta.

        Por que o Linux mostra “Não resta espaço no dispositivo”?

        Se você estiver vendo a mensagem de erro “Sem espaço restante no dispositivo”, apesar de ter espaço livre suficiente no disco, a culpa não é do hardware. Descobrir a causa exata do erro pode exigir um pouco de solução de problemas.

        • Arquivo excluído recentemente: o motivo mais comum para ver esse erro é um arquivo excluído recentemente. Muitas vezes, um arquivo é excluído enquanto um processo ainda o utiliza, mantendo o espaço reservado mesmo que o arquivo já tenha desaparecido.
        • Inodes insuficientes: Outra causa frequente é não ter inodes suficiente. Inodes são as páginas de índice de um sistema de arquivos Unix, contendo os metadados de cada arquivo armazenado. No entanto, os inodes não são ilimitados e ficar sem inodes antes do espaço de armazenamento pode causar o erro “Não resta espaço no dispositivo”.
        • Falha no disco rígido: É claro que existe a possibilidade de o disco rígido estar simplesmente falhando e grande parte do aparente espaço livre ser ocupado por setores defeituosos. Como o sistema não grava nenhum arquivo nesses locais, ocorre um erro.
        • Correção 1: reiniciar processos usando arquivos excluídos

          A causa mais provável do erro “Sem espaço no dispositivo” é um processo que ainda usa um arquivo excluído. Felizmente, corrigir esse erro é fácil. Você só precisa de reinicie o processo para liberar o armazenamento reservado.

          1. Para encontrar o processo problemático, você precisa usar os comandos lsof e grep. O comando lsof fornecerá uma lista de todos os arquivos abertos usados ​​pelos processos em execução, e o grep pode restringir a seleção aos que foram excluídos. Então digite sudo lsof / | grep deletadoonde / é o diretório base e | um canal para vincular a saída do lsof ao grep.
            1. Agora você pode reiniciar o processo afetado com o comando sudo systemctl restart service_name, onde o nome do serviço é o nome do serviço que apareceu na pesquisa.
            2. .
              1. Se houver vários processos como este ou se você simplesmente não quiser se preocupar em encontrar serviços específicos, basta redefinir todos eles com o comando sudo systemctl daemon-reload. Isso regenera todas as dependências, levando em consideração quaisquer alterações no sistema de arquivos.
              2. Depois disso, o espaço de armazenamento ocupado pelo processo deverá estar disponível novamente, permitindo que você grave arquivos sem erros.

                Correção 2: verifique os inodes

                Embora cada unidade tenha um grande número de inodes, ele é finito. E se o seu sistema estiver repleto de uma quantidade incrível de arquivos, é possível atingir esse limite antes de esgotar a capacidade de armazenamento do drive. É por isso que é melhor ter arquivos grandes em vez de muitos arquivos pequenos.

                Você pode verificar facilmente a disponibilidade de inodes usando o sinalizador -i com o comando df. Assim:

                sudo df -i

                Isso informará claramente o número total de inodes presentes no sistema de arquivos, juntamente com a quantidade atualmente em uso. Se não houver mais inodes livres em seu sistema, esta é a origem do erro “Não há espaço restante no dispositivo”.

                Como os inodes só são criados após a primeira formatação da unidade, não há como gerar mais inodes. Tudo o que você pode fazer é excluir todos os arquivos desnecessários para liberar inodes para arquivos futuros.

                Correção 3: marcar blocos defeituosos

                A corrupção de dados é o destino inevitável de qualquer disco rígido. Embora uma nova unidade não apresente esse problema, os discos rígidos mais antigos começarão gradualmente a ficar “ruins”.

                O que isso significa é que partes do disco rígido ficam inutilizáveis, mesmo que o sistema de arquivos ainda as considere funcionais. Esses blocos defeituosos aumentam falsamente o aparente espaço livre na unidade, quando na verdade nenhum arquivo pode ser gravado neles. Isso leva ao erro “Não resta espaço no dispositivo”, pois o sistema operacional tenta e não consegue armazenar dados nesses locais.

                Não existe uma maneira real de corrigir esse problema, pois setores defeituosos são resultado do desgaste físico de um disco rígido. A única coisa que você pode fazer é marcar os setores defeituosos para que não sejam mais referenciados pelo sistema de arquivos..

                Para fazer isso, você precisa inicializar a partir de um CD ao vivo, pois não é possível executar uma verificação do sistema de arquivos em uma unidade em execução. Depois de fazer isso, basta usar o seguinte comando:

                sudo fsck -vcck /dev/sda

                Isso substitui /dev/sda pelo caminho da unidade que você deseja reparar. Isso detectará automaticamente todos os blocos defeituosos na unidade e os marcará como inutilizáveis. No entanto, isso não lhe dará nenhuma capacidade de armazenamento extra, então esteja preparado para limpar alguns arquivos inúteis para liberar espaço na unidade.

                Qual ​​é a melhor maneira de corrigir o erro “Não resta espaço no dispositivo”?

                O motivo comum para ver um erro “Sem espaço no dispositivo” no Ubuntu ou em qualquer outra distribuição Linux é um arquivo excluído que ainda está sendo usado por um processo em execução. Isso reserva o armazenamento que estava ocupado pelo arquivo, evitando que outras operações gravem dados nesse espaço.

                Corrigir esse problema também é o mais fácil, pois tudo o que você precisa fazer é reiniciar o processo em questão. As outras causas do erro, entretanto, não são tão fáceis de resolver.

                Se sua unidade está infestada de blocos de dados defeituosos ou sem inodes, não há uma maneira direta de corrigir esses problemas. Você deve excluir os arquivos existentes para liberar espaço para a gravação de novos dados.

                .

                Postagens relacionadas:


                30.08.2022