Categorygithub.com/jenting/fiemap
repositorypackage
0.0.0-20241222080459-5c12bb6e12e9
Repository: https://github.com/jenting/fiemap.git
Documentation: pkg.go.dev

# README

Fiemap retrieval on sparse file with multiple extents

The fiemap is an efficient way for userspace to get file extent mappings. Instead of block-by-block mapping, fiemap returns a list of extents.

  • Generate sparse file with multiple extents.

    make
    ./generator
    
  • Install fiemap tool.

    sudo apt install gcc make -y
    wget https://github.com/joshimoo/fiemap/archive/refs/tags/v0.2.0.tar.gz
    tar zxvf v0.2.0.tar.gz
    cd fiemap-0.2.0
    make
    sudo make install
    
  • Use ls -lsah to see the sparse file actual used space as well as max space. Example below 1GB allocated, 514MB used.

    514M -rw-r--r-- 1 jenting users 1.0G Mar 17 08:36 /tmp/  ssync-src-fiemap-1gb-file
    
  • Then run fiemap.

    fiemap /tmp/ssync-src-fiemap-1gb-file
    

    If the initial 1024 retrieval takes around 3 minutes you can cancel it via ctrl+c this will take another 3 minutes till the process returns from the kernel. This is a slow EXT4 extent retrieval -> Bad Kernel. If the initial 1024 retrievals takes 0 seconds than you are good and can let it run to completion. -> Good Kernel.

    Example of a full run on a newer 5.8 kernel

    retrieved 1024 extents in 0 seconds
    
    fiemap done retrieved 131072 extents in 39 seconds
    File /tmp/ssync-src-fiemap-1gb-file has 131072 extents: