XFS Declaração incorreta de "Nenhum espaço deixado no dispositivo"

6

Eu tenho uma configuração de servidor de um Partição XFS em LVM com um Ubuntu 14.04.1 LTS . Ao copiar arquivos para a partição inicial, " Nenhum espaço deixado no dispositivo " é exibido.

df -h exibe espaço suficiente:

/dev/mapper/prod--vg-home     35G   21G   15G  60% /home

Eu também usei o fallocate para preencher o disco quase completamente na mesma conta inicial para garantir que nem cota nem outros problemas de espaço em disco estão relacionados:

/dev/mapper/prod--vg-home     35G   34G  1.5G  96% /home

df -i também exibe inodes suficientes:

/dev/mapper/prod--vg-home   36700160  379390 36320770    2% /home

Eu também usei uma grande quantidade de pequenos arquivos aleatórios na mesma conta de casa, que replicou o problema :

mkdir 1
cd 1
dd if=/dev/zero of=masterfile bs=10000000 count=1
split -b 10 -a 10 masterfile
cd ..
cp -R 1 2

Isto resultou no "Sem espaço deixado no dispositivo" novamente com quase nenhum espaço adicional necessário (cerca de 30MB) e df -i menciona:

/dev/mapper/prod--vg-home   36700160 1310464 35389696    4% /home

Eu fiz um segundo teste na mesma máquina (Ubuntu 14.04.1 LTS).

Eu criei um novo volume lógico de 5 GB e preenchido com pequenos arquivos usando o procedimento de dd e dividir acima.

Recebi "Sem espaço disponível no dispositivo" com o seguinte espaço em disco e inodes disponíveis:

/dev/mapper/prod--vg-test    5.0G  4.2G  811M  85% /mnt/test
/dev/mapper/prod--vg-test    4257712  937920  3319792   23% /mnt/test

Eu realizei este teste usando privilégios de root, para garantir que o espaço reservado ainda seja irrelevante aqui.

Eu fiz um terceiro teste em uma máquina diferente (Debian 2.6.32-5).

Eu criei um novo volume lógico de 5 GB e preenchai com pequenos arquivos usando o procedimento de dd e split acima.

o procedimento bem sucedido com o seguinte espaço em disco e inodes disponíveis:

/dev/mapper/data-test      5.0G  4.2G  909M  83% /mnt/test
/dev/mapper/data-test      4721904 1000005 3721899   22% /mnt/test

Eu realizei este teste usando privilégios de root também, para garantir que o espaço reservado ainda seja irrelevante aqui.

Isso aponta para um bug no Ubuntu 14.04.1 LTS ?

Eu verifiquei o impacto de alterar a porcentagem máxima de odes no Ubuntu 14.04.1 LTS:

xfs_growfs -m 25 /dev/mapper/prod--vg-home

Este montante pode ser facilmente diminuído e aumentado.

Ao experimentar essa configuração, percebi que diminuí-la para 3% e aumentá-la novamente para 25%, e excluir alguns arquivos, permite adicionar muito mais arquivos novamente, mas ainda causa o erro antes de preencher o armazenamento ou os inodes .

xfs_info exibe:

meta-data=/dev/mapper/prod--vg-home isize=256    agcount=14, agsize=655360 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=9175040, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Existe alguma outra configuração que possa causar a mensagem "Nenhum espaço restante no dispositivo"? Ou devo concluir que isso é um erro?

Obrigado

Purf
fonte

Respostas:

6

Existe um erro com o xfs_growfs que faz com que os inodes não sejam adequadamente distribuídos através de uma partição. A solução é simplesmente remontar com a opção inode64. Por exemplo, se este fosse o / dev / vda1, você faria o seguinte:

mount -o remount,inode64 /dev/vda1

Você pode encontrar mais informações sobre o bug Aqui .

Daniel Stewart
fonte
1
Obrigado Daniel, eu executei a remontagem e consegui armazenar pequenos arquivos até que o disco estivesse cheio. Depois do xfs_growfs eu tive que executar o remount novamente. Mas depois de executar o comando remount acima novamente, pude preencher novamente o disco.
Purf
"Eu fui novamente capaz de preencher o disco". O que isto significa? Obter o erro novamente ou não receber nenhum erro?
Geoffrey Anderson
0

Existe uma situação em que um diretório (especialmente /home ) pode-se dizer que o disco está cheio quando não está, e essa situação implica em cotas de usuários. Pode haver alguma limitação no espaço disponível do usuário, verifique se esse é o problema.

Isaac
fonte
Oi Isaac, obrigado pela sugestão, mas nenhuma cota está instalada (por isso também não configurado) no servidor.
Purf