Per gestire le partizioni XFS in Linux è necessario il pacchetto xfsprogs, mentre il pacchetto opzionale xfsdump contiene alcune preziose utility per controllare la frammentazione del filesystem e dei file.
Per verificare lo stato di frammentazione di un filesystem XFS lanciare il comando xfs_db e verificare il valore fragmentation factor:
# xfs_db -c frag -r mount_point
actual 288787, ideal 286616, fragmentation factor 0,75%
Nel mio caso il valore è molto basso, non è quindi necessario riorganizzare il filesystem.
E’ possibile controllare la frammentazione anche solo di singoli file, tramite il comando xfs_db:
# xfs_bmap -v nome_file_frammentato nome_file_frammentato: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..524159]: 499404728..499928887 1 (134240184..134764343) 524160 1: [524160..2097023]: 504064368..505637231 1 (138899824..140472687) 1572864 2: [2097024..27320671]: 542998144..568221791 1 (177833600..203057247) 25223648
In questo caso nome_file_frammentato ha 3 frammenti (extents).
Nel caso in cui invece il fragmentation factor sia consistente, io considero consistenti valori >= 20%, per deframmentare un filesystem XFS lanciare il comando:
# xfs_fsr -v -t 600 mount_point
oppure per deframmentare un singolo file:
# xfs_fsr -v nome_file_frammentato