Was passiert, wenn das Limit von 4 Milliarden Dateien in einer ext4-Partition überschritten wurde, zum Beispiel bei einer Übertragung von 5 Milliarden Dateien?
Was passiert, wenn das Limit von 4 Milliarden Dateien in einer ext4-Partition überschritten wurde, zum Beispiel bei einer Übertragung von 5 Milliarden Dateien?
Antworten:
Möglicherweise wird der Fehler "Kein Platz 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 haben Sie diese Grenze viel früher als "4 Milliarden Dateien" erreicht. Überprüfen Sie Ihre Dateisysteme mit beiden df -h
und df -i
finden Sie heraus, wie viel Speicherplatz noch frei 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, ist der Inode-Speicher viel früher als der Speicherplatz erschöpft. Es ist möglich , ein anderes Verhältnis (zu spezifizieren mke2fs -N number-of-inodes
oder -i bytes-per-inode
oder -T usage-type
wie definiert in /etc/mke2fs.conf
).
git repack
in jedem Git-Repository alle separaten Objekte in einer Packdatei zu kombinieren.
touch
, echo
zeigen Sie auch einen wichtigen Punkt und ein häufig vorkommendes Missverständnis: Es ist möglich, eine Festplatte mit leeren Dateien zu füllen.
git repack
keine Funktionalität, es ist funktional immer noch das gleiche Git-Repo, tar
was es für viele Programme, die ein Projekt oder ein Git-Repository erwarten , unlesbar macht
Sobald das Limit erreicht ist, schlagen nachfolgende Versuche, Dateien zu erstellen, fehl ENOSPC
, was darauf hinweist, dass das Zieldateisystem keinen Platz mehr für neue Dateien hat.
In dem von Ihnen beschriebenen Szenario wird die Übertragung normalerweise abgebrochen, sobald das Limit erreicht ist.