Não há espaço no dispositivo, mas a partição está apenas na metade e os inodes estão disponíveis

2

Eu estava executando um processo Python que cria um grande número de arquivos em um único diretório (eu deveria ter sido mais inteligente e ter sido dividido em vários diretórios, mas isso é outra história).

Depois de um tempo, percebi que não podia ir mais longe e o script começou a me dar um erro:

IOError: [Errno 28] No space left on device: /scr1/data/somefile_00023532.txt
Ao pesquisar, descobri que os motivos mais comuns são (1) a partição realmente não tem espaço e (2) todos os inodes estão esgotados. No entanto, df mostra

$ df -h
...
/dev/sdb1       2.7T  1.2T  1.4T  46% /scr1
...

( / dev / sdb1 é a partição em questão) e

$ df -i 
...
/dev/sdb1      183148544 17725595 165422949   10% /scr1
...

para que tanto o espaço quanto os inodes estejam realmente disponíveis.

Pode haver muitos arquivos:

$ ls /scr1/data | wc
6468500 6468500 349747747

mas o ext4 deve ser capaz de lidar com isso.

O que poderia estar causando o Linux a pensar que o espaço está esgotado?

UPDATE 1

Aparece com problema acontece com um nome de arquivo específico. Por exemplo,

$ touch /scr1/data/somefilewithproblem.txt
touch: cannot touch ‘/scr1/data/somefilewithproblem.txt‘: No space left on device

mas outros arquivos com o mesmo padrão de nome de arquivo (estou usando algo benigno, como um hash em hexadecimal, número de ID numérico, etc.) não têm o mesmo problema.

UPDATE 2

DUH !! Parece que o sistema de arquivos estava corrompido de alguma forma e, depois de executar fsck.ext4 na partição em questão, o problema desapareceu.

Muito obrigado por aqueles que me ofereceram ajuda!

    
por Taro Sato 03.11.2014 / 20:01

1 resposta

3

"Nenhum espaço deixado no dispositivo" pode ser um erro muito enganador. Ele pode aparecer em todos os tipos de condições de gravação, além de não ter espaço em disco disponível.

Esse arquivo já existe e pertence a outra pessoa?

Você tem cotas ativadas neste sistema de arquivos?

Se você tentar criar outro arquivo nesse sistema de arquivos manualmente (ou seja, touch /src1/data/testfile ), receberá o mesmo erro ou criará o arquivo?

Você pode tentar criar um arquivo como root?

    
por 03.11.2014 / 20:55