3

ねえ、

losetupLinux でブロック デバイスをエミュレートするためにファイルを使用するのは比較的簡単です。

コンテンツを取得している複数のファイルに基づいて独自のブロックデバイスをプログラムしたい場合に、何を探すべきかについてのヒントを教えてください。ご理解いただくために、file1 からバイト 1 ~ 500 および 1.000 ~ 3.000 を取得し、file2 からバイト 501 ~ 999 およびバイト 3.001 ~ 5.000 を取得して、それらを組み合わせたブロックデバイスとして提供するとしましょう。私の好みのプログラミング言語は Python で、できるだけユーザー空間でプログラムを書きたいと思っています。

Windows の場合、そのような実装を見つけました。これは FileDisk および HttpDisk と呼ばれ、次の場所にあります。

よろしくお願いします、ライナー

4

2 に答える 2

4

何もプログラムする必要はありません。Linuxのマルチデバイス(別名md)サブシステムを使用して、多数の小さなデバイスで構成されるブロックデバイスを自分で構築できます。

これを機能させるには、小さいデバイスからRAIDデバイスmdadmを組み立てるために使用します。LINEAR

更新
これが私がしたことです:

$ cd /images
$ dd if=/dev/zero bs=1M count=100 of=a.img
$ dd if=/dev/zero bs=1M count=50 of=b.img
$ dd if=/dev/zero bs=1M count=150 of=c.img
$ losetup -f
/dev/loop0
$ for i in a b c; do losetup -f $i.img; done
$ mdadm --build /dev/md0 -l linear -n 3 /dev/loop[012]
mdadm: array /dev/md0 built and started.
$ cat /proc/mdstat
Personalities : [linear] 
md0 : active linear loop2[2] loop1[1] loop0[0]
      307200 blocks super non-persistent 64k rounding

$自動構文強調表示を混同しないようにプロンプ​​トとして使用したことに注意してください;)

それと同じくらい簡単です。

乾杯。

PS:これは本当にスーパーユーザーの資格がありますね。

于 2010-12-23T15:15:59.027 に答える
2

シンプルなAPIを使用してユーザースペースに完全にとどまりたい場合は、Pythonで比較的簡単に実行できるFUSEを強くお勧めします。

于 2010-12-23T15:25:30.170 に答える