¿Qué sucede si se excede el límite de 4 mil millones de archivos en una partición ext4, con una transferencia de 5 mil millones de archivos, por ejemplo?
¿Qué sucede si se excede el límite de 4 mil millones de archivos en una partición ext4, con una transferencia de 5 mil millones de archivos, por ejemplo?
Respuestas:
Presumiblemente, verá un poco de error "No queda espacio en el 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
Y en la práctica llegas a este límite mucho antes que "4 mil millones de archivos". Verifique sus sistemas de archivos con ambos df -h
y df -i
descubra cuánto espacio queda.
# 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
En este ejemplo, si sus archivos no tienen un tamaño promedio de 4K, se queda sin espacio de inodo mucho antes que el espacio de almacenamiento. Es posible especificar otra relación ( mke2fs -N number-of-inodes
o -i bytes-per-inode
, o -T usage-type
como se define en /etc/mke2fs.conf
).
git repack
en cada repositorio git para combinar todos los objetos separados en un archivo de paquete.
touch
, no es lujoso echo
, también muestra un punto importante y un concepto erróneo a menudo: es posible llenar un disco con archivos vacíos.
git repack
no pierde ninguna funcionalidad, sigue siendo funcionalmente el mismo repositorio de git, lo tar
hace ilegible para muchos programas que esperan un proyecto o un repositorio de git
Una vez que se alcanza el límite, los intentos posteriores de crear archivos fallarán ENOSPC
, lo que indica que el sistema de archivos de destino no tiene espacio para archivos nuevos.
En el escenario que describe, esto normalmente dará como resultado que la transferencia se cancele una vez que se alcance el límite.