C'est une question obscure, je sais. J'essaie de faire des tests de performances de certains disques sur une boîte Linux. J'obtiens des résultats incohérents, en exécutant le même test sur le même disque. Je sais que les disques ont des performances différentes selon la partie du disque à laquelle on accède. En particulier, les lectures et écritures à l'extérieur du disque ont un débit beaucoup plus élevé que les lectures et écritures à l'intérieur du disque, en raison d'une densité de données presque constante et d'une vitesse de rotation constante.
Je voudrais voir si mes incohérences peuvent être attribuées à cette variance de débit induite par la géométrie. Est-il possible, à l'aide des outils existants, de savoir où sur le disque un fichier a été placé?
Sinon, je suppose que je peux écrire quelque chose pour rechercher, lire et écrire directement dans le fichier de périphérique lui-même, en contournant (et en détruisant) le système de fichiers, mais j'espère éviter cela. J'utilise actuellement ext4 sur un noyau 3.0 (Arch Linux, si cela est important), mais je suis également intéressé par les techniques d'autres systèmes de fichiers.
la source
Réponses:
Vous pouvez utiliser
debugfs
pour cela:Changez le disque dur / le lecteur de partition en conséquence et assurez-vous que le lecteur est démonté. Vous obtiendrez une liste avec tous les blocs utilisés:
la source
Vous pouvez utiliser l' ioctl FIBMAP , comme illustré ici , ou utiliser hdparm :
la source
HDIO_GETGEO failed: Inappropriate ioctl for device
Ce fil peut vous donner un aperçu de l'algorithme de placement de fichiers ext4.
debugfs
a unebmap
fonction, qui semble donner les données que vous voulez. Vous devriez pouvoir lui donner des blocs consécutifs d'un fichier et obtenir les numéros de bloc physiques.la source
La question est assez ancienne, mais il y a une autre réponse qui pourrait être utile pour ceux qui trouvent cela sur Google:
filefrag
(dans Debian c'est dans le paquete2fsprogs
).Il a l'avantage de fonctionner également pour d'autres systèmes de fichiers (je l'ai utilisé pour UDF), qui ne semblent pas être pris en charge par d'autres outils décrits ici.
Le décalage présenté dans la sortie est censé être un multiple de la taille de bloc écrite sur la deuxième ligne (4096 ici). Attention, les décalages logiques peuvent ne pas être contigus, car un fichier peut avoir des trous (lorsqu'il est pris en charge par le système de fichiers).
la source