2011-08-06 6 views
9

私は研究プロジェクトの一環としてFUSEベースのファイルシステムを開発し、ハードドライブが受け取る実際の読み取り/書き込み要求を検討する必要があります。これを試みるために、私は、Linuxで仮想ハードドライブを作成するオプションを検討しています。これは、ファイルシステムによって生成された要求をインターセプトしてログに記録します。Linuxでハードドライブをエミュレートする

エミュレータの作成やスキルセットの作成に役立つリソースがインターネット上にありますか?私は現在、Linux Device Drivers 3の本を読んで、Linuxがどのようにブロックデバイスを管理しているかを理解しています。

何か助けていただければ幸いです。

おかげ

答えて

2

まあ、パーティションとしてイメージファイルをマウントする方法があります:あなたのファイルシステムタイプと

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

代替、file.imgは、目的のパーティションのイメージでなければなりません。

さらに別の方法として、仮想マシンをインストールし、仮想マシンにlinuxをインストールし、新しい仮想ハードドライブを追加したり、仮想マシン内から目的のファイルシステムで仮想ハードドライブをフォーマットして使用したりできます。このアプローチの利点は、安全なサンドボックスを提供し、実験中に誤って既存のシステムに損傷を与えないことです。

+1

あなたの答えをありがとう。しかし、その解決策は実際に私が実際の事態に陥ることを許しません。 私は、デバイスドライバから送信された要求を追跡できるようにします。これが起こるのを見る方法は、ブロックデバイスドライバを作成してから、その要求をエミュレータにルーティングします。 しかし、エミュレータは、カーネル空間で動作するブロックデバイスドライバとは対照的に、ユーザ空間で動作します。ブロックデバイスドライバからエミュレータに要求を転送するメカニズムも必要です。 それが私がエミュレータを書くための文献を探している理由です。 –

3

SCSIデバッグドライバを見てください。 site

から引用scsi_debugアダプタドライバは、各々が(揮発性)記憶装置として動作するように運転者によって割り当てられたRAMの一般的な量を共有し、SCSIディスクの可変数をシミュレートします。

私の場合は、そのドライバに既に存在するデバッグログを有効にしてから、ニーズに合わせて拡張します。

+0

あなたの記事で述べたリンクの文書を読んでいます。永続性が必要で、scsi_debugモジュールがメモリ内のソリューションを使用するため、私はそれを使用できません。 また、私はバスを乱さないようにしています。私はブロックデバイスドライバ(私は自分自身を書いている)からエミュレータに制御を渡すことを考えています。 カーネルスペースコンポーネントがコントロールをユーザー空間で動作するデーモンに渡す、同じアーキテクチャー(バーチャルホストバスアダプターモジュールを持っていますが)と多少の違いがあるCDemuをチェックアウトしました。 –

関連する問題