O que acontece se o limite de 4 bilhões de arquivos for excedido em uma partição ext4, com uma transferência de 5 bilhões de arquivos, por exemplo?
O que acontece se o limite de 4 bilhões de arquivos for excedido em uma partição ext4, com uma transferência de 5 bilhões de arquivos, por exemplo?
Respostas:
Presumivelmente, você verá um pouco do erro "Sem espaço restante no dispositivo":
# truncate -s 100M foobar.img
# mkfs.ext4 foobar.img
Creating filesystem with 102400 1k blocks and 25688 inodes
---> number of inodes determined at mkfs time ^^^^^
# mount -o loop foobar.img loop/
# touch loop/{1..25688}
touch: cannot touch 'loop/25678': No space left on device
touch: cannot touch 'loop/25679': No space left on device
touch: cannot touch 'loop/25680': No space left on device
E, na prática, você atinge esse limite muito antes de "4 bilhões de arquivos". Verifique seus sistemas de arquivos com os dois df -h
e df -i
descubra quanto espaço resta.
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 93M 2.1M 84M 3% /dev/shm/loop
# df -i loop/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop0 25688 25688 0 100% /dev/shm/loop
Neste exemplo, se os arquivos não tiverem tamanho 4K em média, o espaço no inode ficará muito mais cedo que o espaço de armazenamento. É possível especificar outra proporção ( mke2fs -N number-of-inodes
ou -i bytes-per-inode
ou -T usage-type
conforme definido em /etc/mke2fs.conf
).
git repack
em cada repositório git para combinar todos os objetos separados em um arquivo de pacote.
touch
, não é chique echo
, você também mostra um ponto importante e um equívoco frequentemente criado: É possível preencher um disco com arquivos vazios.
git repack
não perde nenhuma funcionalidade, ainda é funcionalmente o mesmo tar
repositório git, tornando-o ilegível para muitos programas que esperam um projeto ou um repositório git
Quando o limite é atingido, as tentativas subsequentes de criar arquivos falharão ENOSPC
, indicando que o sistema de arquivos de destino não tem espaço para novos arquivos.
No cenário que você descreve, isso normalmente resulta no cancelamento da transferência assim que o limite é atingido.