Cosa succede se il limite di 4 miliardi di file è stato superato in una partizione ext4, ad esempio con un trasferimento di 5 miliardi di file?
Cosa succede se il limite di 4 miliardi di file è stato superato in una partizione ext4, ad esempio con un trasferimento di 5 miliardi di file?
Risposte:
Presumibilmente, vedrai un po 'di errore "Errore di spazio sul 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 in pratica raggiungi questo limite molto prima di "4 miliardi di file". Controlla il tuo filesystem con entrambi df -h
e df -i
per scoprire quanto spazio rimane.
# 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
In questo esempio, se i tuoi file non hanno dimensioni 4K in media, esaurisci lo spazio inode molto prima dello spazio di archiviazione. E 'possibile specificare un altro rapporto ( mke2fs -N number-of-inodes
o -i bytes-per-inode
o -T usage-type
come definito /etc/mke2fs.conf
).
git repack
in ogni repository git per combinare tutti gli oggetti separati in un file pack.
touch
, niente di speciale echo
, mostri anche un punto importante e un malinteso spesso fatto: è possibile riempire un disco con file vuoti.
git repack
non perde alcuna funzionalità, è ancora funzionalmente lo stesso repository git, lo tar
rende illeggibile per molti programmi che prevedono un progetto o un repository git
Una volta raggiunto il limite, i successivi tentativi di creazione dei file falliranno ENOSPC
, indicando che il file system di destinazione non ha spazio per i nuovi file.
Nello scenario che descrivi, questo in genere comporta l'interruzione del trasferimento una volta raggiunto il limite.