Es ist bekannt, dass leere Textdateien null Bytes haben:
Jede von ihnen enthält jedoch Metadaten , die nach meinen Recherchen in Inodes gespeichert sind und Platz beanspruchen .
In Anbetracht dessen erscheint es mir logisch, dass es möglich ist, eine Diskette zu füllen, indem lediglich leere Textdateien erstellt werden. Ist das richtig? Wenn ja, wie viele leere Textdateien würde ich benötigen, um eine Festplatte von beispielsweise 1 GB zu füllen?
Um einige Überprüfungen df -i
durchzuführen, führe ich einen Lauf durch, aber dies zeigt anscheinend den Prozentsatz der verwendeten Inodes (?), Anstatt wie viel sie wiegen.
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 947470 556 946914 1% /dev
tmpfs 952593 805 951788 1% /run
/dev/sda2 28786688 667980 28118708 3% /
tmpfs 952593 25 952568 1% /dev/shm
tmpfs 952593 5 952588 1% /run/lock
tmpfs 952593 16 952577 1% /sys/fs/cgroup
/dev/sda1 0 0 0 - /boot/efi
tmpfs 952593 25 952568 1% /run/user/1000
/home/lucho/.Private 28786688 667980 28118708 3% /home/lucho
disk-usage
inode
file-metadata
Luchonacho
quelle
quelle
Antworten:
Diese Ausgabe schlägt
28786688
insgesamt Inodes vor, nach denen der nächste Versuch, eine Datei im Root-Dateisystem (Gerät/dev/sda2
) zu erstellen, zurückgegeben wirdENOSPC
("Kein Platz mehr auf dem Gerät").Erläuterung: Im ursprünglichen * nix-Dateisystemdesign wird die maximale Anzahl von Inodes zum Zeitpunkt der Dateisystemerstellung festgelegt. Ihnen wird ein eigener Platz zugewiesen. Sie können keine Inodes mehr haben, bevor Ihnen der Speicherplatz für Daten ausgeht, oder umgekehrt. Das gebräuchlichste Standard-Linux-Dateisystem unterliegt
ext4
immer noch dieser Einschränkung. Informationen zu Inode-Größen in ext4 finden Sie in der Manpage für mkfs.ext4.Linux unterstützt andere Dateisysteme ohne diese Einschränkung. Ein
btrfs
, Speicherplatz wird dynamisch zugewiesen. "Die Inode-Struktur ist relativ klein und enthält keine eingebetteten Dateidaten oder erweiterten Attributdaten." (ext3 / 4 reserviert etwas Platz in den Inodes für erweiterte Attribute ). Natürlich kann Ihnen immer noch der Speicherplatz ausgehen, wenn Sie zu viele Metadaten / Verzeichniseinträge erstellen.Wenn Sie darüber nachdenken, ist tmpfs ein weiteres Beispiel, bei dem Inodes dynamisch zugewiesen werden. Es ist schwer zu sagen, was die maximale Anzahl der von gemeldeten Inodes
df -i
in der Praxis für diese Dateisysteme bedeuten würde. Ich würde dem angezeigten Wert keine Bedeutung beimessen."XFS ordnet Inodes auch dynamisch zu. JFS auch. Reiserfs auch. F2FS auch. Traditionelle Unix-Dateisysteme ordnen Inodes zur mkfs-Zeit statisch zu, und moderne FSes wie ext4, die ihr Erbe darauf zurückführen, aber heutzutage ist das so die Ausnahme, nicht die Regel.
"Übrigens, mit XFS können Sie den maximalen Prozentsatz des von Inodes verwendeten Speicherplatzes begrenzen, damit Sie keine Inodes mehr haben, bevor Sie zu dem Punkt gelangen, an dem Sie keine vorhandenen Dateien mehr anhängen können. (Standard ist 25% für FSes unter 1 TB, 5% für Dateisysteme bis zu 50 TB, 1% für größere Dateisysteme.) Wie auch immer, diese Speicherplatznutzung auf Metadaten (Inodes und Extent Maps) wird in regelmäßigen Abständen wiedergegeben
df -h
"- Peter Cordes in einem Kommentar zu dieser Antwortquelle
28786688-667980=28118708
Wollen Sie damit sagen, dass mir beim Erstellen leerer Dateien praktisch die Inodes ausgehen und "mein System kaputt machen"?df -h
@luchonacho angezeigt.Das Erstellen leerer Dateien umfasst Folgendes:
Die Anzahl der verfügbaren Inodes wird häufig beim Erstellen eines Dateisystems festgelegt und kann nicht geändert werden (einige Dateisysteme wie Btrfs oder XFS weisen Inodes dynamisch zu). Das ist es, woran gemessen wird
df -i
. Wenn Ihnen die Inodes ausgehen, können Sie keine neuen Dateien oder Verzeichnisse erstellen, selbst wenn Sie über verfügbaren Speicherplatz verfügen.Verzeichniseinträge belegen ebenfalls Speicherplatz auf der verfügbaren Festplatte. Dies können Sie an der Größe eines Verzeichnisses ablesen: Es ist immer ein Vielfaches der Blockgröße, und wenn ein Verzeichnis viele Dateien enthält, nimmt seine Größe zu. Wenn Ihnen der Festplattenspeicher ausgeht, können Sie möglicherweise keine neuen Dateien oder Verzeichnisse in einem Verzeichnis erstellen, das „voll“ ist ( dh , das Hinzufügen einer neuen Datei würde das Zuweisen eines neuen Blocks erfordern ), selbst wenn Inodes verfügbar sind.
Ja, es ist möglich, dass nur leere Dateien nicht mehr genügend Speicherplatz bieten.
quelle
Rein logisches Argument:
Ein Dateiname besteht aus einer Anzahl von Bytes ungleich Null. Selbst mit theoretischer maximaler Kompression in einem hypothetischen Dateisystem entwickelt , um die absolute maximale Menge von Dateinamen zu ermöglichen, wird jeder Dateiname verbraucht noch mindestens ein Bit irgendwo auf einem physischen Datenträger. Wahrscheinlich mehr, aber "1 Bit pro Datei" ist das unbedeutende Minimum.
Berechnen Sie die Anzahl der Bits, die möglicherweise auf Ihre Platten passen. Dies ist die theoretische maximale Anzahl (leerer oder nicht leerer) Dateien, die Sie darauf speichern können.
Die Antwort lautet also ja. Letztendlich wird Ihnen der Speicherplatz ausgehen, egal welchen Speicher Sie verwenden, wenn Sie weiterhin leere Dateien hinzufügen. Offensichtlich werden Sie viel früher als das auf diese Weise berechnete Maximum ausgehen, aber Sie werden ausgehen.
quelle
Einfach nein, aber unter Linux können die Inodes ausgehen, was dasselbe ist, als würde Ihnen der Speicherplatz ausgehen.
Sie können so etwas in Ihrer Shell ausprobieren
n=0; while :; do touch $n; let n=n+1; done
Stellen Sie einfach sicher, dass Sie es in der virtuellen Maschine ausführen, da Sie sonst sehr schnell keine Inodes mehr haben.
quelle
rm -fr inodetest
, um alle leeren Dateien zu entfernen und wieder normal zu arbeiten. :)Sie können die Festplatte nicht füllen, indem Sie leere Dateien erstellen - die Festplatte bietet immer noch ausreichend Platz für neue Dateien. Aber ja, Sie können den begrenzten Vorrat an freien Inodes des Dateisystems ausschöpfen - an diesem Punkt können Sie keine neuen Dateien erstellen (obwohl Ihre Festplatte - was den Speicherplatz betrifft - praktisch leer ist). Es wird nur die Liste der Inodes des Dateisystems verwendet, nicht die Festplatte. Das Dateisystem ist also voll, während die Festplatte praktisch leer ist. Die Inode-Tabelle belegt Speicherplatz auf der Festplatte, aber die Tabelle wächst nicht, wenn Sie Dateien hinzufügen - genau wie ein Blatt Papier nicht wächst, wenn Sie in seine Zeilen schreiben.
(eine Antwort in einem Kommentar von Baard Kopperud)
quelle