Wenn eine Datei oder ein Verzeichnis "gelöscht" wird, wird ihre Inode-Nummer aus dem Verzeichnis entfernt, das die Datei enthält. Mit dem tree
Befehl können Sie die Liste der Inodes anzeigen, die ein bestimmtes Verzeichnis enthält .
Beispiel
$ tree -a -L 1 --inodes .
.
|-- [9571121] dir1
|-- [9571204] dir2
|-- [9571205] dir3
|-- [9571206] dir4
|-- [9571208] dir5
|-- [9571090] file1
|-- [9571091] file2
|-- [9571092] file3
|-- [9571093] file4
`-- [9571120] file5
5 directories, 5 files
Links
Es ist wichtig zu verstehen, wie Hardlinks funktionieren. Dieses Tutorial mit dem Titel: Einführung in Inodes enthält hervorragende Details, wenn Sie gerade erst versuchen, ein grundlegendes Verständnis der Funktionsweise von Inodes zu erlangen.
Auszug
Inode-Nummern sind eindeutig, aber Sie haben möglicherweise bemerkt, dass einige Dateinamen- und Inode-Nummernlisten einige Dateien mit derselben Nummer anzeigen. Die Vervielfältigung wird durch harte Links verursacht. Hardlinks werden hergestellt, wenn eine Datei in mehrere Verzeichnisse kopiert wird. Dieselbe Datei befindet sich in verschiedenen Verzeichnissen auf derselben Speichereinheit. Die Verzeichnisliste zeigt zwei Dateien mit derselben Nummer, die sie mit derselben physischen Speichereinheit verknüpfen. Durch feste Links kann dieselbe Datei in mehreren Verzeichnissen "vorhanden" sein, es ist jedoch nur eine physische Datei vorhanden. Auf der Speichereinheit wird dann Platz gespart. Wenn beispielsweise eine 1-Megabyte-Datei in zwei verschiedenen Verzeichnissen abgelegt wird, beträgt der im Speicher verwendete Speicherplatz ein Megabyte und nicht zwei Megabyte.
Löschen
In demselben Tutorial wurde auch gesagt, was passiert, wenn ein Inode gelöscht wird.
Durch das Löschen von Dateien werden die Größe und die direkten / indirekten Blockeinträge auf Null gesetzt und der physische Speicherplatz auf der Speichereinheit wird als nicht verwendet festgelegt. Um die Datei wiederherzustellen, werden die Metadaten aus dem Journal wiederhergestellt, wenn sie verwendet werden (siehe Artikel im Journal ). Sobald die Metadaten wiederhergestellt sind, kann erneut auf die Datei zugegriffen werden, es sei denn, die physischen Daten wurden auf der Speichereinheit überschrieben.
Ausmaße
Vielleicht möchten Sie auch die Ausmaße und deren Funktionsweise auffrischen. Wieder von der linux.org-Website, ein weiteres gutes Tutorial mit dem Titel: Extents hilft Ihnen dabei, die Grundlagen zu erlernen .
Mit dem Befehl können Sie filefrag
ermitteln, wie viele Speicherbereiche eine bestimmte Datei / ein bestimmtes Verzeichnis verwendet.
Beispiele
$ filefrag dir1
dir1: 1 extent found
$ filefrag ~/VirtualBox\ VMs/CentOS6.3/CentOS6.3.vdi
/home/saml/VirtualBox VMs/CentOS6.3/CentOS6.3.vdi: 5 extents found
Sie können eine detailliertere Ausgabe erhalten, indem Sie den -v
Schalter verwenden:
$ filefrag -v dir1
Filesystem type is: ef53
File size of dir1 is 4096 (1 block of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 38282243.. 38282243: 1: eof
dir1: 1 extent found
HINWEIS: Beachten Sie, dass ein Verzeichnis immer mindestens 4 KByte belegt.
Geben Sie einer Datei eine gewisse Größe
Wir können eine unserer Beispieldateien nehmen und 1 MB Daten wie folgt darauf schreiben:
$ dd if=/dev/zero of=file1 bs=1k count=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00628147 s, 167 MB/s
$ ll | grep file1
-rw-rw-r--. 1 saml saml 1048576 Dec 9 20:03 file1
Wenn wir diese Datei analysieren mit filefrag
:
$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 255: 35033088.. 35033343: 256: eof
file1: 1 extent found
Schnelles Löschen und Neuerstellen einer Datei
Ein interessantes Experiment, das Sie durchführen können, besteht darin, eine Datei wie file1
oben zu erstellen , sie dann zu löschen und anschließend neu zu erstellen. Beobachten Sie, was passiert. Unmittelbar nach dem Löschen der Datei führe ich den dd ...
Befehl erneut aus und file1
zeige den filefrag
Befehl folgendermaßen an:
$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 255: 0.. 255: 256: unknown,delalloc,eof
file1: 1 extent found
Nach einiger Zeit (Sekunden bis Minuten vergehen):
$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 255: 38340864.. 38341119: 256: eof
file1: 1 extent found
Die Datei wird schließlich angezeigt. Ich bin mir nicht ganz sicher, was hier vor sich geht, aber es sieht so aus, als würde es einige Zeit dauern, bis sich der Dateistatus zwischen dem Journal und der Festplatte eingestellt hat. Wenn Sie stat
Befehle ausführen, wird die Datei mit einem Inode angezeigt, sodass sie vorhanden ist. Die verwendeten Daten wurden filefrag
jedoch nicht aufgelöst, sodass wir uns in einem Zustand der Schwebe befinden.