Para responder à segunda parte da sua pergunta. Como montar um FS armazenado em dois arquivos ( a
e b
) Duas opções que consigo pensar:
Usando dispositivos de mapeamento de dispositivos e de loop:
losetup /dev/loop1 a
losetup /dev/loop2 b
s() { blockdev --getsize "$1"; }
dmsetup create merge << EOF
0 $(s /dev/loop1) linear /dev/loop1 0
$(s /dev/loop1) $(s /dev/loop2) linear /dev/loop2 0
EOF
mount /dev/mapper/merge /mnt
A idéia é fazer um dispositivo mapeador de dispositivo linear que é apenas a concatenação dos dois dispositivos de loop.
Usando o nbd-client + nbd-server
ln -s a part.0
ln -s b part.1
nbd-server 127.1@12345 "$PWD/part" -m
nbd-client 127.1 12345 /dev/nbd0
mount /dev/nbd0 /mnt
(mais fácil, mas menos eficiente)
Aqui, estamos usando o modo "multi-part" do nbd-server que espera que as partes sejam nomeadas como part.0
, part.1
... Infelizmente, ao contrário do qemu-nbd, nbd-server / o cliente não pode trabalhar com soquetes de domínio Unix, o que significa que temos que ter a sobrecarga de TCP e o qemu-nbd
não tem esse modo de várias partes.