Wie sieht man die Fragmentierung einer bestimmten Datei?

7

Gibt es ein Tool, das mir für eine bestimmte Datei auf der Festplatte zeigt, wie fragmentiert es ist? (Wie viele Suchvorgänge muss die physische Festplatte ausführen, wenn ich diese Datei linear lese)

    
Ghostrider 13.05.2010, 23:10
quelle

5 Antworten

9

Sie können DeviceIoControl mit FSCTL_GET_VOLUME_BITMAP , FSCTL_GET_RETRIEVAL_POINTERS und FSCTL_MOVE_FILE , siehe Dateien defragmentieren .

Sie können auch verschiedene Codebeispiele finden, wenn Sie nach FSCTL_MOVE_FILE suchen.
Hier ist eine in C und eine weitere in .NET .

    
Oleg 13.05.2010, 23:32
quelle
14

Das Sysinternals-Tool Contig mit dem Parameter -a kann dies für eine Datei oder alle tun Dateien in einem Ordner und seinen Unterordnern.

    
Albin Sunnanbo 25.08.2010 18:48
quelle
2

fsutil file queryallocranges offset=<o> length=<l> <file> zeigt Ihnen die Extents der Datei, Sie benötigen Administratorrechte.

    
Dominik Weber 25.08.2010 18:25
quelle
2

Und natürlich ist "Fragmentierung" suspekt: ​​

  1. Die Datei befindet sich möglicherweise in Teilen im selben Zylinder. Kein Suchaufwand, nur Rotationslatenz. Oder nicht, da die Stücke eine optimale Reihenfolge sein können (die Chancen sind nahe Null für diese).
  2. Die Datei kann "zusammenhängend" sein, aber über mehrere Zylinder hinweg. Selbst sequentielles Lesen führt zu Suchvorgängen.
  3. Die Datei befindet sich möglicherweise in einem Stripe-Set und Sie haben keine Ahnung, wo die Grenzen liegen. Sie können zu einem anderen Controller, einer anderen Spindel oder einer anderen Partition auf demselben Laufwerk springen.

Achten Sie darauf, welche Schlussfolgerungen Sie ziehen.

    
MJZ 17.09.2010 21:33
quelle
2

filefrag ist das Tool, das Sie suchen, wenn Sie Linux verwenden. Verwenden Sie den Parameter -v mit dem Dateinamen, um eine detaillierte Liste der Fragmentierung zu erhalten. Ссылка

    
Sami Lehtinen 14.02.2012 17:07
quelle