Answers:
在基于Linux的操作系统上,可以使用网络块设备或设备映射器设备来完成。您获得的文件是阻止设备。
与nbd
:
ln -s /path/to/first-file file.0
...
ln -s /path/to/last-file file.19
nbd-server -C /dev/null -m 127.0.0.1:12345 file
sudo nbd-client localhost 12345 /dev/nbd0
(串联是/dev/nbd0
)。
使用设备映射器(文件大小必须是512的倍数):
sudo losetup /dev/loop0 file1
sudo losetup /dev/loop1 file2
s0=$(sudo blockdev --getsize /dev/loop0)
s1=$(sudo blockdev --getsize /dev/loop1)
printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" |
sudo dmsetup create mybundle
(串联是/dev/mapper/mybundle
)。
今天写了一个保险丝驱动程序,如果有人对保险丝解决方案感兴趣(设备映射器以及上面的nbd-solution将创建不是常规文件的块设备-如果您想直接将结果输出用于视频编辑,则该文件将损坏)不准备直接从块设备读取的软件或其他工具)
您基本上在问题的第一句话中回答了:是的,可以做到。但是,您必须编写自定义文件系统驱动程序。如果应该将其作为文件系统对象,则必须在某种程度上由内核处理(包括FUSE)。司机将不得不为标准的文件系统的系统调用API提供后端(stat()
,open()
等等,包括寻求)。您不能完全在用户空间中做到这一点(至少不是使用单片内核-但即使是微内核,您仍需要提供文件系统驱动程序,尽管它是作为常规用户空间进程运行的)。