2011-08-06 94 views
9

我开发了一个基于FUSE的文件系统作为研究项目的一部分,现在必须研究硬盘接收的实际读/写请求。为了做到这一点,我正在研究在Linux中创建虚拟硬盘驱动器的选项,该选项将拦截由文件系统生成的请求并记录它们。模拟Linux中的硬盘驱动器

在互联网上有没有可以帮助我编写模拟器和/或开发编写所需技能的资源?我正在阅读Linux Device Drivers 3书籍,以了解Linux如何管理块设备。

任何帮助表示赞赏。

感谢

回答

2

嗯,有一种方法可以安装映像文件的分区:

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

替代你的文件系统类型,file.img应该是所需的分区的镜像。还有另外一种方法,你可以安装virtualbox,在虚拟机上安装linux,添加一个新的虚拟硬盘,然后从虚拟机中将虚拟硬盘格式化为所需的文件系统并使用它。这种方法的一个优点是它提供了一个安全的沙箱,以便在试验时不会意外损坏现有系统。

+1

感谢您的回答。但是这个解决方案并不能真正让我去理解这些事件的实际内容。 我希望能够跟踪设备驱动程序发送的请求。我看到发生这种情况的方式是编写一个块设备驱动程序,然后将请求路由到模拟器。 但是,仿真器将在用户空间中运行,而不是在内核空间中运行的块设备驱动程序。我还需要一种将块设备驱动程序的请求传输到仿真器的机制。 这就是我正在寻找文献来编写模拟器的原因。 –

3

看看SCSI调试驱动程序。从site

的scsi_debug适配器驱动程序引用模拟可变数目的SCSI磁盘,每个共享由驱动程序分配的作为(易失性)存储器的RAM中的公共量。

如果是我,我会启用该驱动程序中已存在的调试日志记录,然后对其进行增强以满足您的需求。

+0

我在您的帖子中提到的链接中阅读了文档。我不能使用它,因为我需要持久性,scsi_debug模块使用内存中的解决方案。 此外,我试图避免与巴士混乱。我正在寻求将模块设备驱动程序(我将自己编写)传递给模拟器。 我检出了CDemu,它具有相同的体系结构(尽管它有一个虚拟主机总线适配器模块),内核空间组件将控制权交给在用户空间中运行的守护进程。 –