Como colocar um arquivo grande em dois discos sem dividir?

3

Eu tenho um arquivo de 100gb de tamanho e um servidor com dois discos de 72gb.

O servidor roda o Ubuntu Linux, com o ext4 nos discos e sem o LVM.

Como posso colocar o arquivo de 100gb no servidor com discos 72 + 72gb?

Eu não posso mudar o sistema de arquivos e não posso dividir o arquivo; o arquivo deve ser legível.

    
por Rainbow- 14.03.2013 / 21:24

1 resposta

4

Você pode criar dois arquivos ~ 50 GB, um por disco. Em seguida, use losetup para mapeá-los para dispositivos de loop. Agora você pode combinar esses dois dispositivos de loop, por exemplo, com mdraid raid0. Agora você pode criar um sistema de arquivos nessa matriz e, finalmente, colocar seu arquivo lá.

Isso é um pouco confuso, mas, bem, a maneira correta de fazer isso seria usar o LVM e / ou o mdraid em seus dois discos se você quiser tratá-los como um.

Exemplo, com imagens muito menores (e obviamente você precisará usar caminhos sane aqui, em vez de /tmp como eu fiz. E provavelmente um nome de matriz melhor que "teste"):

root@Zia:/tmp# dd if=/dev/zero of=/tmp/img1 bs=1024k count=1024
⋮
root@Zia:/tmp# dd if=/dev/zero of=/tmp/img2 bs=1024k count=1024
⋮
root@Zia:/tmp# losetup --show -f /tmp/img1
/dev/loop0
root@Zia:/tmp# losetup -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm -C /dev/md/test -l 0 -n 2 /dev/loop0 /dev/loop1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/test started.
root@Zia:/tmp# mkfs.ext4 -Tlargefile4 /dev/md/test 
⋮
root@Zia:/tmp# mount /dev/md/test /mnt/tmp
root@Zia:/tmp# df -h /mnt/tmp/
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126      2.0G  3.0M  1.9G   1% /mnt/tmp

E, para colocá-lo novamente na inicialização (você vai querer fazer o script disso, é claro):

root@Zia:/tmp# losetup --show -f /tmp/img1 
/dev/loop0
root@Zia:/tmp# losetup --show -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm --assemble /dev/loop0 /dev/loop1
mdadm: device /dev/loop0 exists but is not an md array.
root@Zia:/tmp# mdadm --assemble /dev/md/test /dev/loop0 /dev/loop1
mdadm: /dev/md/test has been started with 2 drives.
root@Zia:/tmp# mount /dev/md/test /mnt/tmp

Derrubá-lo antes que a reinicialização / desligamento provavelmente funcione, mas você umount , depois mdadm --stop /dev/md/test e losetup -d em ambos os dispositivos de loop.

    
por 14.03.2013 / 22:26