2011-08-06 25 views
9

He desarrollado un sistema de archivos basado en FUSE como parte de un proyecto de investigación y ahora tengo que estudiar las solicitudes de lectura/escritura reales que recibe el disco duro. En un intento de hacer esto, estoy buscando la opción de crear una unidad de disco duro virtual en Linux, que interceptará las solicitudes generadas por el sistema de archivos y las registrará.Emular un disco duro en Linux

¿Hay algún recurso disponible en Internet que me pueda ayudar a escribir el emulador y/o desarrollar los conjuntos de habilidades necesarios para escribir uno? Actualmente estoy leyendo el libro Controladores de dispositivos de Linux 3 para tener una idea de cómo maneja Linux los dispositivos de bloques.

Cualquier ayuda es apreciada.

Gracias

Respuesta

2

Bueno, hay una manera de montar un archivo de imagen como una partición:

mount -t <fs type> -o loop file.img /mnt 

sustituto con el tipo de sistema de archivos, archivo.img debería haber una imagen de la partición deseada.

Otra forma más, puede instalar virtualbox, instalar Linux en la máquina virtual, agregar un nuevo disco duro virtual y, desde dentro de la máquina virtual, formatear el disco duro virtual con el sistema de archivos deseado y usarlo. Una ventaja de este enfoque es que proporciona una caja de arena segura para que no dañes accidentalmente tu sistema existente mientras experimentas.

+1

Gracias por la respuesta. Pero esa solución realmente no me permite adentrarme en los detalles reales de los eventos. Quiero ser capaz de rastrear las solicitudes que se envían desde el controlador del dispositivo. La forma en que veo que esto sucede es escribir un controlador de dispositivo de bloque, que luego enruta las solicitudes al emulador. Sin embargo, el emulador se ejecutará en el espacio de usuario en lugar del controlador de dispositivo de bloque, que se ejecutará en el espacio del kernel. También necesito un mecanismo para transferir solicitudes del controlador de dispositivo de bloque al emulador. Y esa es la razón por la que estoy buscando literatura para escribir un emulador. –

3

Eche un vistazo al controlador de depuración SCSI. Citando el controlador de adaptador de site

El scsi_debug simula un número variable de discos SCSI, cada intercambio de una cantidad común de RAM asignada por el conductor para actuar como almacenamiento (volátil).

Si fuera yo, habilitaría el registro de depuración ya presente en ese controlador y luego lo mejoraría según sus necesidades.

+0

Leí la documentación en el enlace que mencionaste en tu publicación. No puedo usar eso porque necesito persistencia y el módulo scsi_debug usa una solución en memoria. Además, estoy tratando de evitar jugar con los autobuses. Estoy buscando pasar el control del controlador de dispositivo de bloque (que voy a escribir) al emulador. Comprobé CDemu, que tiene algo de la misma arquitectura (aunque tiene un módulo Adaptador de bus de host virtual) donde un componente de espacio de kernel pasa el control a un daemon que se ejecuta en el espacio de usuario. –

Cuestiones relacionadas