it-swarm.com.de

Was passiert, wenn das Limit von 4 Milliarden Dateien in einer ext4-Partition überschritten wurde?

Was passiert, wenn das Limit von 4 Milliarden Dateien in einer ext4-Partition überschritten wurde, beispielsweise bei einer Übertragung von 5 Milliarden Dateien?

48
Bensuperpc

Vermutlich wird der Fehler "Kein Speicherplatz mehr auf dem Gerät" angezeigt:

# 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

Und in der Praxis erreichen Sie diese Grenze viel früher als "4 Milliarden Dateien". Überprüfen Sie Ihre Dateisysteme mit beiden df -h und df -i um herauszufinden, wie viel Platz noch übrig ist.

# 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

Wenn in diesem Beispiel Ihre Dateien im Durchschnitt nicht 4 KB groß sind, geht Ihnen der Inode-Speicherplatz viel früher als der Speicherplatz aus. Es ist möglich, ein anderes Verhältnis anzugeben (mke2fs -N number-of-inodes oder -i bytes-per-inode oder -T usage-type wie definiert in /etc/mke2fs.conf).

80
frostschutz

Sobald das Limit erreicht ist, schlagen nachfolgende Versuche, Dateien zu erstellen, mit ENOSPC fehl, was darauf hinweist, dass das Zieldateisystem keinen Platz für neue Dateien hat.

In dem von Ihnen beschriebenen Szenario führt dies normalerweise dazu, dass die Übertragung abgebrochen wird, sobald das Limit erreicht ist.

52
Stephen Kitt