Redimensionando um disco rígido virtual

4

Eu encontrei um tutorial muito bom sobre como criar discos rígidos virtuais e estou pensando em usá-los para o meu trabalho, a fim de armazenar conjuntos de dados confiáveis e portáveis com resultados de processamento associados.

Basicamente, o tutorial consiste em fazer isso:

dd if=/dev/zero of=MyDrive.vhd bs=1M count=500
mkfs -t ext3 MyDrive.vhd
mount -t auto -o loop MyDrive.vhd /some/user/folder

que cria um disco rígido virtual de 500MB formatado em ext3 e o monta em algum lugar.

Agora, digamos que eu uso esse arquivo e percebo que preciso de mais de 500 MB, existe uma maneira de redimensionar "dinamicamente" o disco virtual? (Dinamicamente, quero dizer, além de criar um novo disco maior e copiar os dados.)

    
por Sheljohn 08.09.2016 / 14:34

2 respostas

11

Existe uma alternativa melhor que dd para estender um arquivo. O comando dd requer vários parâmetros para executar corretamente (para não corromper seus dados). Eu uso truncate em vez disso. Apesar de seu nome, também pode estender o tamanho de um arquivo:

truncate - shrink or extend the size of a file to the specified size

-s, --size=SIZE

set or adjust the file size by SIZE

SIZE is an integer and optional unit (example: 10M is 10*1024*1024). Units > are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).

SIZE may also be prefixed by one of the following modifying characters: '+' extend by, '-' reduce by, '<' at most, '>' at least, '/' round down to multiple of, '%' round up to multiple of.

assim,

truncate -s +1G MyDrive.vhd

expande com segurança seu arquivo em 1 gigabyte. E, sim, ele faz uma expansão esparsa quando suportado pelo sistema de arquivos subjacente, portanto, os blocos reais seriam alocados sob demanda.

Quando um arquivo é expandido, não se esqueça de executar o resize2fs:

resize2fs MyDrive.vhd

Além disso, tudo pode ser feito online (sem umount 'o dispositivo) para sistemas de arquivos que suportam redimensionamento online:

losetup -c loopdev

atualiza informações do kernel em um arquivo de apoio,

e

 resize2fs loopdev

redimensiona o sistema de arquivos montado on-line

    
por 08.09.2016 / 15:03
4

Dobre o tamanho:

umount /some/user/folder
dd if=/dev/zero bs=1M count=500 seek=500 >>MyDrive.vhd
resize2fs MyDrive.vhd
    
por 08.09.2016 / 14:37