Esta es una pregunta oscura, lo sé. Estoy tratando de hacer algunas pruebas de rendimiento de algunos discos en una caja de Linux. Estoy obteniendo algunos resultados inconsistentes, ejecutando la misma prueba en el mismo disco. Sé que los discos tienen un rendimiento diferente según la parte del disco a la que se accede. En particular, las lecturas y escrituras en el exterior del disco tienen un rendimiento mucho mayor que las lecturas y escrituras en la parte interna del disco, debido a la densidad de datos casi constante y la velocidad de rotación constante.
Me gustaría ver si mis inconsistencias se pueden atribuir a esta variación inducida por la geometría en el rendimiento. ¿Es posible, utilizando las herramientas existentes, averiguar en qué parte del disco se ha colocado un archivo?
Si no, supongo que puedo escribir algo para buscar, leer y escribir directamente en el archivo del dispositivo, evitando (y destruyendo) el sistema de archivos, pero espero evitar eso. Actualmente estoy usando ext4 en un kernel 3.0 (Arch Linux, si es importante), pero también estoy interesado en técnicas para otros sistemas de archivos.
fuente
Respuestas:
Podrías usar
debugfs
para esto:Cambie la unidad de disco duro / partición en consecuencia y asegúrese de que la unidad esté desmontada. Obtendrá una lista con todos los bloques utilizados:
fuente
Puede usar el FIBMAP ioctl , como se ejemplifica aquí , o usar hdparm :
fuente
HDIO_GETGEO failed: Inappropriate ioctl for device
Este hilo puede darle una idea del algoritmo de colocación de archivos ext4.
debugfs
tiene unabmap
función, que parece dar los datos que desea. Debería poder darle bloques consecutivos de un archivo y obtener los números de bloque físico.fuente
La pregunta es bastante antigua, pero hay otra respuesta que podría ser útil para quienes encuentren esto en Google:
filefrag
(en Debian está dentro del paquetee2fsprogs
).Tiene la ventaja de que funciona también para otros sistemas de archivos (lo usé para UDF), que no parecen ser compatibles con otras herramientas descritas aquí.
El desplazamiento presentado en la salida debe estar en múltiplos del tamaño de bloque escrito en la segunda línea (4096 aquí). Tenga en cuenta que las compensaciones lógicas pueden no ser contiguas, ya que un archivo puede tener agujeros (cuando el sistema de archivos lo admite).
fuente