Tool to calculate the fragmentation
This commit is contained in:
parent
77c68efc91
commit
4e68d4c222
35
fragmentation
Executable file
35
fragmentation
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
#this script search for frag on a fs
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
#number of files
|
||||||
|
my $files = 0;
|
||||||
|
#number of fragment
|
||||||
|
my $fragments = 0;
|
||||||
|
#number of fragmented files
|
||||||
|
my $fragfiles = 0;
|
||||||
|
|
||||||
|
#search fs for all file
|
||||||
|
open (FILES, "find " . $ARGV[0] . " -xdev -type f -print0 |");
|
||||||
|
|
||||||
|
$/ = "\0";
|
||||||
|
|
||||||
|
while (defined (my $file = <FILES>)) {
|
||||||
|
open (FRAG, "-|", "filefrag", $file);
|
||||||
|
my $res = <FRAG>;
|
||||||
|
if ($res =~ m/.*:\s+(\d+) extents? found/) {
|
||||||
|
my $fragment = $1;
|
||||||
|
$fragments += $fragment;
|
||||||
|
if ($fragment > 1) {
|
||||||
|
$fragfiles++;
|
||||||
|
}
|
||||||
|
$files++;
|
||||||
|
} else {
|
||||||
|
print ("$res : not understand for $file.\n");
|
||||||
|
}
|
||||||
|
close (FRAG);
|
||||||
|
}
|
||||||
|
close (FILES);
|
||||||
|
|
||||||
|
print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n");
|
Loading…
Reference in New Issue
Block a user