"Não resta espaço no dispositivo", df mostra discrepância


15

Algumas horas atrás, minha partição raiz se encheu, afastei os arquivos e o df reporta:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Portanto, deve haver 9 GB gratuitos, mas os relatórios de disponibilidade 0 e Uso ainda estão em 100%.

Eu testei como root, por exemplo

# echo test >a ; cat a
test

funciona como esperado; no entanto, como usuário normal, ainda recebo o erro:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

O diretório inicial raiz onde eu conduzi o teste positivo e meu diretório inicial estão na mesma partição.A entrada fstab é:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1

Respostas:


34

A maioria dos sistemas de arquivamento reserva uma certa porcentagem para raiz, portanto, você ainda pode efetuar login como raiz e resolver problemas de espaço em disco. Geralmente isso é de 5%. 9 GB são aproximadamente 5% dos 183 GB, então isso faria sentido. Você pode ver quanto é reservado usando o tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Você pode modificá-lo usando

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

Em unidades grandes e modernas, 5% é provavelmente um pouco excessivo e você provavelmente deseja reduzi-lo. Você não deseja defini-lo como zero.


1
Não posso acreditar que não sabia disso. É melhor eu não dizer quanto tempo eu tenho usado Linux agora ...
marca de

@nfm Ei, eu venho fazendo administração básica do Linux em caixas domésticas há anos e nunca ouvi falar disso. +1 para grande informação :-)
Topher Fangio

5

im com bob, tente df -i, se você tiver vários crontabs com saída incorreta, por exemplo, seu diretório / var / spool / clientmqueue / poderá ser preenchido


3

Dê uma olhada no INODES também. Em uma instalação "vanilla", se você tiver muitos arquivos pequenos, eles podem consumir inodes, mas não espaço. Você verá que possui espaço disponível, mas como seus inodes estão cheios, não poderá usar esse espaço.


3
A maioria dos departamentos modernos possui um número muito grande de inodes, mesmo em pequenos sistemas de arquivos. Às vezes, é um problema, mas, como o usuário pode criar o arquivo c, é improvável que seja um problema de inode. (as entradas do diretório requerem inodes, mesmo que não exijam espaço).
chris

2

"Por padrão, todo sistema de arquivos no Unix tem algum espaço reservado para o superusuário (root). Isso significa que nenhum usuário comum do Unix pode preencher seu sistema de arquivos em até 100% e, portanto, sempre haverá espaço livre suficiente para continuar a função normal. "

A partir de: http://www.unixtutorial.org/commands/tune2fs/


1

Outra coisa a verificar é verificar se há arquivos abertos nesse sistema de arquivos (especialmente logs). A exclusão de arquivos não limpará o espaço no disco até que o arquivo seja realmente fechado.


0

Aposto $ 1 que Clyde tem a resposta. Um processo tem um arquivo aberto nesse dispositivo. No linux, o arquivo não é realmente removido até que o processo que o mantém aberto o solte.

Eu começaria com: lsof | grep hda1

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.