Sim, é possível com dmsetup
.
Prepare arquivos vazios
fallocate -l $((800*1024*1024*1024)) /mnt/disk1/file1
fallocate -l $((1200*1024*1024*1024)) /mnt/disk2/file2
fallocate -l $((1100*1024*1024*1024)) /mnt/disk3/file3
fallocate -l $((200*1024*1024*1024)) /mnt/disk4/file4
Este exemplo fornece 800 GiB
, 1200 GiB
, 1100 GiB
e 200 GiB
em quatro arquivos - 3300 GiB
no total.
Preparar dispositivos de loop
sudo losetup -f /mnt/disk1/file1
sudo losetup -f /mnt/disk2/file2
sudo losetup -f /mnt/disk3/file3
sudo losetup -f /mnt/disk4/file4
Verifique com sudo losetup -a
quais dispositivos de loop estão associados aos seus arquivos. Meu exemplo assume que eles são /dev/loop0
, /dev/loop1
, /dev/loop2
e /dev/loop3
respectivamente.
Criar dispositivo lógico
EDIT: veja a resposta do Xen2050. Dá uma maneira mais simples a partir deste ponto.
Minha maneira original e mais complexa é a seguinte:
Primeiro, você precisa saber o tamanho dos seus arquivos em 512 B
unit. No meu exemplo, esses números são 800*1024*1024*2
, 1200*1024*1024*2
, 1100*1024*1024*2
e 200*1024*1024*2
; Por exemplo, 1677721600
, 2516582400
, 2306867200
e 419430400
.
Você também precisará da soma do primeiro ...
zero números (trivial): 0
,
um número (trivial): 1677721600
,
dois números: 1677721600 + 2516582400 = 4194304000
,
três números: 1677721600 + 2516582400 + 2306867200 = 6501171200
.
Espero ter feito a minha matemática corretamente. :)
Invocar:
sudo dmsetup create my_device
Agora, forneça uma tabela apropriada (mapa):
0 1677721600 linear /dev/loop0 0
1677721600 2516582400 linear /dev/loop1 0
4194304000 2306867200 linear /dev/loop2 0
6501171200 419430400 linear /dev/loop3 0
(Cada linha começa com uma soma computada seguida de tamanho computado.)
Pressione Ctrl + D para finalizar.
Criar sistema de arquivos
sudo mkfs.ext4 /dev/mapper/my_device
Montagem
sudo mkdir /mnt/my_device
sudo mount -o rw /dev/mapper/my_device /mnt/my_device
Observe que há menos de 3300 GiB
de espaço livre em my_device
devido às necessidades do sistema de arquivos. Ajuste os tamanhos dos seus arquivos antecipadamente, dependendo do espaço livre disponível nas suas partições e do tamanho da imagem.
Quando seu trabalho terminar:
Reverter
sudo umount /mnt/my_device
sudo dmsetup remove my_device
sudo losetup -d /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
rm /mnt/disk1/file1 /mnt/disk2/file2 /mnt/disk3/file3 /mnt/disk4/file4