Answers:
您可以通过组合循环设备和设备映射器来做到这一点,这要归功于“一切都是文件”。但有一个限制:文件大小无法更改(因为无法通过写入来增加块设备)。因此,如果要附加数据,则必须创建更大的块设备并覆盖附加的虚拟数据。
# for testing, Create 4 files
echo foo | dd of=block0 cbs=512 conv=block
echo bar | dd of=block1 cbs=512 conv=block
echo bat | dd of=block2 cbs=512 conv=block
echo baz | dd of=block3 cbs=512 conv=block
# Create a loop device for each of the 4 files
losetup /dev/loop0 block0
losetup /dev/loop1 block1
losetup /dev/loop2 block2
losetup /dev/loop3 block3
# Create a device map named "test" using those loop devices
(
echo "0 1 linear /dev/loop0 0"
echo "1 1 linear /dev/loop1 0"
echo "2 1 linear /dev/loop2 0"
echo "3 1 linear /dev/loop3 0"
) | dmsetup create test
$EDITOR /dev/mapper/test # use overwrite mode only
对于扩展文件,您可以创建一个大的稀疏文件并将其用作附加设备。