Todos os produtos
Search
Central de documentação

Elastic Compute Service:Resolver problemas de espaço em disco cheio em instâncias Linux

Última atualização: Jul 03, 2026

À medida que aplicações e serviços executam continuamente em uma instância Linux, logs, cache e dados de negócios se acumulam e consomem gradualmente o espaço disponível em disco. Quando o disco fica cheio, a gravação de novos dados falha, causando interrupção do serviço ou comportamento anormal.

Sintomas

Ao criar arquivos ou executar aplicações em uma instância Linux, a mensagem de erro No space left on device aparece, indicando esgotamento dos recursos de armazenamento.

Diagnóstico e soluções

Importante

Antes de fazer alterações, crie um snapshot manual para fazer backup dos dados e evitar perda acidental que possa afetar seus negócios.

Cenário 1: Espaço em disco esgotado

  1. Verifique o uso do disco.

    Execute sudo df -h para visualizar o uso do disco em cada ponto de montagem. Se o valor de Use% for 100%, o espaço correspondente está cheio.

  2. Limpe arquivos ou pastas desnecessários.

    Use sudo du -sh <folder name>/* para verificar o tamanho dos arquivos e subpastas em um diretório especificado. Se necessário, navegue até o diretório e repita esse comando nível por nível para identificar itens grandes.

    Por exemplo, use sudo du -sh /mnt/* para verificar o espaço em disco usado por arquivos e subpastas no diretório /mnt .
  3. Se o espaço continuar insuficiente após a limpeza, expanda seu disco.

Cenário 2: Recursos de inode esgotados

Cada arquivo consome um inode. Se o disco contiver muitos arquivos pequenos, os inodes podem se esgotar mesmo com espaço em disco disponível, impedindo a criação de novos arquivos.

  1. Verifique o uso de inodes.

    Execute sudo df -i. Se o valor de IUse% atingir 100%, os recursos de inode estão esgotados.

  2. Limpe arquivos ou pastas desnecessários.

    Use sudo du -sh --inodes <folder name>/* para visualizar o número de inodes usados por arquivos e subpastas em um diretório especificado. Se necessário, navegue até o diretório e use este comando recursivamente para localizar o alto uso de inodes.

    Por exemplo, use sudo du -sh --inodes /mnt/* para verificar o número de inodes usados por arquivos e subdiretórios no diretório /mnt .
  3. Se a contagem de inodes continuar insuficiente após a limpeza, expanda seu disco.

Cenário 3: Arquivos excluídos ainda ocupam espaço

Mesmo após a exclusão de um arquivo, o sistema não libera seu espaço em disco se um processo ainda o estiver usando (ou seja, mantendo um identificador de arquivo aberto). O espaço só é liberado quando o processo termina ou fecha explicitamente o arquivo.

  1. Instale a ferramenta lsof.

    Arquivos excluídos que ainda retêm espaço não aparecem nos comandos df ou du . Use a ferramenta lsof para listá-los.

    Alibaba Cloud Linux, CentOS

    sudo yum install -y lsof

    Debian, Ubuntu

    sudo apt install -y lsof
  2. Visualize o espaço de armazenamento retido por arquivos excluídos.

    sudo lsof | grep delete | sort -k7 -rn | more

    A sétima coluna da saída mostra o tamanho do arquivo em bytes. Some esses valores para calcular o total de espaço não liberado.

    tail      619544                        root    3r   REG    253,1   50000000    136507 /home/test_file (deleted)
    aliyun-se 347980                        root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347997 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347996 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347995 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347994 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347983 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347982 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
    aliyun-se 347980 347981 aliyun-se       root    7uW  REG    253,1          0    262160 /tmp/AliyunAssistClientSingleLock.lock (deleted)
  3. Registre o nome do processo e o PID.

    Execute sudo lsof | grep delete e anote os campos COMMAND e PID para identificar o nome e o ID do processo.

  4. Reinicie ou pare o serviço relevante.

    Execute sudo ps -ef | grep <PID> para confirmar a finalidade do processo. Após avaliar o impacto, reinicie ou pare o serviço.

    Importante

    Reiniciar ou parar um serviço pode afetar seus negócios. Avalie cuidadosamente e execute esta ação durante uma janela de manutenção apropriada.

Cenário 4: Ponto de montagem sobreposto

Quando um diretório não vazio serve como ponto de montagem para outro dispositivo, seu conteúdo existente fica oculto. No entanto, processos com o diretório já aberto ainda podem gravar no espaço subjacente. Esse consumo de espaço "oculto" não aparece no comando df e pode esgotar inesperadamente o espaço em disco.

  1. Visualize informações sobre pastas duplicadas.

    Execute sudo lsblk e verifique a coluna MOUNTPOINT em busca de nomes de diretórios repetidos.

    sudo lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda    253:0    0   40G  0 disk 
    ├─vda1 253:1    0    2M  0 part 
    ├─vda2 253:2    0  200M  0 part /boot/efi
    └─vda3 253:3    0 39.8G  0 part /
    vdb    253:16   0   40G  0 disk 
    └─vdb1 253:17   0   40G  0 part /mnt
    vdc    253:32   0   40G  0 disk 
    └─vdc1 253:33   0   40G  0 part /mnt

    Neste exemplo, ambas as partições vdb1 e vdc1 estão montadas em /mnt, indicando risco de sobreposição de ponto de montagem.

  2. Desmonte o sistema de arquivos.

    Importante

    Desmontar um sistema de arquivos pode interromper serviços dependentes do caminho. Avalie o risco e escolha um momento apropriado para realizar esta operação.

    Obtenha o <duplicate mount directory> na etapa anterior.

    sudo umount <duplicate mount directory>
    Neste exemplo, /mnt é o diretório de montagem duplicado. A execução de sudo umount /mnt desmonta o dispositivo montado mais recentemente, vdc1 .
  3. Identifique o nome do dispositivo do ponto de montagem sobreposto.

    Execute sudo df -h para localizar o nome do dispositivo associado ao ponto de montagem atualmente ativo.

    sudo df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        3.7G     0  3.7G   0% /dev
    tmpfs           3.7G     0  3.7G   0% /dev/shm
    tmpfs           3.7G  524K  3.7G   1% /run
    tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
    /dev/vda3        40G  4.5G   33G  12% /
    /dev/vda2       200M  5.8M  194M   3% /boot/efi
    /dev/vdb1        40G   40G     0  100% /mnt
    tmpfs           747M     0  747M   0% /run/user/0

    Neste exemplo, a partição atualmente montada em /mnt é vdb1. Portanto, o nome do dispositivo do ponto de montagem sobreposto é vdb1.

  4. Resolva o problema de espaço em disco cheio.

    1. Limpe arquivos ou pastas desnecessários no espaço sobreposto.

      Neste exemplo, limpe o diretório /mnt montado por vdb1 .
    2. Se o espaço continuar insuficiente após a limpeza, expanda seu disco e monte-o em um diretório vazio diferente.

      Neste exemplo, o dispositivo alvo para expansão é vdb1 .
Importante

Não monte vários dispositivos no mesmo diretório.

Montar vários dispositivos no mesmo diretório oculta o espaço do primeiro dispositivo montado e pode causar gravação de dados no dispositivo errado. Sempre monte dispositivos diferentes em diretórios vazios separados.

Cenário 5: Arquivos relacionados ao Docker consomem espaço significativo

O Docker gera muitas imagens intermediárias, containers parados e caches de compilação durante a operação. Com o tempo, esses itens se acumulam e consomem espaço em disco.

  1. Verifique o uso de espaço em disco do Docker.

    Execute sudo df -h. Se o Use% para um Filesystem do tipo overlay atingir 100%, o armazenamento do Docker está cheio.

  2. Avalie o uso de recursos do Docker.

    Execute sudo docker system df e examine os campos Size e RECLAIMABLE para entender o consumo de espaço.

    sudo docker system df
    TYPE            TOTAL      ACTIVE     SIZE       RECLAIMABLE
    Images          21         9          13.94GB    10.66GB(76%)
    Containers      9          5          30.09MB    0B(0%)
    Local volumes   6          6          259.9MB    0B(0%)
    Build Cache     0          0          0B         0B

    No exemplo, as imagens do Docker ocupam 13,94 GB, dos quais 10,66 GB são recuperáveis. Recomendamos priorizar a limpeza de imagens não utilizadas.

  3. Limpe arquivos desnecessários.

    Se não for possível limpar os arquivos do Docker, siga as etapas no Cenário 1: Espaço em disco esgotado .
    • Remova todos os containers parados: execute sudo docker container prune.

    • Remova todas as imagens órfãs (imagens sem tag): execute sudo docker image prune.

    • Remova o cache de compilação não utilizado: execute sudo docker builder prune.

Cenário 6: Limite de inotify watches atingido

Ao executar comandos como sudo tail -f, o erro tail: cannot watch '...': No space left on device pode aparecer. Isso não significa que o espaço em disco está cheio. O sistema atingiu o número máximo de inotify watches usados para monitorar alterações em arquivos e diretórios. É necessário aumentar esse limite.

  1. Verifique o limite atual de inotify watches.

    Execute sudo cat /proc/sys/fs/inotify/max_user_watches para visualizar o limite atual de inotify watches.

  2. Aumente o limite de inotify watches.

    Elevar esse limite aumenta o uso de memória. Avalie cuidadosamente antes de alterar. O <new limit> geralmente não deve exceder 524288.

    sudo sh -c "echo fs.inotify.max_user_watches=<new limit> >> /etc/sysctl.conf"
  3. Carregue a nova configuração.

    Execute sudo sysctl --system para aplicar a configuração atualizada.

  4. Verifique o resultado.

    Execute sudo cat /proc/sys/fs/inotify/max_user_watches novamente para confirmar se o limite de inotify watches foi atualizado conforme esperado.

Referências

  • Para armazenar grandes quantidades de arquivos estáticos, como imagens, vídeos ou arquivos compactados, use o Object Storage Service (OSS).

  • Para compartilhamento de arquivos de alto desempenho e alta concorrência, armazene arquivos usando o File Storage NAS.

  • Para coleta e análise de logs em grande escala, armazene logs no Simple Log Service (SLS) para simplificar consultas e reduzir o uso de armazenamento local.