2011-08-06 95 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,它具有相同的體系結構(儘管它有一個虛擬主機總線適配器模塊),內核空間組件將控制權交給在用戶空間中運行的守護進程。 –