Warum laden und parsen Dateisuchprogramme die MFT nicht einfach?

3282
Stephen

Ich habe bei der Suche nach einer Datei anhand des Namens (unter Windows oder Linux) festgestellt, dass dieser Vorgang in der Regel auf die Festplatte beschränkt ist, insbesondere unter Windows. Es scheint, dass das Dienstprogramm (Windows Search oder "find" in Cygwin) die gesamte Verzeichnisstruktur durchsucht und jede Datei einzeln betrachtet.

Ich frage mich, warum nicht die Master File Table (oder gleichwertige, wenn nicht NTFS) in den Speicher geladen und rein in den Speicher geparst werden? Ich denke, das ähnelt den Indizes, die von moderneren Suchanfragen wie Windows Search, Google Desktop Search und Spotlight verwaltet werden, aber auch diese sind indirekt. Ich schätze, Dateisysteme stellen ihre Metadaten normalerweise nicht für externe Programme zur Verfügung?

Ich kann nicht beweisen, dass die Suche nicht bereits auf der MFT basiert, aber es scheint unwahrscheinlich, wie sie ausgeführt wird.

3
Dateinamensuchen selbst sind in der Regel recht schnell. Wenn Sie mit dem Inhalt beginnen, dauert die Suche länger. nicht ganz sicher, was Sie in Bezug auf übergeordnete IO sehen. Frank Thomas vor 10 Jahren 2
Wenn Sie beispielsweise in Cygwin zu / cygdrive / c / navigieren und `find ./ -name Desktop.ini` ausführen, werden schrittweise inkrementelle Ergebnisse über viele Minuten ausgegeben. Die meiste Aktivität ist "I / O Other", von der ich annehme, dass sie Metadaten einschließlich Dateinamen entspricht. Meine Sorge ist, dass es scheinbar rekursiv über den Verzeichnisbaum läuft, so dass jedes "Listenverzeichnis" commnad eine separate Abfrage an die Festplatte über den Computerbus ist. Wäre es nicht theoretisch viel schneller, die MFT zur Verarbeitung in großen Blöcken in den Speicher zu laden, um diese Latenz vom Bus zu beseitigen? Stephen vor 10 Jahren 0
Zumal die MFT normalerweise auf sehr wenige Fragmente verteilt ist (fast immer <10), so dass Sie meist sequenziell lesen können. Stephen vor 10 Jahren 0
Haben Sie in Windows Millionen winziger Dateien? enden Ihre Suchabfragen mit der Anzeige von Miniaturansichten von Symbolen oder einem anderen Element als Dateigröße, Dateiattributen, Datum und Ort? Findet eine Suche nach Inhalten statt? Ich kann Terrabytes mit> 200k-Dateien in ~ 10 Sekunden mit Drittanbieter-Utilities durchsuchen. Wenn ich das System- und Programm-Zeug meide und den Benutzer nur einige Sekunden lang 60K-Dateien mache, insbesondere nachdem er zwischengespeichert wurde. keine Indizierung Die Festplatten werden zunächst nach Directores (Alpha) und nach Dateien (Alpha) defragmentiert. Ich hatte damit begonnen, die Defragmentierung neu zu ordnen, wenn die Dinge langsam waren Psycogeek vor 10 Jahren 0
Ich habe gerade die alte WinXP-Hundesuche auf dem "normalen" Computer überprüft. Es dauert weniger als 2 Minuten, um durch 6T in ~ 250K-Dateien zu jagen. einige davon werden nachbestellt, aber nicht alle. Welches sind die technischen Daten der Maschine, die Art der Festplatte (n) der Laufwerksgeschwindigkeit und wie viele Dateielemente durchsuchen Sie? Gibt es lokales Netz, zugeordnetes Laufwerksmaterial in Ihrer Suche? Psycogeek vor 10 Jahren 0

1 Antwort auf die Frage

4
snowdude

Es gibt Programme, die mit der MFT auf Windows NTFS-Volumes suchen, z. B. Open-Source-Projekte:

http://sourceforge.net/projects/swiftsearch/

http://sourceforge.net/projects/ntfs-search/

Sie sind sehr schnell, aber das Problem ist, dass Sie, sobald Sie direkt zur MFT gehen, Funktionen wie Sicherheits-ACLs und Shell-Erweiterungen umgehen. Daher müssen die meisten dieser Programme mit erhöhten Berechtigungen ausgeführt werden und erzeugen nicht unbedingt dieselben Ergebnisse wie eine API-basierte Suche.

Tools wie [Everything] (http://www.voidtools.com/) und [UltraSearch] (http://www.jam-software.com/ultrasearch/) analysieren auch die MFT (und in einigen Fällen das USN Journal). direkt. Umgehung von ACLs ist jedoch der Hauptgrund, warum Sie nicht mehr davon Gebrauch machen. afrazier vor 10 Jahren 1