• [^] # Re: Comment ?

    Posté par . En réponse au journal Fait n°1 : Linux n'est pas sujet à la fragmentation.... Évalué à 4.

    Juste pour préciser parceque je me suis posé la question, ce que rapporte filefrag c'est le nombre de fois où il faut aller chercher un block à un nouvel emplacement (donc pas juste après le précédent). Sur un fichier non fragmenté, comme il l'indique dans ce qu'il affiche, ça ferait "1".

    Ce nombre (disons N) est donc à comparer avec le nombre des blocks occupés par le fichier (disons M). Le ratio de fragmentation du fichier est donc à la louche un truc du genre (N-1)/(M-1).

    D'où le petit script suivant pour faire plus joli :

    % cat fragmentation.sh
    #!/bin/bash
    filesize=$(ls -s --block-size=4KB "${1}" | cut -d\ -f1)
    if [[ ${filesize} -gt 1 ]] ; then
    extents=$(/sbin/filefrag "${1}" | sed -n 's/.*: \([0-9]\+\) extents.*/1円/p')
    fragmentation=$(bc <<<"scale=1;100*(${extents}-1)/${filesize}" )
    else
    # pas de division par zero...
    extents=${filesize}
    fragmentation=0
    fi
    echo "${1}: ${filesize} blocks, ${extents} extents, ${fragmentation}% fragmentation"

    % sudo ./fragmentation.sh linux-2.6.14.tar.bz2
    linux-2.6.14.tar.bz2: 9805 blocks, 492 extents, 5.0% fragmentation


    Enfin, en espérant que j'ai pas tout compris de travers et que mon raisonnement n'est pas foireux :)