Existe uma maneira de pegar um arquivo de img de disco dividido em partes e montá-lo como um dispositivo de loop único?
Existe uma maneira de pegar um arquivo de img de disco dividido em partes e montá-lo como um dispositivo de loop único?
Respostas:
Eu não acho que você pode fazê-lo no lugar, mas se você tiver espaço suficiente, isso deve funcionar:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
Você não pode simplesmente criar uma matriz RAID a partir dos arquivos originais, porque os discos RAID têm um cabeçalho específico em que o número de discos, o nível RAID, etc, é armazenado. Se você fizer isso, parte dos arquivos originais será substituída.
Você pode usar o mdadm --build
para criar uma matriz sem metadados, mas deve fazer um backup primeiro. Ou se a montagem somente leitura for suficiente:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
Por que você quer fazer isso? Se o seu sistema de arquivos não conseguir lidar com arquivos de mais de 4 GB, você deve simplesmente mudar para um sã.
truncate
vez de dd
ser muito mais rápido (ele não realiza gravação real no FS, mas apenas aloca inodes e marca o arquivo como contendo apenas um furo).
Para montar uma imagem de disco dividido (ou imagem de partição), você deve usar affuse
os afftools atualmente mantidos aqui: https://github.com/sshock/AFFLIBv3
Portanto, se você tiver um arquivo, divida-o em vários subarquivos test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
então você pode se juntar a eles virtualmente com affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(isso combina todos os arquivos, começando com o arquivo 000 e 001, 002,…)
E depois monte a imagem
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
O uso é descrito aqui e alguns exemplos aqui . Uma página de manual também está disponível após a compilação e instalação, ou aqui .
PS: Para mim, affuse
só funcionava se os arquivos divididos tivessem um tamanho múltiplo de 512 bytes.
Você pode escrever sua própria extensão de dispositivo de armazenamento em bloco (pense em extensões semelhantes a fusíveis) e realizar buscas de maneira independente do endereço.
Aqui você pode encontrar exemplos de como usar o fusível https://github.com/libfuse/python-fuse/blob/master/example/hello.py
A coisa mais próxima que eu sei até agora de uma solução é criar uma VMware VMware. Você inicia um live CD do Linux como Rescatux ou Knoppix, cria uma pasta compartilhada SMB no computador host, monta esse compartilhamento SMB na sua VM e depoisdd
a imagem no HD virtual. O VMware, por padrão, salva suas imagens de disco como arquivos divididos, portanto é a coisa mais próxima de ler diretamente uma imagem de disco dividida em vários arquivos.
Posteriormente, se você quiser acessar os arquivos do seu computador host, tente adicionar um segundo HD virtual à imagem e copiar os arquivos lá. Em seguida, você configura uma pasta compartilhada SMB na VM e se conecta a ela a partir do seu host. Dessa forma, você pode, por exemplo, violar o limite de 4 GB de arquivo FAT32 no caso de estar usando um iPod Classic (que apenas graks fat32) ou o cartão SD do seu smartphone (geralmente é necessário instalar uma ROM personalizada para Para usar o Ext3 ou NTFS no armazenamento externo, é necessário um telefone de um fabricante popular como Samsung ou Motorola; portanto, se você tiver um smartphone chinês, ficará perplexo).
É certo que não é uma solução eficiente, no entanto, mas como tenho sido limitado por não poder usar nenhum outro FS além do fat32 no meu iPod Classic ou nos meus smartphones Samsung com ROM de estoque, vasculhei praticamente toda a Internet na Internet. passado e ainda não consigo encontrar uma solução eficiente para isso. Eu posso até ter que escrever sozinho.
PS: Esqueci de mencionar que, se você estiver no Windows, essa pode ser a única maneira de fazer isso.
No BSD, você pode usar a opção de união para montar. No Linux, você pode tentar o unionFS.