仮想ブロックデバイス

仮想ブロックデバイス

何のためにインターネットを検索する必要があるのか​​、FUSEがこれを行うのかわかりません(そうではありません)。あらゆる種類のアクセス(たとえば、読み取りと書き込み)が自分のアプリケーションに直接移動する仮想ブロックデバイスを作成したいと思います。

以下は、ブロックデバイスとして使用するファイルを作成できることを知っています。

dd if=/dev/zero of=~/test count=100k

次に、次のようにループバックを作成します。

losetup /dev/loop0 ~/test`

しかし、ファイルの代わりに私のアプリケーションに直接アクセスしたいと思います。この質問がかなり明確であることを願っています。

答え1

NBDが利用可能です。使用NBDキット仮想ブロックデバイスに書き込むこともできます。シェルスクリプトまたは他のスクリプト言語(最高のパフォーマンスが必要な場合はCを使用してください)。 FOSDEM 2019でこのテーマで講演したことがあります。私はシェルスクリプトを使用してLinuxカーネルブロックデバイスを作成するライブデモを進めました。

答え2

コメントで述べたように、可能な方法の1つはNBDです。バスこれを始めるのに役立ちます。実際にはUnixソケットを使用しているので、同じようなパフォーマンスが必要です。

答え3

あなたはそれを探していませんかmmap()

mmapただし、これをサポートする実際のファイルがない場合は、何をすべきかわかりませんが、フラグ付きのランダムに大きくゼロで埋められたファイル(参照falocate、参照truncate)を使用して書き込み操作のみを実行できます。あなたのアプリケーションは表示され、ディスクに保存されません。mmap()MAP_PRIVATE

関連情報