3

嘿嘿,

losetup在 Linux中使用文件来模拟块设备相对容易:

如果我想根据我从中获取内容的几个文件对自己的块设备进行编程,谁能给我一个提示?为了您的理解,我想假设从 file1 中获取字节 1-500 和 1.000-3.000,从 file2 中获取字节 501-999 和字节 3.001 到 5.000,以将它们作为组合块设备提供。我最喜欢的编程语言是 Python,我想尽可能在​​用户空间中编写我的程序。

对于 Windows,我找到了这样的实现。它被称为 FileDisk 和 HttpDisk,可以在这里找到:

在此先感谢和问候,雷纳

4

2 回答 2

4

你不需要编程任何东西。您可以使用 Linux 的多设备 (aka md) 子系统为自己构建一个由许多较小设备组成的块设备。

为此,您可以使用较小的设备mdadm组装一个LINEARraid 设备。

更新
所以这就是我所做的:

$ 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 回答