Determining file fragmentation on EXT3 file systems

EXT3, along with most other file systems, can incur file level fragmentation over time. To see how fragmented a file on an EXT3 file system is, the filefrag utility can be run with the “-v” (verbose) option and the name of a file to check for fragmentation:

$ filefrag -v ick

Checking ick
Filesystem type is: ef53
Filesystem cylinder groups is approximately 3832
Blocksize of file ick is 4096
File size of ick is 115910586 (28299 blocks)
Discontinuity: Block 858 is at 788667 (was 787807)
Discontinuity: Block 2716 is at 790536 (was 790527)
Discontinuity: Block 4754 is at 792592 (was 792575)
Discontinuity: Block 6784 is at 794632 (was 794623)
Discontinuity: Block 23144 is at 820195 (was 811007)
Discontinuity: Block 23149 is at 821452 (was 820199)
ick: 7 extents found, perfection would be 1 extent

The easiest way I have found to reduce file fragmentation is to copy a fragmented file to a new location in the file system hierarchy (i.e., a new directory), and use that file instead of the original. I really wish there was a tool similar to VxFS’s fsadm utility to defragment files w/o having to copy them (this is impractical for file systems that store lots of data).

3 Comments

Lakshmipathi.G  on May 13th, 2008

Looks like cool tool.
Thanks.
:)

Andy pagin  on December 4th, 2008

A great tool.
Question – Can a ‘Discontinuity: Block’ be considered the same as a fragment as reported by the Disk Defragmenter on a Windows server?

Paul Evans  on December 17th, 2008

You article is a very good starting point for someone who wants to learn about this topic.

The availability of ext4 and online disk fragmentation tools should alleviate this problem on open source UNIX implementations. Read my survey at

http://sharevm.wordpress.com/2008/12/16/435/

Leave a Comment